In [ ]:
. ./nbs_header.ps1
. ./core.ps1
In [ ]:
{ pwsh ../apps/builder/build.ps1 } | Invoke-Block
── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ # DibParser (Polyglot) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan dard2.1/FSharp.Control.AsyncSeq.dll" #r @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. 0/System.Reactive.dll" #r @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ netstandard2.0/System.Reactive.Linq.dll" #r @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" #r @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP arsec.dll" #r @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP arsecCS.dll" ── pwsh ──────────────────────────────────────────────────────────────────────── ls ~/.nuget/packages/argu ╭─[ 233.11ms - stdout ]────────────────────────────────────────────────────────╮ │ 6.2.4 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── #if !INTERACTIVE open Lib #endif ── fsharp ────────────────────────────────────────────────────────────────────── open Common open FParsec open SpiralFileSystem.Operators ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## escapeCell (test) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let inline escapeCell input = input |> SpiralSm.split "\n" |> Array.map (function | line when line |> SpiralSm.starts_with "\\#!" || line |> SpiralSm.starts_with "\\#r" -> System.Text.RegularExpressions.Regex.Replace (line, "^\\\\#", "#") | line -> line ) |> SpiralSm.concat "\n" ── fsharp ────────────────────────────────────────────────────────────────────── //// test $"a{nl}\\#!magic{nl}b{nl}" |> escapeCell |> _assertEqual ( $"a{nl}#!magic{nl}b{nl}" ) ╭─[ 41.11ms - stdout ]─────────────────────────────────────────────────────────╮ │ "a │ │ #!magic │ │ b │ │ " │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## magicMarker │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let magicMarker : Parser<string, unit> = pstring "#!" ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic" |> run magicMarker |> _assertEqual ( Success ("#!", (), Position ("", 2, 1, 3)) ) ╭─[ 55.61ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success: "#!" │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test "##!magic" |> run magicMarker |> _assertEqual ( Failure ( $"Error in Ln: 1 Col: 1{nl}##!magic{nl}^{nl}Expecting: '#!'{nl}", ParserError ( Position ("", 0, 1, 1), (), ErrorMessageList (ExpectedString "#!") ), () ) ) ╭─[ 23.67ms - stdout ]─────────────────────────────────────────────────────────╮ │ Failure: │ │ Error in Ln: 1 Col: 1 │ │ ##!magic │ │ ^ │ │ Expecting: '#!' │ │ │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## magicCommand │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let magicCommand = magicMarker >>. manyTill anyChar newline |>> (System.String.Concat >> SpiralSm.trim) ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic a" |> run magicCommand |> _assertEqual ( Success ("magic", (), Position ("", 8, 2, 1)) ) ╭─[ 14.55ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success: "magic" │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test " #!magic a" |> run magicCommand |> _assertEqual ( Failure ( $"Error in Ln: 1 Col: 1{nl} #!magic{nl}^{nl}Expecting: '#!'{nl}", ParserError ( Position ("", 0, 1, 1), (), ErrorMessageList (ExpectedString "#!") ), () ) ) ╭─[ 14.78ms - stdout ]─────────────────────────────────────────────────────────╮ │ Failure: │ │ Error in Ln: 1 Col: 1 │ │ #!magic │ │ ^ │ │ Expecting: '#!' │ │ │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## content │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let content = (newline >>. magicMarker) <|> (eof >>. preturn "") |> attempt |> lookAhead |> manyTill anyChar |>> (System.String.Concat >> SpiralSm.trim) ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic a " |> run content |> _assertEqual ( Success ("#!magic a", (), Position ("", 14, 7, 1)) ) ╭─[ 13.28ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success: "#!magic │ │ │ │ │ │ a" │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## Output │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── type Output = | Fs | Md | Spi | Spir ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## Magic │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── type Magic = | Fsharp | Markdown | Spiral of Output | Magic of string ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## kernelOutputs │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline kernelOutputs magic = match magic with | Fsharp -> [[ Fs ]] | Markdown -> [[ Md ]] | Spiral output -> [[ output ]] | _ -> [[]] ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## Block │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── type Block = { magic : Magic content : string } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## block │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let block = pipe2 magicCommand content (fun magic content -> let magic, content = match magic with | "fsharp" -> Fsharp, content | "markdown" -> Markdown, content | "spiral" -> let output = if content |> SpiralSm.contains "//// real\n" then Spir else Spi let content = if output = Spi then content else content |> SpiralSm.replace "//// real\n\n" "" |> SpiralSm.replace "//// real\n" "" Spiral output, content | magic -> magic |> Magic, content { magic = magic content = content }) ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic a " |> run block |> _assertEqual ( Success ( { magic = Magic "magic"; content = "a" }, (), Position ("", 14, 7, 1) ) ) ╭─[ 24.18ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success: { magic = Magic "magic" │ │ content = "a" } │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## blocks │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let blocks = skipMany newline >>. sepEndBy block (skipMany1 newline) ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic1 a \#!magic2 b " |> escapeCell |> run blocks |> _assertEqual ( Success ( [[ { magic = Magic "magic1"; content = "a" } { magic = Magic "magic2"; content = "b" } ]], (), Position ("", 26, 9, 1) ) ) ╭─[ 23.22ms - stdout ]─────────────────────────────────────────────────────────╮ │ Success: [{ magic = Magic "magic1" │ │ content = "a" }; { magic = Magic "magic2" │ │ content = "b" }] │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## formatBlock │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline formatBlock output (block : Block) = match output, block with | output, { magic = Markdown; content = content } -> let markdownComment = match output with | Spi | Spir -> "/// " | Fs -> "/// " | _ -> "" content |> SpiralSm.split "\n" |> Array.map (SpiralSm.trim_end [[||]]) |> Array.filter (SpiralSm.ends_with " (test)" >> not) |> Array.map (function | "" -> markdownComment | line -> System.Text.RegularExpressions.Regex.Replace (line, "^\\s*", $"$&{markdownComment}") ) |> SpiralSm.concat "\n" | Fs, { magic = Fsharp; content = content } -> let trimmedContent = content |> SpiralSm.trim if trimmedContent |> SpiralSm.contains "//// test\n" || trimmedContent |> SpiralSm.contains "//// ignore\n" then "" else content |> SpiralSm.split "\n" |> Array.filter (SpiralSm.trim_start [[||]] >> SpiralSm.starts_with "#r" >> not) |> SpiralSm.concat "\n" | (Spi | Spir), { magic = Spiral output'; content = content } when output' = output -> let trimmedContent = content |> SpiralSm.trim if trimmedContent |> SpiralSm.contains "//// test\n" || trimmedContent |> SpiralSm.contains "//// ignore\n" then "" else content | _ -> "" ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!markdown a b c \#!markdown c \#!fsharp let a = 1" |> escapeCell |> run block |> function | Success (block, _, _) -> formatBlock Fs block | Failure (msg, _, _) -> failwith msg |> _assertEqual "/// a /// /// b /// /// c" ╭─[ 29.51ms - stdout ]─────────────────────────────────────────────────────────╮ │ "/// a │ │ /// │ │ /// b │ │ /// │ │ /// c" │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## formatBlocks │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline formatBlocks output blocks = blocks |> List.map (fun block -> block, formatBlock output block ) |> List.filter (snd >> (<>) "") |> fun list -> (list, (None, [[]])) ||> List.foldBack (fun (block, content) (lastMagic, acc) -> let lineBreak = if block.magic = Markdown && lastMagic <> Some Markdown && lastMagic <> None then "" else "\n" Some block.magic, $"{content}{lineBreak}" :: acc ) |> snd |> SpiralSm.concat "\n" ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!markdown a b \#!markdown c \#!fsharp let a = 1 \#!markdown d (test) \#!fsharp //// test let a = 2 \#!markdown e \#!fsharp let a = 3" |> escapeCell |> run blocks |> function | Success (blocks, _, _) -> formatBlocks Fs blocks | Failure (msg, _, _) -> failwith msg |> _assertEqual "/// a /// /// b /// c let a = 1 /// e let a = 3 " ╭─[ 37.25ms - stdout ]─────────────────────────────────────────────────────────╮ │ "/// a │ │ /// │ │ /// b │ │ │ │ /// c │ │ let a = 1 │ │ │ │ /// e │ │ let a = 3 │ │ " │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## parse │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline parse output input = match run blocks input with | Success (blocks, _, _) -> let blocks = blocks |> List.filter (fun block -> block.magic |> kernelOutputs |> List.contains output || block.magic = Markdown ) match blocks with | { magic = Markdown; content = content } :: _ when output = Fs && content |> SpiralSm.starts_with "# " && content |> SpiralSm.ends_with ")" -> let inline indentBlock (block : Block) = { block with content = block.content |> SpiralSm.split "\n" |> Array.fold (fun (lines, isMultiline) line -> let trimmedLine = line |> SpiralSm.trim if trimmedLine = "" then "" :: lines, isMultiline else let inline singleQuoteLine () = trimmedLine |> Seq.sumBy ((=) '"' >> System.Convert.ToInt32) = 1 && trimmedLine |> SpiralSm.contains @"'""'" |> not && trimmedLine |> SpiralSm.ends_with "{" |> not && trimmedLine |> SpiralSm.ends_with "{|" |> not && trimmedLine |> SpiralSm.starts_with "}" |> not && trimmedLine |> SpiralSm.starts_with "|}" |> not match isMultiline, trimmedLine |> SpiralSm.split_string [[| $"{q}{q}{q}" |]] with | false, [[| _; _ |]] -> $" {line}" :: lines, true | true, [[| _; _ |]] -> line :: lines, false | false, _ when singleQuoteLine () -> $" {line}" :: lines, true | false, _ when line |> SpiralSm.starts_with "#" && block.magic = Fsharp -> line :: lines, false | false, _ -> $" {line}" :: lines, false | true, _ when singleQuoteLine () && line |> SpiralSm.starts_with " " -> $" {line}" :: lines, false | true, _ when singleQuoteLine () -> line :: lines, false | true, _ -> line :: lines, true ) ([[]], false) |> fst |> List.rev |> SpiralSm.concat "\n" } let moduleName, namespaceName = System.Text.RegularExpressions.Regex.Match (content, @"# (.*) \((.*)\)$") |> fun m -> m.Groups.[[1]].Value, m.Groups.[[2]].Value let moduleBlock = { magic = Fsharp content = $"#if !INTERACTIVE namespace {namespaceName} #endif module {moduleName} =" } blocks |> List.indexed |> List.fold (fun blocks (index, block) -> match index with | 0 -> blocks | 1 -> indentBlock block :: moduleBlock :: blocks | _ -> indentBlock block :: blocks ) [[]] |> List.rev | _ -> blocks |> Result.Ok | Failure (errorMsg, _, _) -> Result.Error errorMsg ── fsharp ────────────────────────────────────────────────────────────────────── //// test let example1 = $"""#!meta {{"kernelInfo":{{"defaultKernelName":"fsharp","items":[[{{"aliases":[[]],"name": "fsharp"}},{{"aliases":[[]],"name":"fsharp"}}]]}}}} \#!markdown # TestModule (TestNamespace) \#!fsharp \#!import file.dib \#!fsharp \#r "nuget:Expecto" \#!markdown ## ParserLibrary \#!fsharp open System \#!markdown ## x (test) \#!fsharp //// ignore let x = 1 \#!spiral //// test inl x = 1i32 \#!spiral //// real inl x = 2i32 \#!spiral inl x = 3i32 \#!markdown ### TextInput \#!fsharp let str1 = "abc def" let str2 = "abc\ def" let str3 = $"1{{ 1 }}1" let str4 = $"1{{({{| a = 1 |}}).a}}1" let str5 = "abc \ def" let x = match '"' with | '"' -> true | _ -> false let long1 = {q}{q}{q}a{q}{q}{q} let long2 = {q}{q}{q} a {q}{q}{q} \#!fsharp type Position = {{ #if INTERACTIVE line : string #else line : int #endif column : int }}""" |> escapeCell ── fsharp ────────────────────────────────────────────────────────────────────── //// test example1 |> parse Fs |> Result.toOption |> Option.get |> (formatBlocks Fs) |> _assertEqual $"""#if !INTERACTIVE namespace TestNamespace #endif module TestModule = /// ## ParserLibrary open System /// ### TextInput let str1 = "abc def" let str2 = "abc\ def" let str3 = $"1{{ 1 }}1" let str4 = $"1{{({{| a = 1 |}}).a}}1" let str5 = "abc \ def" let x = match '"' with | '"' -> true | _ -> false let long1 = {q}{q}{q}a{q}{q}{q} let long2 = {q}{q}{q} a {q}{q}{q} type Position = {{ #if INTERACTIVE line : string #else line : int #endif column : int }} """ ╭─[ 94.70ms - stdout ]─────────────────────────────────────────────────────────╮ │ "#if !INTERACTIVE │ │ namespace TestNamespace │ │ #endif │ │ │ │ module TestModule = │ │ │ │ /// ## ParserLibrary │ │ open System │ │ │ │ /// ### TextInput │ │ let str1 = "abc │ │ def" │ │ │ │ let str2 = │ │ "abc\ │ │ def" │ │ │ │ let str3 = │ │ $"1{ │ │ 1 │ │ }1" │ │ │ │ let str4 = │ │ $"1{({| │ │ a = 1 │ │ |}).a}1" │ │ │ │ let str5 = │ │ "abc \ │ │ def" │ │ │ │ let x = │ │ match '"' with │ │ | '"' -> true │ │ | _ -> false │ │ │ │ let long1 = """a""" │ │ │ │ let long2 = │ │ """ │ │ a │ │ """ │ │ │ │ type Position = │ │ { │ │ #if INTERACTIVE │ │ line : string │ │ #else │ │ line : int │ │ #endif │ │ column : int │ │ } │ │ " │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test example1 |> parse Md |> Result.toOption |> Option.get |> (formatBlocks Md) |> _assertEqual "# TestModule (TestNamespace) ## ParserLibrary ### TextInput " ╭─[ 82.29ms - stdout ]─────────────────────────────────────────────────────────╮ │ "# TestModule (TestNamespace) │ │ │ │ ## ParserLibrary │ │ │ │ ### TextInput │ │ " │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test example1 |> parse Spi |> Result.toOption |> Option.get |> (formatBlocks Spi) |> _assertEqual "/// # TestModule (TestNamespace) /// ## ParserLibrary inl x = 3i32 /// ### TextInput " ╭─[ 84.02ms - stdout ]─────────────────────────────────────────────────────────╮ │ "/// # TestModule (TestNamespace) │ │ │ │ /// ## ParserLibrary │ │ inl x = 3i32 │ │ │ │ /// ### TextInput │ │ " │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test example1 |> parse Spir |> Result.toOption |> Option.get |> (formatBlocks Spir) |> _assertEqual "/// # TestModule (TestNamespace) /// ## ParserLibrary inl x = 2i32 /// ### TextInput " ╭─[ 106.95ms - stdout ]────────────────────────────────────────────────────────╮ │ "/// # TestModule (TestNamespace) │ │ │ │ /// ## ParserLibrary │ │ inl x = 2i32 │ │ │ │ /// ### TextInput │ │ " │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## parseDibCode │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline parseDibCode output file = async { trace Debug (fun () -> "parseDibCode") (fun () -> $"output: {output} / file: {file} / {_locals ()}") let! input = file |> SpiralFileSystem.read_all_text_async match parse output input with | Result.Ok blocks -> return blocks |> formatBlocks output | Result.Error msg -> return failwith msg } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## writeDibCode │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline writeDibCode output path = async { trace Debug (fun () -> "writeDibCode") (fun () -> $"output: {output} / path: {path} / {_locals ()}") let! result = parseDibCode output path let pathDir = path |> System.IO.Path.GetDirectoryName let fileNameWithoutExt = match output, path |> System.IO.Path.GetFileNameWithoutExtension with | Spir, fileNameWithoutExt -> $"real_{fileNameWithoutExt}" | _, fileNameWithoutExt -> fileNameWithoutExt let outputPath = pathDir </> $"{fileNameWithoutExt}.{output |> string |> SpiralSm.to_lower}" do! result |> SpiralFileSystem.write_all_text_async outputPath } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## Arguments │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── [[<RequireQualifiedAccess>]] type Arguments = | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.Mandatory>]] File of file : string * Output interface Argu.IArgParserTemplate with member s.Usage = match s with | File _ -> nameof File ── fsharp ────────────────────────────────────────────────────────────────────── //// test Argu.ArgumentParser.Create<Arguments>().PrintUsage () ╭─[ 68.21ms - return value ]───────────────────────────────────────────────────╮ │ "USAGE: dotnet-repl [--help] <file> <fs|md|spi|spir> │ │ │ │ FILE: │ │ │ │ <file> <fs|md|spi|spir> │ │ File │ │ │ │ OPTIONS: │ │ │ │ --help display this list of options. │ │ " │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ## main │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let main args = let argsMap = args |> Runtime.parseArgsMap<Arguments> let files = argsMap.[[nameof Arguments.File]] |> List.map (function | Arguments.File (path, output) -> path, output ) files |> List.map (fun (path, output) -> path |> writeDibCode output) |> Async.Parallel |> Async.Ignore |> Async.runWithTimeout 30000 |> function | Some () -> 0 | None -> 1 ── fsharp ────────────────────────────────────────────────────────────────────── //// test let args = System.Environment.GetEnvironmentVariable "ARGS" |> SpiralRuntime.split_args |> Result.toArray |> Array.collect id match args with | [[||]] -> 0 | args -> if main args = 0 then 0 else failwith "main failed" ╭─[ 117.93ms - return value ]──────────────────────────────────────────────────╮ │ <div class="dni-plaintext"><pre>0 │ │ </pre></div><style> │ │ .dni-code-hint { │ │ font-style: italic; │ │ overflow: hidden; │ │ white-space: nowrap; │ │ } │ │ .dni-treeview { │ │ white-space: nowrap; │ │ } │ │ .dni-treeview td { │ │ vertical-align: top; │ │ text-align: start; │ │ } │ │ details.dni-treeview { │ │ padding-left: 1em; │ │ } │ │ table td { │ │ text-align: start; │ │ } │ │ table tr { │ │ vertical-align: top; │ │ margin: 0em 0px; │ │ } │ │ table tr td pre │ │ { │ │ vertical-align: top !important; │ │ margin: 0em 0px !important; │ │ } │ │ table th { │ │ text-align: start; │ │ } │ │ </style> │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 119.31ms - stdout ]────────────────────────────────────────────────────────╮ │ 00:00:03 debug #1 writeDibCode / output: Fs / path: Builder.dib │ │ 00:00:03 debug #2 parseDibCode / output: Fs / file: Builder.dib │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Builder.dib"])) } 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ "repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb", ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ # Builder (Polyglot) │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > dard2.1/FSharp.Control.AsyncSeq.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > 0/System.Reactive.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > netstandard2.0/System.Reactive.Linq.dll" > #r > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if !INTERACTIVE > open Lib > #endif > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Common > open SpiralFileSystem.Operators > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## buildProject │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline buildProject runtime outputDir path = async { > let fullPath = path |> System.IO.Path.GetFullPath > let fileDir = fullPath |> System.IO.Path.GetDirectoryName > let extension = fullPath |> System.IO.Path.GetExtension > > trace Debug > (fun () -> "buildProject") > (fun () -> $"fullPath: {fullPath} / {_locals ()}") > > match extension with > | ".fsproj" -> () > | _ -> failwith "Invalid project file" > > let runtimes = > runtime > |> Option.map List.singleton > |> Option.defaultValue [[ "linux-x64"; "win-x64" ]] > > let outputDir = outputDir |> Option.defaultValue "dist" > > return! > runtimes > |> List.map (fun runtime -> async { > let command = $@"dotnet publish ""{path}"" --configuration Release > --output ""{outputDir}"" --runtime {runtime}" > let! exitCode, _result = > SpiralRuntime.execution_options (fun x -> > { x with > l0 = command > l6 = Some fileDir > } > ) > |> SpiralRuntime.execute_with_options_async > return exitCode > }) > |> Async.Sequential > |> Async.map Array.sum > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## persistCodeProject │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline persistCodeProject packages modules name hash code = async { > trace Debug > (fun () -> "persistCodeProject") > (fun () -> $"packages: {packages} / modules: {modules} / name: {name} / > hash: {hash} / code.Length: {code |> String.length} / {_locals ()}") > > let workspaceRoot = SpiralFileSystem.get_workspace_root () > > let targetDir = > let targetDir = workspaceRoot </> "target/Builder" </> name > match hash with > | Some hash -> targetDir </> "packages" </> hash > | None -> targetDir > targetDir |> System.IO.Directory.CreateDirectory |> ignore > > let filePath = targetDir </> $"{name}.fs" |> System.IO.Path.GetFullPath > do! code |> SpiralFileSystem.write_all_text_exists filePath > > let modulesCode = > modules > |> List.map (fun path -> $"""<Compile Include="{workspaceRoot </> path}" > />""") > |> SpiralSm.concat "\n " > > let fsprojPath = targetDir </> $"{name}.fsproj" > let fsprojCode = $"""<Project Sdk="Microsoft.NET.Sdk"> > <PropertyGroup> > <TargetFramework>net9.0</TargetFramework> > <LangVersion>preview</LangVersion> > <RollForward>Major</RollForward> > <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> > <PublishAot>false</PublishAot> > <PublishTrimmed>false</PublishTrimmed> > <PublishSingleFile>true</PublishSingleFile> > <SelfContained>true</SelfContained> > <Version>0.0.1-alpha.1</Version> > <OutputType>Exe</OutputType> > </PropertyGroup> > > <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('FreeBSD'))"> > <DefineConstants>_FREEBSD</DefineConstants> > </PropertyGroup> > > <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('Linux'))"> > <DefineConstants>_LINUX</DefineConstants> > </PropertyGroup> > > <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('OSX'))"> > <DefineConstants>_OSX</DefineConstants> > </PropertyGroup> > > <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('Windows'))"> > <DefineConstants>_WINDOWS</DefineConstants> > </PropertyGroup> > > <ItemGroup> > {modulesCode} > <Compile Include="{filePath}" /> > </ItemGroup> > > <Import Project="{workspaceRoot}/.paket/Paket.Restore.targets" /> > </Project> > """ > do! fsprojCode |> SpiralFileSystem.write_all_text_exists fsprojPath > > let paketReferencesPath = targetDir </> "paket.references" > let paketReferencesCode = > "FSharp.Core" :: packages > |> SpiralSm.concat "\n" > do! paketReferencesCode |> SpiralFileSystem.write_all_text_exists > paketReferencesPath > > return fsprojPath > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## buildCode │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline buildCode runtime packages modules outputDir name code = async { > let! fsprojPath = code |> persistCodeProject packages modules name None > let! exitCode = fsprojPath |> buildProject runtime outputDir > if exitCode <> 0 then > let! fsprojText = fsprojPath |> SpiralFileSystem.read_all_text_async > trace Critical > (fun () -> "buildCode") > (fun () -> $"code: {code |> SpiralSm.ellipsis_end 400} / fsprojText: > {fsprojText} / {_locals ()}") > return exitCode > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "1 + 1 |> ignore" > |> buildCode None [[]] [[]] None "test1" > |> Async.runWithTimeout 180000 > |> _assertEqual (Some 0) > > ╭─[ 8.21s - stdout ]───────────────────────────────────────────────────────────╮ > │ 00:00:01 debug #1 persistCodeProject / packages: [] / modules: [] / │ > │ name: test1 / hash: / code.Length: 15 │ > │ 00:00:01 debug #2 buildProject / fullPath: │ > │ /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj │ > │ 00:00:04 debug #1 runtime.execute_with_options_async / { options = { │ > │ command = dotnet publish │ > │ "/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj" │ > │ --configuration Release --output "dist" --runtime linux-x64; │ > │ cancellation_token = None; environment_variables = [||]; on_line = None; │ > │ stdin = None; trace = true; working_directory = Some │ > │ "/home/runner/work/polyglot/polyglot/target/Builder/test1" } } │ > │ 00:00:05 verbose #2 > MSBuild version │ > │ 17.10.0-preview-24101-01+07fd5d51f for .NET │ > │ 00:00:05 verbose #3 > Determining projects to restore... │ > │ 00:00:05 verbose #4 > Paket version │ > │ 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b │ > │ 00:00:05 verbose #5 > The last full restore is still up to date. │ > │ Nothing left to do. │ > │ 00:00:05 verbose #6 > Total time taken: 0 milliseconds │ > │ 00:00:06 verbose #7 > Paket version │ > │ 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b │ > │ 00:00:06 verbose #8 > Restoring │ > │ /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj │ > │ 00:00:06 verbose #9 > Starting restore process. │ > │ 00:00:06 verbose #10 > Total time taken: 0 milliseconds │ > │ 00:00:07 verbose #11 > Restored │ > │ /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj (in │ > │ 283 ms). │ > │ 00:00:07 verbose #12 > │ > │ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │ > │ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message │ > │ NETSDK1057: You are using a preview version of .NET. See: │ > │ https://aka.ms/dotnet-support-policy [ │ > │ /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj] │ > │ 00:00:08 verbose #13 > │ > │ /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fs(1,16): │ > │ warning FS0988: Main module of program is empty: nothing will happen when it │ > │ is run [ │ > │ /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj] │ > │ 00:00:09 verbose #14 > test1 -> │ > │ /home/runner/work/polyglot/polyglot/target/Builder/test1/bin/Release/net9.0/ │ > │ linux-x64/test1.dll │ > │ 00:00:09 verbose #15 > test1 -> │ > │ /home/runner/work/polyglot/polyglot/target/Builder/test1/dist │ > │ 00:00:09 debug #16 runtime.execute_with_options_async / { exit_code = │ > │ 0; output_length = 1300 } │ > │ 00:00:09 debug #17 runtime.execute_with_options_async / { options = { │ > │ command = dotnet publish │ > │ "/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj" │ > │ --configuration Release --output "dist" --runtime win-x64; │ > │ cancellation_token = None; environment_variables = [||]; on_line = None; │ > │ stdin = None; trace = true; working_directory = Some │ > │ "/home/runner/work/polyglot/polyglot/target/Builder/test1" } } │ > │ 00:00:10 verbose #18 > MSBuild version │ > │ 17.10.0-preview-24101-01+07fd5d51f for .NET │ > │ 00:00:10 verbose #19 > Determining projects to restore... │ > │ 00:00:10 verbose #20 > Restored │ > │ /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj (in │ > │ 259 ms). │ > │ 00:00:11 verbose #21 > │ > │ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │ > │ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message │ > │ NETSDK1057: You are using a preview version of .NET. See: │ > │ https://aka.ms/dotnet-support-policy [ │ > │ /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj] │ > │ 00:00:12 verbose #22 > │ > │ /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fs(1,16): │ > │ warning FS0988: Main module of program is empty: nothing will happen when it │ > │ is run [ │ > │ /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj] │ > │ 00:00:12 verbose #23 > test1 -> │ > │ /home/runner/work/polyglot/polyglot/target/Builder/test1/bin/Release/net9.0/ │ > │ win-x64/test1.dll │ > │ 00:00:12 verbose #24 > test1 -> │ > │ /home/runner/work/polyglot/polyglot/target/Builder/test1/dist │ > │ 00:00:12 debug #25 runtime.execute_with_options_async / { exit_code = │ > │ 0; output_length = 909 } │ > │ Some 0 │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "1 + a |> ignore" > |> buildCode None [[]] [[]] None "test2" > |> Async.runWithTimeout 180000 > |> _assertEqual (Some 2) > > ╭─[ 5.81s - stdout ]───────────────────────────────────────────────────────────╮ > │ 00:00:09 debug #3 persistCodeProject / packages: [] / modules: [] / │ > │ name: test2 / hash: / code.Length: 15 │ > │ 00:00:09 debug #4 buildProject / fullPath: │ > │ /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj │ > │ 00:00:13 debug #26 runtime.execute_with_options_async / { options = { │ > │ command = dotnet publish │ > │ "/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj" │ > │ --configuration Release --output "dist" --runtime linux-x64; │ > │ cancellation_token = None; environment_variables = [||]; on_line = None; │ > │ stdin = None; trace = true; working_directory = Some │ > │ "/home/runner/work/polyglot/polyglot/target/Builder/test2" } } │ > │ 00:00:13 verbose #27 > MSBuild version │ > │ 17.10.0-preview-24101-01+07fd5d51f for .NET │ > │ 00:00:13 verbose #28 > Determining projects to restore... │ > │ 00:00:13 verbose #29 > Paket version │ > │ 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b │ > │ 00:00:14 verbose #30 > The last full restore is still up to date. │ > │ Nothing left to do. │ > │ 00:00:14 verbose #31 > Total time taken: 0 milliseconds │ > │ 00:00:14 verbose #32 > Paket version │ > │ 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b │ > │ 00:00:14 verbose #33 > Restoring │ > │ /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj │ > │ 00:00:14 verbose #34 > Starting restore process. │ > │ 00:00:14 verbose #35 > Total time taken: 0 milliseconds │ > │ 00:00:15 verbose #36 > Restored │ > │ /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj (in │ > │ 257 ms). │ > │ 00:00:15 verbose #37 > │ > │ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │ > │ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message │ > │ NETSDK1057: You are using a preview version of .NET. See: │ > │ https://aka.ms/dotnet-support-policy [ │ > │ /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj] │ > │ 00:00:16 verbose #38 > │ > │ /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fs(1,5): │ > │ error FS0039: The value or constructor 'a' is not defined. [ │ > │ /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj] │ > │ 00:00:16 debug #39 runtime.execute_with_options_async / { exit_code = │ > │ 1; output_length = 1093 } │ > │ 00:00:16 debug #40 runtime.execute_with_options_async / { options = { │ > │ command = dotnet publish │ > │ "/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj" │ > │ --configuration Release --output "dist" --runtime win-x64; │ > │ cancellation_token = None; environment_variables = [||]; on_line = None; │ > │ stdin = None; trace = true; working_directory = Some │ > │ "/home/runner/work/polyglot/polyglot/target/Builder/test2" } } │ > │ 00:00:16 verbose #41 > MSBuild version │ > │ 17.10.0-preview-24101-01+07fd5d51f for .NET │ > │ 00:00:17 verbose #42 > Determining projects to restore... │ > │ 00:00:17 verbose #43 > Restored │ > │ /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj (in │ > │ 255 ms). │ > │ 00:00:17 verbose #44 > │ > │ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │ > │ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message │ > │ NETSDK1057: You are using a preview version of .NET. See: │ > │ https://aka.ms/dotnet-support-policy [ │ > │ /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj] │ > │ 00:00:18 verbose #45 > │ > │ /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fs(1,5): │ > │ error FS0039: The value or constructor 'a' is not defined. [ │ > │ /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj] │ > │ 00:00:18 debug #46 runtime.execute_with_options_async / { exit_code = │ > │ 1; output_length = 704 } │ > │ 00:00:15 critical #5 buildCode / code: 1 + a |> ignore / fsprojText: │ > │ <Project Sdk="Microsoft.NET.Sdk"> │ > │ <PropertyGroup> │ > │ <TargetFramework>net9.0</TargetFramework> │ > │ <LangVersion>preview</LangVersion> │ > │ <RollForward>Major</RollForward> │ > │ <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> │ > │ <PublishAot>false</PublishAot> │ > │ <PublishTrimmed>false</PublishTrimmed> │ > │ <PublishSingleFile>true</PublishSingleFile> │ > │ <SelfContained>true</SelfContained> │ > │ <Version>0.0.1-alpha.1</Version> │ > │ <OutputType>Exe</OutputType> │ > │ </PropertyGroup> │ > │ │ > │ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('FreeBSD'))"> │ > │ <DefineConstants>_FREEBSD</DefineConstants> │ > │ </PropertyGroup> │ > │ │ > │ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Linux'))"> │ > │ <DefineConstants>_LINUX</DefineConstants> │ > │ </PropertyGroup> │ > │ │ > │ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('OSX'))"> │ > │ <DefineConstants>_OSX</DefineConstants> │ > │ </PropertyGroup> │ > │ │ > │ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Windows'))"> │ > │ <DefineConstants>_WINDOWS</DefineConstants> │ > │ </PropertyGroup> │ > │ │ > │ <ItemGroup> │ > │ │ > │ <Compile │ > │ Include="/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fs" │ > │ /> │ > │ </ItemGroup> │ > │ │ > │ <Import │ > │ Project="/home/runner/work/polyglot/polyglot/.paket/Paket.Restore.targets" │ > │ /> │ > │ </Project> │ > │ │ > │ Some 2 │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## readFile │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline readFile path = async { > let! code = path |> SpiralFileSystem.read_all_text_async > > let code = System.Text.RegularExpressions.Regex.Replace ( > code, > @"( *)(let\s+main\s+.*?\s*=)", > fun m -> m.Groups.[[1]].Value + "[[<EntryPoint>]]\n" + > m.Groups.[[1]].Value + m.Groups.[[2]].Value > ) > > let codeTrim = code |> SpiralSm.trim_end [[||]] > return > if codeTrim |> SpiralSm.ends_with "\n()" > then codeTrim |> SpiralSm.slice 0 ((codeTrim |> String.length) - 3) > else code > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## buildFile │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline buildFile runtime packages modules path = async { > let fullPath = path |> System.IO.Path.GetFullPath > let dir = fullPath |> System.IO.Path.GetDirectoryName > let name = fullPath |> System.IO.Path.GetFileNameWithoutExtension > let! code = fullPath |> readFile > return! code |> buildCode runtime packages modules (dir </> "dist" |> Some) > name > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## persistFile │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline persistFile packages modules path = async { > let fullPath = path |> System.IO.Path.GetFullPath > let name = fullPath |> System.IO.Path.GetFileNameWithoutExtension > let! code = fullPath |> readFile > return! code |> persistCodeProject packages modules name None > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## Arguments │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > [[<RequireQualifiedAccess>]] > type Arguments = > | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.ExactlyOnce>]] > Path of path : string > | [[<Argu.ArguAttributes.Unique>]] Packages of packages : string list > | [[<Argu.ArguAttributes.Unique>]] Modules of modules : string list > | [[<Argu.ArguAttributes.Unique>]] Runtime of runtime : string > | [[<Argu.ArguAttributes.Unique>]] Persist_Only > > interface Argu.IArgParserTemplate with > member s.Usage = > match s with > | Path _ -> nameof Path > | Packages _ -> nameof Packages > | Modules _ -> nameof Modules > | Runtime _ -> nameof Runtime > | Persist_Only -> nameof Persist_Only > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > Argu.ArgumentParser.Create<Arguments>().PrintUsage () > > ╭─[ 75.09ms - return value ]───────────────────────────────────────────────────╮ > │ "USAGE: dotnet-repl [--help] [--packages [<packages>...]] │ > │ [--modules [<modules>...]] [--runtime <runtime>] │ > │ [--persist-only] <path> │ > │ │ > │ PATH: │ > │ │ > │ <path> Path │ > │ │ > │ OPTIONS: │ > │ │ > │ --packages [<packages>...] │ > │ Packages │ > │ --modules [<modules>...] │ > │ Modules │ > │ --runtime <runtime> Runtime │ > │ --persist-only Persist_Only │ > │ --help display this list of options. │ > │ " │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## main │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let main args = > let argsMap = args |> Runtime.parseArgsMap<Arguments> > > let path = > match argsMap.[[nameof Arguments.Path]] with > | [[ Arguments.Path path ]] -> Some path > | _ -> None > |> Option.get > > let packages = > match argsMap |> Map.tryFind (nameof Arguments.Packages) with > | Some [[ Arguments.Packages packages ]] -> packages > | _ -> [[]] > > let modules = > match argsMap |> Map.tryFind (nameof Arguments.Modules) with > | Some [[ Arguments.Modules modules ]] -> modules > | _ -> [[]] > > let runtime = > match argsMap |> Map.tryFind (nameof Arguments.Runtime) with > | Some [[ Arguments.Runtime runtime ]] -> Some runtime > | _ -> None > > let persistOnly = argsMap |> Map.containsKey (nameof Arguments.Persist_Only) > > if persistOnly > then path |> persistFile packages modules |> Async.map (fun _ -> 0) > else path |> buildFile runtime packages modules > |> Async.runWithTimeout (60000 * 60) > |> function > | Some exitCode -> exitCode > | None -> 1 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let args = > System.Environment.GetEnvironmentVariable "ARGS" > |> SpiralRuntime.split_args > |> Result.toArray > |> Array.collect id > > match args with > | [[||]] -> 0 > | args -> if main args = 0 then 0 else failwith "main failed" > > ╭─[ 12.28s - return value ]────────────────────────────────────────────────────╮ > │ <div class="dni-plaintext"><pre>0 │ > │ </pre></div><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 12.28s - stdout ]──────────────────────────────────────────────────────────╮ > │ 00:00:16 debug #6 persistCodeProject / packages: [Argu; │ > │ FSharp.Control.AsyncSeq; System.Reactive.Linq] / modules: [ │ > │ lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / │ > │ name: Builder / hash: / code.Length: 8210 │ > │ 00:00:16 debug #7 buildProject / fullPath: │ > │ /home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj │ > │ 00:00:19 debug #47 runtime.execute_with_options_async / { options = { │ > │ command = dotnet publish │ > │ "/home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj" │ > │ --configuration Release --output │ > │ "/home/runner/work/polyglot/polyglot/apps/builder/dist" --runtime linux-x64; │ > │ cancellation_token = None; environment_variables = [||]; on_line = None; │ > │ stdin = None; trace = true; working_directory = Some │ > │ "/home/runner/work/polyglot/polyglot/target/Builder/Builder" } } │ > │ 00:00:19 verbose #48 > MSBuild version │ > │ 17.10.0-preview-24101-01+07fd5d51f for .NET │ > │ 00:00:19 verbose #49 > Determining projects to restore... │ > │ 00:00:20 verbose #50 > Paket version │ > │ 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b │ > │ 00:00:20 verbose #51 > The last full restore is still up to date. │ > │ Nothing left to do. │ > │ 00:00:20 verbose #52 > Total time taken: 0 milliseconds │ > │ 00:00:20 verbose #53 > Paket version │ > │ 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b │ > │ 00:00:20 verbose #54 > Restoring │ > │ /home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj │ > │ 00:00:21 verbose #55 > Starting restore process. │ > │ 00:00:21 verbose #56 > Total time taken: 0 milliseconds │ > │ 00:00:21 verbose #57 > Restored │ > │ /home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj │ > │ (in 298 ms). │ > │ 00:00:21 verbose #58 > │ > │ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │ > │ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message │ > │ NETSDK1057: You are using a preview version of .NET. See: │ > │ https://aka.ms/dotnet-support-policy [ │ > │ /home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj] │ > │ 00:00:31 verbose #59 > Builder -> │ > │ /home/runner/work/polyglot/polyglot/target/Builder/Builder/bin/Release/net9. │ > │ 0/linux-x64/Builder.dll │ > │ 00:00:31 verbose #60 > Builder -> │ > │ /home/runner/work/polyglot/polyglot/apps/builder/dist │ > │ 00:00:31 debug #61 runtime.execute_with_options_async / { exit_code = │ > │ 0; output_length = 1083 } │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:42 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 45525 } 00:00:42 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ "nbconvert", "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark", ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:42 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb to html 00:00:42 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:42 verbose #7 ! validate(nb) 00:00:43 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:43 verbose #9 ! return _pygments_highlight( 00:00:43 verbose #10 ! [NbConvertApp] Writing 336566 bytes to /home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.html 00:00:43 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 } 00:00:43 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 } 00:00:43 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ "-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:43 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:43 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:43 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 46486 }
In [ ]:
{ pwsh ../apps/spiral/builder/build.ps1 -SkipFsx 1 } | Invoke-Block
00:00:00 debug #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: spiral_builder / hash: / code.Length: 1771837 targetDir: /home/runner/work/polyglot/polyglot/target/Builder/spiral_builder Fable 4.19.3: F# to Rust compiler (status: alpha) Thanks to the contributor! @enricosada Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target/Builder/spiral_builder/spiral_builder.fsproj... target/Builder/spiral_builder> dotnet restore spiral_builder.fable-temp.csproj -p:FABLE_COMPILER=true -p:FABLE_COMPILER_4=true -p:FABLE_COMPILER_RUST=true -p:_LINUX=true Determining projects to restore... Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b The last full restore is still up to date. Nothing left to do. Total time taken: 0 milliseconds Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b Restoring /home/runner/work/polyglot/polyglot/target/Builder/spiral_builder/spiral_builder.fable-temp.csproj Starting restore process. Total time taken: 0 milliseconds Restored /home/runner/work/polyglot/polyglot/target/Builder/spiral_builder/spiral_builder.fable-temp.csproj (in 305 ms). target/Builder/spiral_builder> dotnet restore /home/runner/work/polyglot/polyglot/target/Builder/spiral_builder/spiral_builder.fsproj Determining projects to restore... Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b The last full restore is still up to date. Nothing left to do. Total time taken: 0 milliseconds Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b Restoring /home/runner/work/polyglot/polyglot/target/Builder/spiral_builder/spiral_builder.fsproj Starting restore process. Total time taken: 0 milliseconds Restored /home/runner/work/polyglot/polyglot/target/Builder/spiral_builder/spiral_builder.fsproj (in 289 ms). Project and references (14 source files) parsed in 6063ms Started Fable compilation... Fable compilation finished in 13706ms ./lib/spiral/date_time.fsx(1012,0): (1012,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/sm.fsx(414,0): (414,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/common.fsx(1425,0): (1425,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/async_.fsx(76,0): (76,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/crypto.fsx(1326,0): (1326,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/threading.fsx(145,0): (145,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/platform.fsx(104,0): (104,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/networking.fsx(4626,0): (4626,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/trace.fsx(1524,0): (1524,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/runtime.fsx(7219,0): (7219,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/file_system.fsx(11479,0): (11479,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! Compiling spiral_builder v0.0.1 (/home/runner/work/polyglot/polyglot/apps/spiral/builder) Finished `release` profile [optimized] target(s) in 9.54s Running unittests spiral_builder.rs (/home/runner/work/polyglot/polyglot/workspace/target/release/deps/spiral_builder-927a7b57474f2564) running 1 test test module_7e2cd9e0::Spiral_builder::verify_app ... ok successes: successes: module_7e2cd9e0::Spiral_builder::verify_app test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Compiling spiral_builder v0.0.1 (/home/runner/work/polyglot/polyglot/apps/spiral/builder) Finished `release` profile [optimized] target(s) in 20.88s
In [ ]:
{ pwsh ../apps/parser/build.ps1 } | Invoke-Block
00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "DibParser.dib"])) } 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ "repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb", ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ # DibParser (Polyglot) │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > dard2.1/FSharp.Control.AsyncSeq.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > 0/System.Reactive.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > netstandard2.0/System.Reactive.Linq.dll" > #r > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > #r > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > arsec.dll" > #r > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > arsecCS.dll" > > ── pwsh ──────────────────────────────────────────────────────────────────────── > ls ~/.nuget/packages/argu > > ╭─[ 235.83ms - stdout ]────────────────────────────────────────────────────────╮ > │ 6.2.4 │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if !INTERACTIVE > open Lib > #endif > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Common > open FParsec > open SpiralFileSystem.Operators > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## escapeCell (test) │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let inline escapeCell input = > input > |> SpiralSm.split "\n" > |> Array.map (function > | line when line |> SpiralSm.starts_with "\\#!" || line |> > SpiralSm.starts_with "\\#r" -> > System.Text.RegularExpressions.Regex.Replace (line, "^\\\\#", "#") > | line -> line > ) > |> SpiralSm.concat "\n" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > $"a{nl}\\#!magic{nl}b{nl}" > |> escapeCell > |> _assertEqual ( > $"a{nl}#!magic{nl}b{nl}" > ) > > ╭─[ 40.58ms - stdout ]─────────────────────────────────────────────────────────╮ > │ "a │ > │ #!magic │ > │ b │ > │ " │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## magicMarker │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let magicMarker : Parser<string, unit> = pstring "#!" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "#!magic" > |> run magicMarker > |> _assertEqual ( > Success ("#!", (), Position ("", 2, 1, 3)) > ) > > ╭─[ 54.09ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success: "#!" │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "##!magic" > |> run magicMarker > |> _assertEqual ( > Failure ( > $"Error in Ln: 1 Col: 1{nl}##!magic{nl}^{nl}Expecting: '#!'{nl}", > ParserError ( > Position ("", 0, 1, 1), > (), > ErrorMessageList (ExpectedString "#!") > ), > () > ) > ) > > ╭─[ 23.52ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Failure: │ > │ Error in Ln: 1 Col: 1 │ > │ ##!magic │ > │ ^ │ > │ Expecting: '#!' │ > │ │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## magicCommand │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let magicCommand = > magicMarker > >>. manyTill anyChar newline > |>> (System.String.Concat >> SpiralSm.trim) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "#!magic > > a" > |> run magicCommand > |> _assertEqual ( > Success ("magic", (), Position ("", 8, 2, 1)) > ) > > ╭─[ 14.68ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success: "magic" │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > " #!magic > > a" > |> run magicCommand > |> _assertEqual ( > Failure ( > $"Error in Ln: 1 Col: 1{nl} #!magic{nl}^{nl}Expecting: '#!'{nl}", > ParserError ( > Position ("", 0, 1, 1), > (), > ErrorMessageList (ExpectedString "#!") > ), > () > ) > ) > > ╭─[ 14.12ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Failure: │ > │ Error in Ln: 1 Col: 1 │ > │ #!magic │ > │ ^ │ > │ Expecting: '#!' │ > │ │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## content │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let content = > (newline >>. magicMarker) <|> (eof >>. preturn "") > |> attempt > |> lookAhead > |> manyTill anyChar > |>> (System.String.Concat >> SpiralSm.trim) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "#!magic > > > a > > > " > |> run content > |> _assertEqual ( > Success ("#!magic > > > a", (), Position ("", 14, 7, 1)) > ) > > ╭─[ 12.94ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success: "#!magic │ > │ │ > │ │ > │ a" │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## Output │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Output = > | Fs > | Md > | Spi > | Spir > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## Magic │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Magic = > | Fsharp > | Markdown > | Spiral of Output > | Magic of string > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## kernelOutputs │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline kernelOutputs magic = > match magic with > | Fsharp -> [[ Fs ]] > | Markdown -> [[ Md ]] > | Spiral output -> [[ output ]] > | _ -> [[]] > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## Block │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Block = > { > magic : Magic > content : string > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## block │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let block = > pipe2 > magicCommand > content > (fun magic content -> > let magic, content = > match magic with > | "fsharp" -> Fsharp, content > | "markdown" -> Markdown, content > | "spiral" -> > let output = if content |> SpiralSm.contains "//// real\n" > then Spir else Spi > let content = > if output = Spi > then content > else > content > |> SpiralSm.replace "//// real\n\n" "" > |> SpiralSm.replace "//// real\n" "" > Spiral output, content > | magic -> magic |> Magic, content > { > magic = magic > content = content > }) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "#!magic > > > a > > > " > |> run block > |> _assertEqual ( > Success ( > { magic = Magic "magic"; content = "a" }, > (), > Position ("", 14, 7, 1) > ) > ) > > ╭─[ 23.31ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success: { magic = Magic "magic" │ > │ content = "a" } │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## blocks │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let blocks = > skipMany newline > >>. sepEndBy block (skipMany1 newline) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > > "#!magic1 > > a > > \#!magic2 > > b > > " > |> escapeCell > |> run blocks > |> _assertEqual ( > Success ( > [[ > { magic = Magic "magic1"; content = "a" } > { magic = Magic "magic2"; content = "b" } > ]], > (), > Position ("", 26, 9, 1) > ) > ) > > ╭─[ 22.89ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success: [{ magic = Magic "magic1" │ > │ content = "a" }; { magic = Magic "magic2" │ > │ content = "b" }] │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## formatBlock │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline formatBlock output (block : Block) = > match output, block with > | output, { magic = Markdown; content = content } -> > let markdownComment = > match output with > | Spi | Spir -> "/// " > | Fs -> "/// " > | _ -> "" > content > |> SpiralSm.split "\n" > |> Array.map (SpiralSm.trim_end [[||]]) > |> Array.filter (SpiralSm.ends_with " (test)" >> not) > |> Array.map (function > | "" -> markdownComment > | line -> System.Text.RegularExpressions.Regex.Replace (line, > "^\\s*", $"$&{markdownComment}") > ) > |> SpiralSm.concat "\n" > | Fs, { magic = Fsharp; content = content } -> > let trimmedContent = content |> SpiralSm.trim > if trimmedContent |> SpiralSm.contains "//// test\n" > || trimmedContent |> SpiralSm.contains "//// ignore\n" > then "" > else > content > |> SpiralSm.split "\n" > |> Array.filter (SpiralSm.trim_start [[||]] >> SpiralSm.starts_with > "#r" >> not) > |> SpiralSm.concat "\n" > | (Spi | Spir), { magic = Spiral output'; content = content } when output' = > output -> > let trimmedContent = content |> SpiralSm.trim > if trimmedContent |> SpiralSm.contains "//// test\n" > || trimmedContent |> SpiralSm.contains "//// ignore\n" > then "" > else content > | _ -> "" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "#!markdown > > > a > > b > > c > > > \#!markdown > > > c > > > \#!fsharp > > > let a = 1" > |> escapeCell > |> run block > |> function > | Success (block, _, _) -> formatBlock Fs block > | Failure (msg, _, _) -> failwith msg > |> _assertEqual "/// a > /// > /// b > /// > /// c" > > ╭─[ 29.85ms - stdout ]─────────────────────────────────────────────────────────╮ > │ "/// a │ > │ /// │ > │ /// b │ > │ /// │ > │ /// c" │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## formatBlocks │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline formatBlocks output blocks = > blocks > |> List.map (fun block -> > block, formatBlock output block > ) > |> List.filter (snd >> (<>) "") > |> fun list -> > (list, (None, [[]])) > ||> List.foldBack (fun (block, content) (lastMagic, acc) -> > let lineBreak = > if block.magic = Markdown && lastMagic <> Some Markdown && > lastMagic <> None > then "" > else "\n" > Some block.magic, $"{content}{lineBreak}" :: acc > ) > |> snd > |> SpiralSm.concat "\n" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "#!markdown > > > a > > b > > > \#!markdown > > > c > > > \#!fsharp > > > let a = 1 > > \#!markdown > > d (test) > > \#!fsharp > > //// test > > let a = 2 > > \#!markdown > > e > > \#!fsharp > > let a = 3" > |> escapeCell > |> run blocks > |> function > | Success (blocks, _, _) -> formatBlocks Fs blocks > | Failure (msg, _, _) -> failwith msg > |> _assertEqual "/// a > /// > /// b > > /// c > let a = 1 > > /// e > let a = 3 > " > > ╭─[ 36.19ms - stdout ]─────────────────────────────────────────────────────────╮ > │ "/// a │ > │ /// │ > │ /// b │ > │ │ > │ /// c │ > │ let a = 1 │ > │ │ > │ /// e │ > │ let a = 3 │ > │ " │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## parse │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline parse output input = > match run blocks input with > | Success (blocks, _, _) -> > let blocks = > blocks > |> List.filter (fun block -> > block.magic |> kernelOutputs |> List.contains output || > block.magic = Markdown > ) > > match blocks with > | { magic = Markdown; content = content } :: _ > when output = Fs > && content |> SpiralSm.starts_with "# " > && content |> SpiralSm.ends_with ")" > -> > let inline indentBlock (block : Block) = > { block with > content = > block.content > |> SpiralSm.split "\n" > |> Array.fold > (fun (lines, isMultiline) line -> > let trimmedLine = line |> SpiralSm.trim > if trimmedLine = "" > then "" :: lines, isMultiline > else > let inline singleQuoteLine () = > trimmedLine |> Seq.sumBy ((=) '"' >> > System.Convert.ToInt32) = 1 > && trimmedLine |> SpiralSm.contains > @"'""'" |> not > && trimmedLine |> SpiralSm.ends_with "{" > |> not > && trimmedLine |> SpiralSm.ends_with > "{|" |> not > && trimmedLine |> SpiralSm.starts_with > "}" |> not > && trimmedLine |> SpiralSm.starts_with > "|}" |> not > > match isMultiline, trimmedLine |> > SpiralSm.split_string [[| $"{q}{q}{q}" |]] with > | false, [[| _; _ |]] -> > $" {line}" :: lines, true > > | true, [[| _; _ |]] -> > line :: lines, false > > | false, _ when singleQuoteLine () -> > $" {line}" :: lines, true > > | false, _ when line |> SpiralSm.starts_with > "#" && block.magic = Fsharp -> > line :: lines, false > > | false, _ -> > $" {line}" :: lines, false > > | true, _ when singleQuoteLine () && line |> > SpiralSm.starts_with " " -> > $" {line}" :: lines, false > > | true, _ when singleQuoteLine () -> > line :: lines, false > > | true, _ -> > line :: lines, true > ) > ([[]], false) > |> fst > |> List.rev > |> SpiralSm.concat "\n" > } > > let moduleName, namespaceName = > System.Text.RegularExpressions.Regex.Match (content, @"# (.*) > \((.*)\)$") > |> fun m -> m.Groups.[[1]].Value, m.Groups.[[2]].Value > > let moduleBlock = > { > magic = Fsharp > content = > $"#if !INTERACTIVE > namespace {namespaceName} > #endif > > module {moduleName} =" > } > > blocks > |> List.indexed > |> List.fold > (fun blocks (index, block) -> > match index with > | 0 -> blocks > | 1 -> indentBlock block :: moduleBlock :: blocks > | _ -> indentBlock block :: blocks > ) > [[]] > |> List.rev > | _ -> blocks > |> Result.Ok > | Failure (errorMsg, _, _) -> Result.Error errorMsg > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let example1 = > $"""#!meta > > {{"kernelInfo":{{"defaultKernelName":"fsharp","items":[[{{"aliases":[[]],"name": > "fsharp"}},{{"aliases":[[]],"name":"fsharp"}}]]}}}} > > \#!markdown > > # TestModule (TestNamespace) > > \#!fsharp > > \#!import file.dib > > \#!fsharp > > \#r "nuget:Expecto" > > \#!markdown > > ## ParserLibrary > > \#!fsharp > > open System > > \#!markdown > > ## x (test) > > \#!fsharp > > //// ignore > > let x = 1 > > \#!spiral > > //// test > > inl x = 1i32 > > \#!spiral > > //// real > > inl x = 2i32 > > \#!spiral > > inl x = 3i32 > > \#!markdown > > ### TextInput > > \#!fsharp > > let str1 = "abc > def" > > let str2 = > "abc\ > def" > > let str3 = > $"1{{ > 1 > }}1" > > let str4 = > $"1{{({{| > a = 1 > |}}).a}}1" > > let str5 = > "abc \ > def" > > let x = > match '"' with > | '"' -> true > | _ -> false > > let long1 = {q}{q}{q}a{q}{q}{q} > > let long2 = > {q}{q}{q} > a > {q}{q}{q} > > \#!fsharp > > type Position = > {{ > #if INTERACTIVE > line : string > #else > line : int > #endif > column : int > }}""" > |> escapeCell > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > example1 > |> parse Fs > |> Result.toOption > |> Option.get > |> (formatBlocks Fs) > |> _assertEqual $"""#if !INTERACTIVE > namespace TestNamespace > #endif > > module TestModule = > > /// ## ParserLibrary > open System > > /// ### TextInput > let str1 = "abc > def" > > let str2 = > "abc\ > def" > > let str3 = > $"1{{ > 1 > }}1" > > let str4 = > $"1{{({{| > a = 1 > |}}).a}}1" > > let str5 = > "abc \ > def" > > let x = > match '"' with > | '"' -> true > | _ -> false > > let long1 = {q}{q}{q}a{q}{q}{q} > > let long2 = > {q}{q}{q} > a > {q}{q}{q} > > type Position = > {{ > #if INTERACTIVE > line : string > #else > line : int > #endif > column : int > }} > """ > > ╭─[ 92.19ms - stdout ]─────────────────────────────────────────────────────────╮ > │ "#if !INTERACTIVE │ > │ namespace TestNamespace │ > │ #endif │ > │ │ > │ module TestModule = │ > │ │ > │ /// ## ParserLibrary │ > │ open System │ > │ │ > │ /// ### TextInput │ > │ let str1 = "abc │ > │ def" │ > │ │ > │ let str2 = │ > │ "abc\ │ > │ def" │ > │ │ > │ let str3 = │ > │ $"1{ │ > │ 1 │ > │ }1" │ > │ │ > │ let str4 = │ > │ $"1{({| │ > │ a = 1 │ > │ |}).a}1" │ > │ │ > │ let str5 = │ > │ "abc \ │ > │ def" │ > │ │ > │ let x = │ > │ match '"' with │ > │ | '"' -> true │ > │ | _ -> false │ > │ │ > │ let long1 = """a""" │ > │ │ > │ let long2 = │ > │ """ │ > │ a │ > │ """ │ > │ │ > │ type Position = │ > │ { │ > │ #if INTERACTIVE │ > │ line : string │ > │ #else │ > │ line : int │ > │ #endif │ > │ column : int │ > │ } │ > │ " │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > example1 > |> parse Md > |> Result.toOption > |> Option.get > |> (formatBlocks Md) > |> _assertEqual "# TestModule (TestNamespace) > > ## ParserLibrary > > ### TextInput > " > > ╭─[ 81.46ms - stdout ]─────────────────────────────────────────────────────────╮ > │ "# TestModule (TestNamespace) │ > │ │ > │ ## ParserLibrary │ > │ │ > │ ### TextInput │ > │ " │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > example1 > |> parse Spi > |> Result.toOption > |> Option.get > |> (formatBlocks Spi) > |> _assertEqual "/// # TestModule (TestNamespace) > > /// ## ParserLibrary > inl x = 3i32 > > /// ### TextInput > " > > ╭─[ 83.15ms - stdout ]─────────────────────────────────────────────────────────╮ > │ "/// # TestModule (TestNamespace) │ > │ │ > │ /// ## ParserLibrary │ > │ inl x = 3i32 │ > │ │ > │ /// ### TextInput │ > │ " │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > example1 > |> parse Spir > |> Result.toOption > |> Option.get > |> (formatBlocks Spir) > |> _assertEqual "/// # TestModule (TestNamespace) > > /// ## ParserLibrary > inl x = 2i32 > > /// ### TextInput > " > > ╭─[ 106.51ms - stdout ]────────────────────────────────────────────────────────╮ > │ "/// # TestModule (TestNamespace) │ > │ │ > │ /// ## ParserLibrary │ > │ inl x = 2i32 │ > │ │ > │ /// ### TextInput │ > │ " │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## parseDibCode │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline parseDibCode output file = async { > trace Debug > (fun () -> "parseDibCode") > (fun () -> $"output: {output} / file: {file} / {_locals ()}") > let! input = file |> SpiralFileSystem.read_all_text_async > match parse output input with > | Result.Ok blocks -> return blocks |> formatBlocks output > | Result.Error msg -> return failwith msg > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## writeDibCode │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline writeDibCode output path = async { > trace Debug > (fun () -> "writeDibCode") > (fun () -> $"output: {output} / path: {path} / {_locals ()}") > let! result = parseDibCode output path > let pathDir = path |> System.IO.Path.GetDirectoryName > let fileNameWithoutExt = > match output, path |> System.IO.Path.GetFileNameWithoutExtension with > | Spir, fileNameWithoutExt -> $"real_{fileNameWithoutExt}" > | _, fileNameWithoutExt -> fileNameWithoutExt > let outputPath = pathDir </> $"{fileNameWithoutExt}.{output |> string |> > SpiralSm.to_lower}" > do! result |> SpiralFileSystem.write_all_text_async outputPath > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## Arguments │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > [[<RequireQualifiedAccess>]] > type Arguments = > | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.Mandatory>]] > File of file : string * Output > > interface Argu.IArgParserTemplate with > member s.Usage = > match s with > | File _ -> nameof File > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > Argu.ArgumentParser.Create<Arguments>().PrintUsage () > > ╭─[ 68.15ms - return value ]───────────────────────────────────────────────────╮ > │ "USAGE: dotnet-repl [--help] <file> <fs|md|spi|spir> │ > │ │ > │ FILE: │ > │ │ > │ <file> <fs|md|spi|spir> │ > │ File │ > │ │ > │ OPTIONS: │ > │ │ > │ --help display this list of options. │ > │ " │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## main │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let main args = > let argsMap = args |> Runtime.parseArgsMap<Arguments> > > let files = > argsMap.[[nameof Arguments.File]] > |> List.map (function > | Arguments.File (path, output) -> path, output > ) > > files > |> List.map (fun (path, output) -> path |> writeDibCode output) > |> Async.Parallel > |> Async.Ignore > |> Async.runWithTimeout 30000 > |> function > | Some () -> 0 > | None -> 1 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let args = > System.Environment.GetEnvironmentVariable "ARGS" > |> SpiralRuntime.split_args > |> Result.toArray > |> Array.collect id > > match args with > | [[||]] -> 0 > | args -> if main args = 0 then 0 else failwith "main failed" > > ╭─[ 126.46ms - return value ]──────────────────────────────────────────────────╮ > │ <div class="dni-plaintext"><pre>0 │ > │ </pre></div><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 127.80ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:03 debug #1 writeDibCode / output: Fs / path: DibParser.dib │ > │ 00:00:03 debug #2 parseDibCode / output: Fs / file: DibParser.dib │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 50285 } 00:00:16 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ "nbconvert", "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark", ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:17 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb to html 00:00:17 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:17 verbose #7 ! validate(nb) 00:00:18 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:18 verbose #9 ! return _pygments_highlight( 00:00:18 verbose #10 ! [NbConvertApp] Writing 377326 bytes to /home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.html 00:00:18 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 904 } 00:00:18 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 904 } 00:00:18 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ "-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:18 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:18 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:18 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 51248 } 00:00:00 debug #1 persistCodeProject / packages: [Argu; FParsec; FSharp.Control.AsyncSeq; ... ] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: DibParser / hash: / code.Length: 10861 00:00:00 debug #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj 00:00:00 debug #1 runtime.execute_with_options_async / { options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/parser/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/DibParser" } } 00:00:00 verbose #2 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET 00:00:00 verbose #3 > Determining projects to restore... 00:00:01 verbose #4 > Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b 00:00:01 verbose #5 > The last full restore is still up to date. Nothing left to do. 00:00:01 verbose #6 > Total time taken: 0 milliseconds 00:00:01 verbose #7 > Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b 00:00:01 verbose #8 > Restoring /home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj 00:00:01 verbose #9 > Starting restore process. 00:00:02 verbose #10 > Total time taken: 0 milliseconds 00:00:02 verbose #11 > Restored /home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj (in 311 ms). 00:00:02 verbose #12 > /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [/home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj] 00:00:12 verbose #13 > DibParser -> /home/runner/work/polyglot/polyglot/target/Builder/DibParser/bin/Release/net9.0/linux-x64/DibParser.dll 00:00:12 verbose #14 > DibParser -> /home/runner/work/polyglot/polyglot/apps/parser/dist 00:00:12 debug #15 runtime.execute_with_options_async / { exit_code = 0; output_length = 1102 } 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "JsonParser.dib"])) } 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ "repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb", ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ # JsonParser (Polyglot) │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Common > open Parser > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## JsonParser │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > (* > // -------------------------------- > JSON spec from http://www.json.org/ > // -------------------------------- > > The JSON spec is available at [[json.org]](http://www.json.org/). I'll paraphase > it here: > > * A `value` can be a `string` or a `number` or a `bool` or `null` or an `object` > or an `array`. > * These structures can be nested. > * A `string` is a sequence of zero or more Unicode characters, wrapped in double > quotes, using backslash escapes. > * A `number` is very much like a C or Java number, except that the octal and > hexadecimal formats are not used. > * A `boolean` is the literal `true` or `false` > * A `null` is the literal `null` > * An `object` is an unordered set of name/value pairs. > * An object begins with { (left brace) and ends with } (right brace). > * Each name is followed by : (colon) and the name/value pairs are separated by > , (comma). > * An `array` is an ordered collection of values. > * An array begins with [[ (left bracket) and ends with ]] (right bracket). > * Values are separated by , (comma). > * Whitespace can be inserted between any pair of tokens. > *) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let inline parserEqual (expected : ParseResult<'a>) (actual : ParseResult<'a * > Input>) = > match actual, expected with > | Success (_actual, _), Success _expected -> > printResult actual > _actual |> _assertEqual _expected > | Failure (l1, e1, p1), Failure (l2, e2, p2) when l1 = l2 && e1 = e2 && p1 = > p2 -> > printResult actual > | _ -> > printfn $"Actual: {actual}" > printfn $"Expected: {expected}" > failwith "Parse failed" > actual > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### JValue │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type JValue = > | JString of string > | JNumber of float > | JBool of bool > | JNull > | JObject of Map<string, JValue> > | JArray of JValue list > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jValue, jValueRef = createParserForwardedToRef<JValue> () > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### jNull │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jNull = > pstring "null" > >>% JNull > <?> "null" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > jValueRef <| > choice > [[ > jNull > ]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jValue "null" > |> parserEqual (Success JNull) > > ╭─[ 163.27ms - return value ]──────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JNull, { lines = [ │ > │ |"null"|]<br /> position = { line = 0<br /> │ > │ column = 4 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JNull, { lines = [|"null"|]<br /> │ > │ position = { line = 0<br /> column = 4 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNull</code></span></summary><div><table><thead> │ > │ <tr></tr></thead><tbody><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"null"|]<br /> position = │ > │ { line = 0<br /> column = 4 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ null │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 4 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>4 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 169.70ms - stdout ]────────────────────────────────────────────────────────╮ > │ JNull │ > │ JNull │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNull "nulp" > |> parserEqual ( > Failure ( > "null", > "Unexpected 'p'", > { currentLine = "nulp"; line = 0; column = 3 } > ) > ) > > ╭─[ 35.86ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Failure ("null", "Unexpected │ > │ 'p'", { currentLine = "nulp"<br /> │ > │ line = 0<br /> column = 3 │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>"null" │ > │ </pre></div></td></tr><tr><td>Item2</td><td><div │ > │ class="dni-plaintext"><pre>"Unexpected 'p'" │ > │ </pre></div></td></tr><tr><td>Item3</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ │ > │ currentLine = "nulp"<br /> line = 0<br /> column = 3 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ currentLine</td><td><div class="dni-plaintext"><pre>"nulp" │ > │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>3 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │ > │ ccess</td><td><div class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 37.98ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Line:0 Col:3 Error parsing null │ > │ nulp │ > │ ^Unexpected 'p' │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### jBool │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jBool = > let jtrue = > pstring "true" > >>% JBool true > let jfalse = > pstring "false" > >>% JBool false > > jtrue <|> jfalse > <?> "bool" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > jValueRef <| > choice > [[ > jNull > jBool > ]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jBool "true" > |> parserEqual (Success (JBool true)) > > ╭─[ 30.04ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JBool true, { lines = [ │ > │ |"true"|]<br /> position = { line = 0<br /> │ > │ column = 4 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JBool true, { lines = [|"true"|]<br │ > │ /> position = { line = 0<br /> column = 4 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JBool │ > │ true</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr>< │ > │ td>Item</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"true"|]<br /> position = │ > │ { line = 0<br /> column = 4 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ true │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 4 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>4 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 33.52ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JBool true │ > │ JBool true │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jBool "false" > |> parserEqual (Success (JBool false)) > > ╭─[ 22.86ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JBool false, { lines = [ │ > │ |"false"|]<br /> position = { line = 0<br │ > │ /> column = 5 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JBool false, { lines = [|"false"|]<br │ > │ /> position = { line = 0<br /> column = 5 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JBool │ > │ false</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr> │ > │ <td>Item</td><td><div class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"false"|]<br /> position │ > │ = { line = 0<br /> column = 5 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ false │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 5 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>5 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 26.18ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JBool false │ > │ JBool false │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jBool "truX" > |> parserEqual ( > Failure ( > "bool", > "Unexpected 't'", > { currentLine = "truX"; line = 0; column = 0 } > ) > ) > > ╭─[ 17.97ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Failure ("bool", "Unexpected │ > │ 't'", { currentLine = "truX"<br /> │ > │ line = 0<br /> column = 0 │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>"bool" │ > │ </pre></div></td></tr><tr><td>Item2</td><td><div │ > │ class="dni-plaintext"><pre>"Unexpected 't'" │ > │ </pre></div></td></tr><tr><td>Item3</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ │ > │ currentLine = "truX"<br /> line = 0<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ currentLine</td><td><div class="dni-plaintext"><pre>"truX" │ > │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │ > │ ccess</td><td><div class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 20.23ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Line:0 Col:0 Error parsing bool │ > │ truX │ > │ ^Unexpected 't' │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### jUnescapedChar │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jUnescapedChar = > satisfy (fun ch -> ch <> '\\' && ch <> '\"') "char" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jUnescapedChar "a" > |> parserEqual (Success 'a') > > ╭─[ 34.78ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success ('a', { lines = [ │ > │ |"a"|]<br /> position = { line = 0<br /> │ > │ column = 1 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(a, { lines = [|"a"|]<br /> position │ > │ = { line = 0<br /> column = 1 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>'a' │ > │ </pre></div></td></tr><tr><td>Item2</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [ │ > │ |"a"|]<br /> position = { line = 0<br /> column = 1 │ > │ } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ a │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 1 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>1 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 37.86ms - stdout ]─────────────────────────────────────────────────────────╮ > │ 'a' │ > │ 'a' │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jUnescapedChar "\\" > |> parserEqual ( > Failure ( > "char", > "Unexpected '\\'", > { currentLine = "\\"; line = 0; column = 0 } > ) > ) > > ╭─[ 25.44ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Failure ("char", "Unexpected │ > │ '\'", { currentLine = "\"<br /> │ > │ line = 0<br /> column = 0 │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>"char" │ > │ </pre></div></td></tr><tr><td>Item2</td><td><div │ > │ class="dni-plaintext"><pre>"Unexpected '\'" │ > │ </pre></div></td></tr><tr><td>Item3</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ │ > │ currentLine = "\"<br /> line = 0<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ currentLine</td><td><div class="dni-plaintext"><pre>"\" │ > │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │ > │ ccess</td><td><div class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 27.90ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Line:0 Col:0 Error parsing char │ > │ \ │ > │ ^Unexpected '\' │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### jEscapedChar │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jEscapedChar = > [[ > ("\\\"",'\"') > ("\\\\",'\\') > ("\\/",'/') > ("\\b",'\b') > ("\\f",'\f') > ("\\n",'\n') > ("\\r",'\r') > ("\\t",'\t') > ]] > |> List.map (fun (toMatch, result) -> > pstring toMatch >>% result > ) > |> choice > <?> "escaped char" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jEscapedChar "\\\\" > |> parserEqual (Success '\\') > > ╭─[ 23.01ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success ('\\', { lines = [ │ > │ |"\\"|]<br /> position = { line = 0<br /> │ > │ column = 2 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(\, { lines = [|"\\"|]<br /> position │ > │ = { line = 0<br /> column = 2 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>'\\' │ > │ </pre></div></td></tr><tr><td>Item2</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [ │ > │ |"\\"|]<br /> position = { line = 0<br /> column = │ > │ 2 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ \\ │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 2 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>2 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 25.87ms - stdout ]─────────────────────────────────────────────────────────╮ > │ '\\' │ > │ '\\' │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jEscapedChar "\\t" > |> parserEqual (Success '\t') > > ╭─[ 19.61ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success ('\009', { lines = [ │ > │ |"\t"|]<br /> position = { line = 0<br /> │ > │ column = 2 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>( , { lines = [|"\t"|]<br /> position = │ > │ { line = 0<br /> column = 2 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>'\009' │ > │ </pre></div></td></tr><tr><td>Item2</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [ │ > │ |"\t"|]<br /> position = { line = 0<br /> column = │ > │ 2 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ \t │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 2 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>2 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 22.40ms - stdout ]─────────────────────────────────────────────────────────╮ > │ '\009' │ > │ '\009' │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jEscapedChar @"\\" > |> parserEqual (Success '\\') > > ╭─[ 45.31ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success ('\\', { lines = [ │ > │ |"\\"|]<br /> position = { line = 0<br /> │ > │ column = 2 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(\, { lines = [|"\\"|]<br /> position │ > │ = { line = 0<br /> column = 2 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>'\\' │ > │ </pre></div></td></tr><tr><td>Item2</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [ │ > │ |"\\"|]<br /> position = { line = 0<br /> column = │ > │ 2 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ \\ │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 2 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>2 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 48.27ms - stdout ]─────────────────────────────────────────────────────────╮ > │ '\\' │ > │ '\\' │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jEscapedChar @"\n" > |> parserEqual (Success '\n') > > ╭─[ 20.58ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success ('\010', { lines = [|"<br │ > │ />"|]<br /> position = { line = 0<br /> │ > │ column = 2 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(<br />, { lines = [|"<br />"|]<br /> │ > │ position = { line = 0<br /> column = 2 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>'\010' │ > │ </pre></div></td></tr><tr><td>Item2</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [ │ > │ |"<br />"|]<br /> position = { line = 0<br /> │ > │ column = 2 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ <br /> │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 2 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>2 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 23.62ms - stdout ]─────────────────────────────────────────────────────────╮ > │ '\010' │ > │ '\010' │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jEscapedChar "a" > |> parserEqual ( > Failure ( > "escaped char", > "Unexpected 'a'", > { currentLine = "a"; line = 0; column = 0 } > ) > ) > > ╭─[ 18.24ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Failure ("escaped char", │ > │ "Unexpected 'a'", { currentLine = "a"<br /> │ > │ line = 0<br /> column = 0 │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>"escaped char" │ > │ </pre></div></td></tr><tr><td>Item2</td><td><div │ > │ class="dni-plaintext"><pre>"Unexpected 'a'" │ > │ </pre></div></td></tr><tr><td>Item3</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ │ > │ currentLine = "a"<br /> line = 0<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ currentLine</td><td><div class="dni-plaintext"><pre>"a" │ > │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │ > │ ccess</td><td><div class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 20.42ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Line:0 Col:0 Error parsing escaped char │ > │ a │ > │ ^Unexpected 'a' │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### jUnicodeChar │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jUnicodeChar = > let backslash = pchar '\\' > let uChar = pchar 'u' > let hexdigit = anyOf ([[ '0' .. '9' ]] @ [[ 'A' .. 'F' ]] @ [[ 'a' .. 'f' > ]]) > let fourHexDigits = hexdigit .>>. hexdigit .>>. hexdigit .>>. hexdigit > > let inline convertToChar (((h1, h2), h3), h4) = > let str = $"%c{h1}%c{h2}%c{h3}%c{h4}" > Int32.Parse (str, Globalization.NumberStyles.HexNumber) |> char > > backslash >>. uChar >>. fourHexDigits > |>> convertToChar > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jUnicodeChar "\\u263A" > |> parserEqual (Success '☺') > > ╭─[ 28.00ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success ('☺', { lines = [ │ > │ |"\u263A"|]<br /> position = { line = 0<br /> │ > │ column = 6 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(☺, { lines = [|"\u263A"|]<br /> │ > │ position = { line = 0<br /> column = 6 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>'☺' │ > │ </pre></div></td></tr><tr><td>Item2</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [ │ > │ |"\u263A"|]<br /> position = { line = 0<br /> │ > │ column = 6 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ \u263A │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 6 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>6 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 31.05ms - stdout ]─────────────────────────────────────────────────────────╮ > │ '☺' │ > │ '☺' │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### jString │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let quotedString = > let quote = pchar '\"' <?> "quote" > let jchar = jUnescapedChar <|> jEscapedChar <|> jUnicodeChar > > quote >>. manyChars jchar .>> quote > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jString = > quotedString > |>> JString > <?> "quoted string" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > jValueRef <| > choice > [[ > jNull > jBool > jString > ]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jString "\"\"" > |> parserEqual (Success (JString "")) > > ╭─[ 30.35ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JString "", { lines = [ │ > │ |""""|]<br /> position = { line = │ > │ 0<br /> column = 2 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JString "", { lines = [ │ > │ |""""|]<br /> position = { line = 0<br /> │ > │ column = 2 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JString │ > │ ""</code></span></summary><div><table><thead><tr></tr></thead><tbo │ > │ dy><tr><td>Item</td><td><div class="dni-plaintext"><pre>"" │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|""""|]<br /> │ > │ position = { line = 0<br /> column = 2 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ "" │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 2 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>2 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 34.17ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JString "" │ > │ JString "" │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jString "\"a\"" > |> parserEqual (Success (JString "a")) > > ╭─[ 21.23ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JString "a", { lines = [ │ > │ |""a""|]<br /> position = { line │ > │ = 0<br /> column = 3 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JString "a", { lines = [ │ > │ |""a""|]<br /> position = { line = 0<br /> │ > │ column = 3 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JString │ > │ "a"</code></span></summary><div><table><thead><tr></tr></thead><tb │ > │ ody><tr><td>Item</td><td><div class="dni-plaintext"><pre>"a" │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|""a""|]<br /> │ > │ position = { line = 0<br /> column = 3 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ "a" │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 3 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>3 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 24.64ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JString "a" │ > │ JString "a" │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jString "\"ab\"" > |> parserEqual (Success (JString "ab")) > > ╭─[ 20.49ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JString "ab", { lines = [ │ > │ |""ab""|]<br /> position = { │ > │ line = 0<br /> column = 4 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JString "ab", { lines = [ │ > │ |""ab""|]<br /> position = { line = 0<br /> │ > │ column = 4 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JString │ > │ "ab"</code></span></summary><div><table><thead><tr></tr></thead><t │ > │ body><tr><td>Item</td><td><div class="dni-plaintext"><pre>"ab" │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|""ab""|]<br /> │ > │ position = { line = 0<br /> column = 4 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ "ab" │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 4 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>4 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 23.78ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JString "ab" │ > │ JString "ab" │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jString "\"ab\\tde\"" > |> parserEqual (Success (JString "ab\tde")) > > ╭─[ 21.53ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JString "ab de", { lines = [ │ > │ |""ab\tde""|]<br /> position │ > │ = { line = 0<br /> column = 8 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JString "ab de", { lines = [ │ > │ |""ab\tde""|]<br /> position = { line = 0<br /> │ > │ column = 8 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JString "ab │ > │ de"</code></span></summary><div><table><thead><tr></tr></thead><tbody>< │ > │ tr><td>Item</td><td><div class="dni-plaintext"><pre>"ab de" │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><t...ni-treeview"><summary><span class="dni-code-hint"><code>{ lines = │ > │ [|""ab\tde""|]<br /> position = { line = 0<br /> │ > │ column = 8 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ "ab\tde" │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 8 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>8 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 25.35ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JString "ab de" │ > │ JString "ab de" │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jString "\"ab\\u263Ade\"" > |> parserEqual (Success (JString "ab☺de")) > > ╭─[ 21.90ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JString "ab☺de", { lines = [ │ > │ |""ab\u263Ade""|]<br /> │ > │ position = { line = 0<br /> column = │ > │ 12 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JString "ab☺de", { lines = [ │ > │ |""ab\u263Ade""|]<br /> position = { line = 0<br /> │ > │ column = 12 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JString │ > │ "ab☺de"</code></span></summary><div><table><thead><tr></tr></thead │ > │ ><tbody><tr><td>Item</td><td><div │ > │ class="dni-plaintext"><pre>"ab☺de" │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>It.. │ > │ ."><summary><span class="dni-code-hint"><code>{ lines = [ │ > │ |""ab\u263Ade""|]<br /> position = { line = 0<br /> │ > │ column = 12 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ "ab\u263Ade" │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 12 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>12 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 25.41ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JString "ab☺de" │ > │ JString "ab☺de" │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### jNumber │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jNumber = > let optSign = opt (pchar '-') > > let zero = pstring "0" > > let digitOneNine = > satisfy (fun ch -> Char.IsDigit ch && ch <> '0') "1-9" > > let digit = > satisfy Char.IsDigit "digit" > > let point = pchar '.' > > let e = pchar 'e' <|> pchar 'E' > > let optPlusMinus = opt (pchar '-' <|> pchar '+') > > let nonZeroInt = > digitOneNine .>>. manyChars digit > |>> fun (first, rest) -> string first + rest > > let intPart = zero <|> nonZeroInt > > let fractionPart = point >>. manyChars1 digit > > let exponentPart = e >>. optPlusMinus .>>. manyChars1 digit > > let inline (|>?) opt f = > match opt with > | None -> "" > | Some x -> f x > > let inline convertToJNumber (((optSign, intPart), fractionPart), expPart) = > let signStr = > optSign > |>? string > > let fractionPartStr = > fractionPart > |>? (fun digits -> "." + digits) > > let expPartStr = > expPart > |>? fun (optSign, digits) -> > let sign = optSign |>? string > "e" + sign + digits > > (signStr + intPart + fractionPartStr + expPartStr) > |> float > |> JNumber > > optSign .>>. intPart .>>. opt fractionPart .>>. opt exponentPart > |>> convertToJNumber > <?> "number" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > jValueRef <| > choice > [[ > jNull > jBool > jString > jNumber > ]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber "123" > |> parserEqual (Success (JNumber 123.0)) > > ╭─[ 37.78ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JNumber 123.0, { lines = [ │ > │ |"123"|]<br /> position = { line = 0<br │ > │ /> column = 3 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JNumber 123.0, { lines = [|"123"|]<br │ > │ /> position = { line = 0<br /> column = 3 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNumber │ > │ 123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr> │ > │ <td>Item</td><td><div class="dni-plaintext"><pre>123.0 │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"123"|]<br /> position = │ > │ { line = 0<br /> column = 3 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ 123 │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 3 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>3 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 40.97ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JNumber 123.0 │ > │ JNumber 123.0 │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber "-123" > |> parserEqual (Success (JNumber -123.0)) > > ╭─[ 22.87ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JNumber -123.0, { lines = [ │ > │ |"-123"|]<br /> position = { line = 0<br │ > │ /> column = 4 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JNumber -123.0, { lines = [ │ > │ |"-123"|]<br /> position = { line = 0<br /> column │ > │ = 4 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNumber │ > │ -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr │ > │ ><td>Item</td><td><div class="dni-plaintext"><pre>-123.0 │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"-123"|]<br /> position = │ > │ { line = 0<br /> column = 4 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ -123 │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 4 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>4 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 26.02ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JNumber -123.0 │ > │ JNumber -123.0 │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber "123.4" > |> parserEqual (Success (JNumber 123.4)) > > ╭─[ 22.73ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JNumber 123.4, { lines = [ │ > │ |"123.4"|]<br /> position = { line = 0<br │ > │ /> column = 5 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JNumber 123.4, { lines = [ │ > │ |"123.4"|]<br /> position = { line = 0<br /> column │ > │ = 5 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNumber │ > │ 123.4</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr> │ > │ <td>Item</td><td><div class="dni-plaintext"><pre>123.4 │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"123.4"|]<br /> position │ > │ = { line = 0<br /> column = 5 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ 123.4 │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 5 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>5 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 25.93ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JNumber 123.4 │ > │ JNumber 123.4 │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber "-123." > |> parserEqual (Success (JNumber -123.0)) > > ╭─[ 21.56ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JNumber -123.0, { lines = [ │ > │ |"-123."|]<br /> position = { line = │ > │ 0<br /> column = 4 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JNumber -123.0, { lines = [ │ > │ |"-123."|]<br /> position = { line = 0<br /> column │ > │ = 4 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNumber │ > │ -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr │ > │ ><td>Item</td><td><div class="dni-plaintext"><pre>-123.0 │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"-123."|]<br /> position │ > │ = { line = 0<br /> column = 4 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ -123. │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 4 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>4 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 24.67ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JNumber -123.0 │ > │ JNumber -123.0 │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber "00.1" > |> parserEqual (Success (JNumber 0.0)) > > ╭─[ 21.91ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JNumber 0.0, { lines = [ │ > │ |"00.1"|]<br /> position = { line = 0<br /> │ > │ column = 1 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JNumber 0.0, { lines = [|"00.1"|]<br │ > │ /> position = { line = 0<br /> column = 1 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNumber │ > │ 0.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><t │ > │ d>Item</td><td><div class="dni-plaintext"><pre>0.0 │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"00.1"|]<br /> position = │ > │ { line = 0<br /> column = 1 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ 00.1 │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 0<br /> column = 1 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>1 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 25.45ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JNumber 0.0 │ > │ JNumber 0.0 │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let jNumber_ = jNumber .>> spaces1 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "123" > |> parserEqual (Success (JNumber 123.0)) > > ╭─[ 23.71ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JNumber 123.0, { lines = [ │ > │ |"123"|]<br /> position = { line = 1<br │ > │ /> column = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JNumber 123.0, { lines = [|"123"|]<br │ > │ /> position = { line = 1<br /> column = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNumber │ > │ 123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr> │ > │ <td>Item</td><td><div class="dni-plaintext"><pre>123.0 │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"123"|]<br /> position = │ > │ { line = 1<br /> column = 0 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ 123 │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 1<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>1 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 26.87ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JNumber 123.0 │ > │ JNumber 123.0 │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "-123" > |> parserEqual (Success (JNumber -123.0)) > > ╭─[ 22.53ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JNumber -123.0, { lines = [ │ > │ |"-123"|]<br /> position = { line = 1<br │ > │ /> column = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JNumber -123.0, { lines = [ │ > │ |"-123"|]<br /> position = { line = 1<br /> column │ > │ = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNumber │ > │ -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr │ > │ ><td>Item</td><td><div class="dni-plaintext"><pre>-123.0 │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"-123"|]<br /> position = │ > │ { line = 1<br /> column = 0 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ -123 │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 1<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>1 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 26.09ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JNumber -123.0 │ > │ JNumber -123.0 │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "-123." > |> parserEqual ( > Failure ( > "number andThen many1 whitespace", > "Unexpected '.'", > { currentLine = "-123."; line = 0; column = 4 } > ) > ) > > ╭─[ 18.79ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Failure<br /> ("number andThen many1 │ > │ whitespace", "Unexpected '.'", { currentLine = │ > │ "-123."<br /> │ > │ line = 0<br /> │ > │ column = 4 │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>"number andThen many1 │ > │ whitespace" │ > │ </pre></div></td></tr><tr><td>Item2</td><td><div │ > │ class="dni-plaintext"><pre>"Unexpected '.'" │ > │ </pre></div></td></tr><tr><td>Item3</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ │ > │ currentLine = "-123."<br /> line = 0<br /> column = 4 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ currentLine</td><td><div class="dni-plaintext"><pre>"-123." │ > │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>4 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │ > │ ccess</td><td><div class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 20.90ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Line:0 Col:4 Error parsing number andThen many1 whitespace │ > │ -123. │ > │ ^Unexpected '.' │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "123.4" > |> parserEqual (Success (JNumber 123.4)) > > ╭─[ 21.75ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JNumber 123.4, { lines = [ │ > │ |"123.4"|]<br /> position = { line = 1<br │ > │ /> column = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JNumber 123.4, { lines = [ │ > │ |"123.4"|]<br /> position = { line = 1<br /> column │ > │ = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNumber │ > │ 123.4</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr> │ > │ <td>Item</td><td><div class="dni-plaintext"><pre>123.4 │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"123.4"|]<br /> position │ > │ = { line = 1<br /> column = 0 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ 123.4 │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 1<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>1 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 27.14ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JNumber 123.4 │ > │ JNumber 123.4 │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "00.4" > |> parserEqual ( > Failure ( > "number andThen many1 whitespace", > "Unexpected '0'", > { currentLine = "00.4"; line = 0; column = 1 } > ) > ) > > ╭─[ 18.96ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Failure<br /> ("number andThen many1 │ > │ whitespace", "Unexpected '0'", { currentLine = │ > │ "00.4"<br /> │ > │ line = 0<br /> │ > │ column = 1 │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>"number andThen many1 │ > │ whitespace" │ > │ </pre></div></td></tr><tr><td>Item2</td><td><div │ > │ class="dni-plaintext"><pre>"Unexpected '0'" │ > │ </pre></div></td></tr><tr><td>Item3</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ │ > │ currentLine = "00.4"<br /> line = 0<br /> column = 1 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ currentLine</td><td><div class="dni-plaintext"><pre>"00.4" │ > │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>1 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │ > │ ccess</td><td><div class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 21.30ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Line:0 Col:1 Error parsing number andThen many1 whitespace │ > │ 00.4 │ > │ ^Unexpected '0' │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "123e4" > |> parserEqual (Success (JNumber 1230000.0)) > > ╭─[ 24.93ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JNumber 1230000.0, { lines = [ │ > │ |"123e4"|]<br /> position = { line = │ > │ 1<br /> column = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JNumber 1230000.0, { lines = [ │ > │ |"123e4"|]<br /> position = { line = 1<br /> column │ > │ = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNumber │ > │ 1230000.0</code></span></summary><div><table><thead><tr></tr></thead><tbody> │ > │ <tr><td>Item</td><td><div class="dni-plaintext"><pre>1230000.0 │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"123e4"|]<br /> position │ > │ = { line = 1<br /> column = 0 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ 123e4 │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 1<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>1 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 28.02ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JNumber 1230000.0 │ > │ JNumber 1230000.0 │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "123.4e5" > |> parserEqual (Success (JNumber 12340000.0)) > > ╭─[ 22.85ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JNumber 12340000.0, { lines = [ │ > │ |"123.4e5"|]<br /> position = { line │ > │ = 1<br /> column = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JNumber 12340000.0, { lines = [ │ > │ |"123.4e5"|]<br /> position = { line = 1<br /> │ > │ column = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNumber │ > │ 12340000.0</code></span></summary><div><table><thead><tr></tr></thead><tbody │ > │ ><tr><td>Item</td><td><div class="dni-plaintext"><pre>12340000.0 │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"123.4e5"|]<br /> │ > │ position = { line = 1<br /> column = 0 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ 123.4e5 │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 1<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>1 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 26.14ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JNumber 12340000.0 │ > │ JNumber 12340000.0 │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "123.4e-5" > |> parserEqual (Success (JNumber 0.001234)) > > ╭─[ 21.89ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JNumber 0.001234, { lines = [ │ > │ |"123.4e-5"|]<br /> position = { line │ > │ = 1<br /> column = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JNumber 0.001234, { lines = [ │ > │ |"123.4e-5"|]<br /> position = { line = 1<br /> │ > │ column = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNumber │ > │ 0.001234</code></span></summary><div><table><thead><tr></tr></thead><tbody>< │ > │ tr><td>Item</td><td><div class="dni-plaintext"><pre>0.001234 │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item │ > │ 2</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>{ lines = [|"123.4e-5"|]<br /> │ > │ position = { line = 1<br /> column = 0 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ 123.4e-5 │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 1<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>1 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 25.01ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JNumber 0.001234 │ > │ JNumber 0.001234 │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### jArray │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jArray = > let left = pchar '[[' .>> spaces > let right = pchar ']]' .>> spaces > let comma = pchar ',' .>> spaces > let value = jValue .>> spaces > > let values = sepBy value comma > > between left values right > |>> JArray > <?> "array" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > jValueRef <| > choice > [[ > jNull > jBool > jString > jNumber > jArray > ]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jArray "[[ 1, 2 ]]" > |> parserEqual (Success (JArray [[ JNumber 1.0; JNumber 2.0 ]])) > > ╭─[ 59.38ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success (JArray [JNumber 1.0; JNumber 2.0], { │ > │ lines = [|"[ 1, 2 ]"|]<br /> │ > │ position = { line = 1<br /> │ > │ column = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JArray [JNumber 1.0; JNumber 2.0], { lines = [ │ > │ |"[ 1, 2 ]"|]<br /> position = { line = 1<br /> │ > │ column = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JArray [JNumber 1.0; JNumber │ > │ 2.0]</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr>< │ > │ td>Item</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></ │ > │ thead><tbody><tr><td>0</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNumber │ > │ 1.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><t │ > │ d>Item</td><td><div class="dni-plaintext"><pre>1.0 │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div...td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = [ │ > │ |"[ 1, 2 ]"|]<br /> position = { line = 1<br /> │ > │ column = 0 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ [ 1, 2 ] │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 1<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>1 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 62.76ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JArray [JNumber 1.0; JNumber 2.0] │ > │ JArray [JNumber 1.0; JNumber 2.0] │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jArray "[[ 1, 2, ]]" > |> parserEqual ( > Failure ( > "array", > "Unexpected ','", > { currentLine = "[[ 1, 2, ]]"; line = 0; column = 6 } > ) > ) > > ╭─[ 24.08ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Failure ("array", "Unexpected │ > │ ','", { currentLine = "[ 1, 2, ]"<br /> │ > │ line = 0<br /> column = 6 │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>"array" │ > │ </pre></div></td></tr><tr><td>Item2</td><td><div │ > │ class="dni-plaintext"><pre>"Unexpected ','" │ > │ </pre></div></td></tr><tr><td>Item3</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ │ > │ currentLine = "[ 1, 2, ]"<br /> line = 0<br /> column = 6 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ currentLine</td><td><div class="dni-plaintext"><pre>"[ 1, 2, ]" │ > │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>6 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │ > │ ccess</td><td><div class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 26.40ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Line:0 Col:6 Error parsing array │ > │ [ 1, 2, ] │ > │ ^Unexpected ',' │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### jObject │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jObject = > let left = spaces >>. pchar '{' .>> spaces > let right = pchar '}' .>> spaces > let colon = pchar ':' .>> spaces > let comma = pchar ',' .>> spaces > let key = quotedString .>> spaces > let value = jValue .>> spaces > > let keyValue = (key .>> colon) .>>. value > let keyValues = sepBy keyValue comma > > between left keyValues right > |>> Map.ofList > |>> JObject > <?> "object" > > ── fsharp ────────────────────────────────────────────────────────────────────── > jValueRef <| > choice > [[ > jNull > jBool > jString > jNumber > jArray > jObject > ]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jObject """{ "a":1, "b" : 2 }""" > |> parserEqual ( > Success ( > JObject ( > Map.ofList [[ > "a", JNumber 1.0 > "b", JNumber 2.0 > ]] > ) > ) > ) > > ╭─[ 62.31ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success<br /> (JObject (map [("a", │ > │ JNumber 1.0); ("b", JNumber 2.0)]),<br /> { lines = [|"{ │ > │ "a":1, "b" : 2 }"|]<br /> position = { line = │ > │ 1<br /> column = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JObject (map [("a", JNumber 1.0); │ > │ ("b", JNumber 2.0)]), { lines = [|"{ "a":1, │ > │ "b" : 2 }"|]<br /> position = { line = 1<br /> │ > │ column = 0 } │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JObject (map [("a", JNumber 1.0); │ > │ ("b", JNumber │ > │ 2.0)])</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr │ > │ ><td>Item</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></ │ > │ thead><tbody><tr><td><div class="dni-plaintext"><pre>"a" │ > │ </pre></div></td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JNumber │ > │ 1.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><t │ > │ d>Item</td><td><div class="dni-plaintext"><pre>1.0 │ > │ </pre></div></td></tr><tr><td>IsJString</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsJNumber</td>...hint"><code>{ lines = [ │ > │ |"{ "a":1, "b" : 2 }"|]<br /> position = { │ > │ line = 1<br /> column = 0 } │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ lines</td><td><div class="dni-plaintext"><pre>[ { "a":1, │ > │ "b" : 2 } │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 1<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>1 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 65.82ms - stdout ]─────────────────────────────────────────────────────────╮ > │ JObject (map [("a", JNumber 1.0); ("b", JNumber 2.0)]) │ > │ JObject (map [("a", JNumber 1.0); ("b", JNumber 2.0)]) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jObject """{ "a":1, "b" : 2, }""" > |> parserEqual ( > Failure ( > "object", > "Unexpected ','", > { currentLine = """{ "a":1, "b" : 2, }"""; line = 0; column = 18 } > ) > ) > > ╭─[ 25.66ms - return value ]───────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Failure ("object", "Unexpected │ > │ ','", { currentLine = "{ "a":1, "b" : │ > │ 2, }"<br /> line = 0<br /> │ > │ column = 18 │ > │ })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td │ > │ >Item1</td><td><div class="dni-plaintext"><pre>"object" │ > │ </pre></div></td></tr><tr><td>Item2</td><td><div │ > │ class="dni-plaintext"><pre>"Unexpected ','" │ > │ </pre></div></td></tr><tr><td>Item3</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ │ > │ currentLine = "{ "a":1, "b" : 2, }"<br /> │ > │ line = 0<br /> column = 18 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ currentLine</td><td><div class="dni-plaintext"><pre>"{ "a":1, │ > │ "b" : 2, }" │ > │ </pre></div></td></tr><tr><td>line</td><td><div class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>18 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu │ > │ ccess</td><td><div class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 28.09ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Line:0 Col:18 Error parsing object │ > │ { "a":1, "b" : 2, } │ > │ ^Unexpected ',' │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### jValue │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let example1 = """{ > "name" : "Scott", > "isMale" : true, > "bday" : {"year":2001, "month":12, "day":25 }, > "favouriteColors" : [["blue", "green"]], > "emptyArray" : [[]], > "emptyObject" : {} > }""" > run jValue example1 > |> parserEqual ( > Success ( > JObject ( > Map.ofList [[ > "name", JString "Scott" > "isMale", JBool true > "bday", JObject ( > Map.ofList [[ > "year", JNumber 2001.0 > "month", JNumber 12.0 > "day", JNumber 25.0 > ]] > ) > "favouriteColors", JArray [[ JString "blue"; JString "green" ]] > "emptyArray", JArray [[]] > "emptyObject", JObject Map.empty > ]] > ) > ) > ) > > ╭─[ 107.78ms - return value ]──────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success<br /> (JObject<br /> (map<br /> │ > │ [("bday",<br /> JObject<br /> (map<br /> │ > │ [("day", JNumber 25.0); ("month", JNumber 12.0);<br /> │ > │ ("year", JNumber 2001.0)])); ("emptyArray", JArray [ │ > │ ]);<br /> ("emptyObject", JObject (map []));<br /> │ > │ ("favouriteColors", │ > │ ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><t │ > │ d>Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JObject<br /> (map<br /> [ │ > │ ("bday",<br /> JObject<br /> (map<br /> [ │ > │ ("day", JNumber 25.0); ("month", JNumber 12.0);<br /> │ > │ ("year", JNumber 2001.0)])); ("emptyArray", JArray [ │ > │ ]);<br /> ("emptyObject", JObject (map []));<br /> │ > │ ("favouriteColors", JArray [JString "blue"; JString │ > │ "gr...</code></span></summary><div><table><thead><tr></tr></thead><tbod │ > │ y><tr><td>Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JObject<br /> (map<br /> [ │ > │ ("bday",<br /> JObject<br /> (map<br /> [ │ > │ ("day", JNumber 25.0); ("month", JNumber 12.0);<br /> │ > │ ("year", JNumber 2001.0)])); ("emptyArray", │ > │ JArra...quot;name" : "Scott",, "isMale" : │ > │ true,, "bday" : {"year":2001, "month":12, │ > │ "day":25 },, "favouriteColors" : ["blue", │ > │ "green"],, "emptyArray" : [],, │ > │ "emptyObject" : {}, } │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 8<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>8 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 111.58ms - stdout ]────────────────────────────────────────────────────────╮ > │ JObject │ > │ (map │ > │ [("bday", │ > │ JObject │ > │ (map │ > │ [("day", JNumber 25.0); ("month", JNumber 12.0); │ > │ ("year", JNumber 2001.0)])); ("emptyArray", JArray []); │ > │ ("emptyObject", JObject (map [])); │ > │ ("favouriteColors", JArray [JString "blue"; JString "green"]); │ > │ ("isMale", JBool true); ("name", JString "Scott")]) │ > │ JObject │ > │ (map │ > │ [("bday", JObject (map [("day", JNumber 25.0); ("month", JNumber 12.0); │ > │ ("year", JNumber 2001.0)])); │ > │ ("emptyArray", JArray []); ("emptyObject", JObject (map [])); │ > │ ("favouriteColors", JArray [JString "blue"; JString "green"]); │ > │ ("isMale", JBool true); ("name", JString "Scott")]) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let example2 = """{"widget": { > "debug": "on", > "window": { > "title": "Sample Konfabulator Widget", > "name": "main_window", > "width": 500, > "height": 500 > }, > "image": { > "src": "Images/Sun.png", > "name": "sun1", > "hOffset": 250, > "vOffset": 250, > "alignment": "center" > }, > "text": { > "data": "Click Here", > "size": 36, > "style": "bold", > "name": "text1", > "hOffset": 250, > "vOffset": 100, > "alignment": "center", > "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;" > } > }}""" > > run jValue example2 > |> parserEqual ( > Success ( > JObject ( > Map.ofList [[ > "widget", JObject ( > Map.ofList [[ > "debug", JString "on" > "window", JObject ( > Map.ofList [[ > "title", JString "Sample Konfabulator Widget" > "name", JString "main_window" > "width", JNumber 500.0 > "height", JNumber 500.0 > ]] > ) > "image", JObject ( > Map.ofList [[ > "src", JString "Images/Sun.png" > "name", JString "sun1" > "hOffset", JNumber 250.0 > "vOffset", JNumber 250.0 > "alignment", JString "center" > ]] > ) > "text", JObject ( > Map.ofList [[ > "data", JString "Click Here" > "size", JNumber 36.0 > "style", JString "bold" > "name", JString "text1" > "hOffset", JNumber 250.0 > "vOffset", JNumber 100.0 > "alignment", JString "center" > "onMouseUp", JString "sun1.opacity = > (sun1.opacity / 100) * 90;" > ]] > ) > ]] > ) > ]] > ) > ) > ) > > ╭─[ 235.99ms - return value ]──────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success<br /> (JObject<br /> (map<br /> │ > │ [("widget",<br /> JObject<br /> (map<br /> │ > │ [("debug", JString "on");<br /> │ > │ ("image",<br /> JObject<br /> │ > │ (map<br /> [("alignment", JString │ > │ "center");<br /> │ > │ ("hOffset"...</code></span></summary><div><table><thead><tr></tr>< │ > │ /thead><tbody><tr><td>Item</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>(JObject<br │ > │ /> (map<br /> [("widget",<br /> JObject<br /> │ > │ (map<br /> [("debug", JString "on");<br /> │ > │ ("image",<br /> JObject<br /> (map<br │ > │ /> [("alignment", JString "center"); │ > │ ("hOffset", JNumber 250.0);<br /> │ > │ ("name", JString │ > │ "sun1"...</code></span></summary><div><table><thead><tr></tr></the │ > │ ad><tbody><tr><td>Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JObject<br /> (map<br /> [ │ > │ ("widget",<br /> JObject<br /> (map<br /> │ > │ [("debug", JString "on");<br /> │ > │ ("image",<br /> JObject<br /> (... │ > │ "style": "bold",, "name": │ > │ "text1",, "hOffset": 250,, │ > │ "vOffset": 100,, "alignment": │ > │ "center",, "onMouseUp": "sun1.opacity = │ > │ (sun1.opacity / 100) * 90;", }, }} │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 26<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>26 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 240.03ms - stdout ]────────────────────────────────────────────────────────╮ > │ JObject │ > │ (map │ > │ [("widget", │ > │ JObject │ > │ (map │ > │ [("debug", JString "on"); │ > │ ("image", │ > │ JObject │ > │ (map │ > │ [("alignment", JString "center"); ("hOffset", JNumber │ > │ 250.0); │ > │ ("name", JString "sun1"); ("src", JString │ > │ "Images/Sun.png"); │ > │ ("vOffset", JNumber 250.0)])); │ > │ ("text", │ > │ JObject │ > │ (map │ > │ [("alignment", JString "center"); │ > │ ("data", JString "Click Here"); ("hOffset", JNumber │ > │ 250.0); │ > │ ("name", JString "text1"); │ > │ ("onMouseUp", │ > │ JString "sun1.opacity = (sun1.opacity / 100) * 90;"); │ > │ ("size", JNumber 36.0); ("style", JString "bold"); │ > │ ("vOffset", JNumber 100.0)])); │ > │ ("window", │ > │ JObject │ > │ (map │ > │ [("height", JNumber 500.0); ("name", JString │ > │ "main_window"); │ > │ ("title", JString "Sample Konfabulator Widget"); │ > │ ("width", JNumber 500.0)]))]))]) │ > │ JObject │ > │ (map │ > │ [("widget", │ > │ JObject │ > │ (map │ > │ [("debug", JString "on"); │ > │ ("image", │ > │ JObject │ > │ (map │ > │ [("alignment", JString "center"); ("hOffset", JNumber │ > │ 250.0); ("name", JString "sun1"); │ > │ ("src", JString "Images/Sun.png"); ("vOffset", JNumber │ > │ 250.0)])); │ > │ ("text", │ > │ JObject │ > │ (map │ > │ [("alignment", JString "center"); ("data", JString "Click │ > │ Here"); ("hOffset", JNumber 250.0); │ > │ ("name", JString "text1"); ("onMouseUp", JString │ > │ "sun1.opacity = (sun1.opacity / 100) * 90;"); │ > │ ("size", JNumber 36.0); ("style", JString "bold"); │ > │ ("vOffset", JNumber 100.0)])); │ > │ ("window", │ > │ JObject │ > │ (map │ > │ [("height", JNumber 500.0); ("name", JString │ > │ "main_window"); │ > │ ("title", JString "Sample Konfabulator Widget"); │ > │ ("width", JNumber 500.0)]))]))]) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let example3 = """{ > "string": "Hello, \"World\"!", > "escapedString": "This string contains \\/\\\\\\b\\f\\n\\r\\t\\\"\\'", > "number": 42, > "scientificNumber": 3.14e-10, > "boolean": true, > "nullValue": null, > "array": [[1, 2, 3, 4, 5]], > "unicodeString1": "프리마", > "unicodeString2": "\u0048\u0065\u006C\u006C\u006F, > \u0022\u0057\u006F\u0072\u006C\u0064\u0022!", > "specialCharacters": "!@#$%^&*()", > "emptyArray": [[]], > "emptyObject": {}, > "nestedArrays": [[[[1, 2, 3]], [[4, 5, 6]]]], > "object": { > "nestedString": "Nested Value", > "nestedNumber": 3.14, > "nestedBoolean": false, > "nestedNull": null, > "nestedArray": [["a", "b", "c"]], > "nestedObject": { > "nestedProperty": "Nested Object Value" > } > }, > "nestedObjects": [[ > {"name": "Alice", "age": 25}, > {"name": "Bob", "age": 30} > ]] > }""" > run jValue example3 > |> parserEqual ( > Success ( > JObject ( > Map.ofList [[ > "string", JString @"Hello, ""World""!" > "escapedString", JString @"This string contains > \/\\\b\f\n\r\t\""\'" > "number", JNumber 42.0 > "scientificNumber", JNumber 3.14e-10 > "boolean", JBool true > "nullValue", JNull > "array", JArray [[ > JNumber 1.0; JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber > 5.0 > ]] > "unicodeString1", JString "프리마" > "unicodeString2", JString @"Hello, ""World""!" > "specialCharacters", JString "!@#$%^&*()" > "emptyArray", JArray [[]] > "emptyObject", JObject Map.empty > "nestedArrays", JArray [[ > JArray [[ JNumber 1.0; JNumber 2.0; JNumber 3.0 ]] > JArray [[ JNumber 4.0; JNumber 5.0; JNumber 6.0 ]] > ]] > "object", JObject ( > Map.ofList [[ > "nestedString", JString "Nested Value" > "nestedNumber", JNumber 3.14 > "nestedBoolean", JBool false > "nestedNull", JNull > "nestedArray", JArray [[JString "a"; JString "b"; > JString "c"]] > "nestedObject", JObject ( > Map.ofList [[ > "nestedProperty", JString "Nested Object Value" > ]] > ) > ]] > ) > "nestedObjects", JArray [[ > JObject (Map.ofList [[ "name", JString "Alice"; "age", JNumber > 25.0 ]]) > JObject (Map.ofList [[ "name", JString "Bob"; "age", JNumber > 30.0 ]]) > ]] > ]] > ) > ) > ) > > ╭─[ 297.17ms - return value ]──────────────────────────────────────────────────╮ > │ <details open="open" class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>Success<br /> (JObject<br /> (map<br /> │ > │ [("array",<br /> JArray<br /> [JNumber 1.0; │ > │ JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber 5.0]);<br /> │ > │ ("boolean", JBool true); ("emptyArray", JArray []);<br │ > │ /> ("emptyObject", JObject (map []));<br /> │ > │ ("escapedString", JString "This │ > │ s...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr>< │ > │ td>Item</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>(JObject<br /> (map<br /> [ │ > │ ("array",<br /> JArray [JNumber 1.0; JNumber 2.0; JNumber │ > │ 3.0; JNumber 4.0; JNumber 5.0]);<br /> ("boolean", JBool │ > │ true); ("emptyArray", JArray []);<br /> │ > │ ("emptyObject", JObject (map []));<br /> │ > │ ("escapedString", JString "This string contains \/\\\b\f<br │ > │ />\r\t\"\'");<br /> │ > │ ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><t │ > │ d>Item1</td><td><details class="dni-treeview"><summary><span │ > │ class="dni-code-hint"><code>JObject<br /> (map<br /> [ │ > │ ("array",<br /> JArray [JNumber 1.0; JNumber 2.0; JNumber │ > │ 3.0; JNumber 4.0; JNumber 5.0]);<br /> ("boolean", JBool │ > │ true); ("emptyArray", JArray []);<br /> │ > │ ("emptyObject", JObject (map []));<br /> ("es...", │ > │ "c"],, "nestedObject": {, │ > │ "nestedProperty": "Nested Object Value", }, },, │ > │ "nestedObjects": [, {"name": "Alice", │ > │ "age": 25},, {"name": "Bob", │ > │ "age": 30}, ], } │ > │ ]</pre></div></td></tr><tr><td>position</td><td><details │ > │ class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = │ > │ 29<br /> column = 0 │ > │ }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ > │ line</td><td><div class="dni-plaintext"><pre>29 │ > │ </pre></div></td></tr><tr><td>column</td><td><div │ > │ class="dni-plaintext"><pre>0 │ > │ </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></ta │ > │ ble></div></details></td></tr></tbody></table></div></details></td></tr><tr> │ > │ <td>IsSuccess</td><td><div class="dni-plaintext"><pre>true │ > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div │ > │ class="dni-plaintext"><pre>false │ > │ </pre></div></td></tr></tbody></table></div></details><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 301.45ms - stdout ]────────────────────────────────────────────────────────╮ > │ JObject │ > │ (map │ > │ [("array", │ > │ JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber │ > │ 5.0]); │ > │ ("boolean", JBool true); ("emptyArray", JArray []); │ > │ ("emptyObject", JObject (map [])); │ > │ ("escapedString", JString "This string contains \/\\\b\f\n\r\t\"\'"); │ > │ ("nestedArrays", │ > │ JArray │ > │ [JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0]; │ > │ JArray [JNumber 4.0; JNumber 5.0; JNumber 6.0]]); │ > │ ("nestedObjects", │ > │ JArray │ > │ [JObject (map [("age", JNumber 25.0); ("name", JString "Alice")]); │ > │ JObject (map [("age", JNumber 30.0); ("name", JString "Bob")])]); │ > │ ("nullValue", JNull); ("number", JNumber 42.0); ...]) │ > │ JObject │ > │ (map │ > │ [("array", JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0; JNumber 4.0; │ > │ JNumber 5.0]); ("boolean", JBool true); │ > │ ("emptyArray", JArray []); ("emptyObject", JObject (map [])); │ > │ ("escapedString", JString "This string contains \/\\\b\f\n\r\t\"\'"); │ > │ ("nestedArrays", │ > │ JArray [JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0]; JArray [ │ > │ JNumber 4.0; JNumber 5.0; JNumber 6.0]]); │ > │ ("nestedObjects", │ > │ JArray │ > │ [JObject (map [("age", JNumber 25.0); ("name", JString "Alice")]); │ > │ JObject (map [("age", JNumber 30.0); ("name", JString "Bob")])]); │ > │ ("nullValue", JNull); │ > │ ("number", JNumber 42.0); ...]) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:18 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 344876 } 00:00:18 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ "nbconvert", "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark", ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:18 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb to html 00:00:18 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:18 verbose #7 ! validate(nb) 00:00:19 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:19 verbose #9 ! return _pygments_highlight( 00:00:19 verbose #10 ! [NbConvertApp] Writing 532431 bytes to /home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.html 00:00:19 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 906 } 00:00:19 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 906 } 00:00:19 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ "-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:20 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:20 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:20 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 345841 } 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Parser.dib"])) } 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ "repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb", ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ # Parser (Polyglot) │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Common > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### TextInput │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Position = > { > line : int > column : int > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let initialPos = { line = 0; column = 0 } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline incrCol (pos : Position) = > { pos with column = pos.column + 1 } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline incrLine pos = > { line = pos.line + 1; column = 0 } > > ── fsharp ────────────────────────────────────────────────────────────────────── > type InputState = > { > lines : string[[]] > position : Position > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline fromStr str = > { > lines = > if str |> String.IsNullOrEmpty > then [[||]] > else str |> SpiralSm.split_string [[| "\r\n"; "\n" |]] > position = initialPos > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > fromStr "" |> _assertEqual { > lines = [[||]] > position = { line = 0; column = 0 } > } > > ╭─[ 37.90ms - stdout ]─────────────────────────────────────────────────────────╮ > │ { lines = [||] │ > │ position = { line = 0 │ > │ column = 0 } } │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > fromStr "Hello \n World" |> _assertEqual { > lines = [[| "Hello "; " World" |]] > position = { line = 0; column = 0 } > } > > ╭─[ 53.28ms - stdout ]─────────────────────────────────────────────────────────╮ > │ { lines = [|"Hello "; " World"|] │ > │ position = { line = 0 │ > │ column = 0 } } │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline currentLine inputState = > let linePos = inputState.position.line > if linePos < inputState.lines.Length > then inputState.lines.[[linePos]] > else "end of file" > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline nextChar input = > let linePos = input.position.line > let colPos = input.position.column > > if linePos >= input.lines.Length > then input, None > else > let currentLine = currentLine input > if colPos < currentLine.Length then > let char = currentLine.[[colPos]] > let newPos = incrCol input.position > let newState = { input with position = newPos } > newState, Some char > else > let char = '\n' > let newPos = incrLine input.position > let newState = { input with position = newPos } > newState, Some char > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let newInput, charOpt = fromStr "Hello World" |> nextChar > > newInput |> _assertEqual { > lines = [[| "Hello World" |]] > position = { line = 0; column = 1 } > } > charOpt |> _assertEqual (Some 'H') > > ╭─[ 27.31ms - stdout ]─────────────────────────────────────────────────────────╮ > │ { lines = [|"Hello World"|] │ > │ position = { line = 0 │ > │ column = 1 } } │ > │ │ > │ Some 'H' │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let newInput, charOpt = fromStr "Hello\n\nWorld" |> nextChar > > newInput |> _assertEqual { > lines = [[| "Hello"; ""; "World" |]] > position = { line = 0; column = 1 } > } > charOpt |> _assertEqual (Some 'H') > > ╭─[ 19.13ms - stdout ]─────────────────────────────────────────────────────────╮ > │ { lines = [|"Hello"; ""; "World"|] │ > │ position = { line = 0 │ > │ column = 1 } } │ > │ │ > │ Some 'H' │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### Parser │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Input = InputState > type ParserLabel = string > type ParserError = string > > type ParserPosition = > { > currentLine : string > line : int > column : int > } > > type ParseResult<'a> = > | Success of 'a > | Failure of ParserLabel * ParserError * ParserPosition > > type Parser<'a> = > { > label : ParserLabel > parseFn : Input -> ParseResult<'a * Input> > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline printResult result = > match result with > | Success (value, input) -> > printfn $"%A{value}" > | Failure (label, error, parserPos) -> > let errorLine = parserPos.currentLine > let colPos = parserPos.column > let linePos = parserPos.line > let failureCaret = $"{' ' |> string |> String.replicate colPos}^{error}" > printfn $"Line:%i{linePos} Col:%i{colPos} Error parsing > %s{label}\n%s{errorLine}\n%s{failureCaret}" > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline runOnInput parser input = > parser.parseFn input > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline run parser inputStr = > runOnInput parser (fromStr inputStr) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline parserPositionFromInputState (inputState : Input) = > { > currentLine = currentLine inputState > line = inputState.position.line > column = inputState.position.column > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline getLabel parser = > parser.label > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline setLabel parser newLabel = > { > label = newLabel > parseFn = fun input -> > match parser.parseFn input with > | Success s -> Success s > | Failure (oldLabel, err, pos) -> Failure (newLabel, err, pos) > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let (<?>) = setLabel > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline satisfy predicate label = > { > label = label > parseFn = fun input -> > let remainingInput, charOpt = nextChar input > match charOpt with > | None -> > let err = "No more input" > let pos = parserPositionFromInputState input > Failure (label, err, pos) > | Some first -> > if predicate first > then Success (first, remainingInput) > else > let err = $"Unexpected '%c{first}'" > let pos = parserPositionFromInputState input > Failure (label, err, pos) > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = satisfy (fun c -> c = 'H') "H" > runOnInput parser input |> _assertEqual ( > Success ( > 'H', > { > lines = [[| "Hello" |]] > position = { line = 0; column = 1 } > } > ) > ) > > ╭─[ 24.26ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success ('H', { lines = [|"Hello"|] │ > │ position = { line = 0 │ > │ column = 1 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "World" > let parser = satisfy (fun c -> c = 'H') "H" > runOnInput parser input |> _assertEqual ( > Failure ( > "H", > "Unexpected 'W'", > { > currentLine = "World" > line = 0 > column = 0 > } > ) > ) > > ╭─[ 19.59ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Failure ("H", "Unexpected 'W'", { currentLine = "World" │ > │ line = 0 │ > │ column = 0 }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline bindP f p = > { > label = "unknown" > parseFn = fun input -> > match runOnInput p input with > | Failure (label, err, pos) -> Failure (label, err, pos) > | Success (value1, remainingInput) -> runOnInput (f value1) > remainingInput > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (>>=) p f = bindP f p > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = parser >>= fun c -> satisfy (fun c -> c = 'e') "e" > runOnInput parser2 input |> _assertEqual ( > Success ( > 'e', > { > lines = [[| "Hello" |]] > position = { line = 0; column = 2 } > } > ) > ) > > ╭─[ 26.25ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success ('e', { lines = [|"Hello"|] │ > │ position = { line = 0 │ > │ column = 2 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "World" > let parser = satisfy (fun c -> c = 'W') "W" > let parser2 = parser >>= fun c -> satisfy (fun c -> c = 'e') "e" > runOnInput parser2 input |> _assertEqual ( > Failure ( > "e", > "Unexpected 'o'", > { > currentLine = "World" > line = 0 > column = 1 > } > ) > ) > > ╭─[ 26.57ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Failure ("e", "Unexpected 'o'", { currentLine = "World" │ > │ line = 0 │ > │ column = 1 }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline returnP x = > { > label = $"%A{x}" > parseFn = fun input -> Success (x, input) > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = returnP "Hello" > runOnInput parser input |> _assertEqual ( > Success ( > "Hello", > { > lines = [[| "Hello" |]] > position = { line = 0; column = 0 } > } > ) > ) > > ╭─[ 16.12ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success ("Hello", { lines = [|"Hello"|] │ > │ position = { line = 0 │ > │ column = 0 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline mapP f = > bindP (f >> returnP) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let (<!>) = mapP > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (|>>) x f = f <!> x > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = parser |>> string > runOnInput parser2 input |> _assertEqual ( > Success ( > "H", > { > lines = [[| "Hello" |]] > position = { line = 0; column = 1 } > } > ) > ) > > ╭─[ 22.99ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success ("H", { lines = [|"Hello"|] │ > │ position = { line = 0 │ > │ column = 1 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline applyP fP xP = > fP >>= > fun f -> > xP >>= > fun x -> > returnP (f x) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let (<*>) = applyP > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline lift2 f xP yP = > returnP f <*> xP <*> yP > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = satisfy (fun c -> c = 'e') "e" > let parser3 = lift2 (fun c1 c2 -> string c1 + string c2) parser parser2 > runOnInput parser3 input |> _assertEqual ( > Success ( > "He", > { > lines = [[| "Hello" |]] > position = { line = 0; column = 2 } > } > ) > ) > > ╭─[ 34.18ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success ("He", { lines = [|"Hello"|] │ > │ position = { line = 0 │ > │ column = 2 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline andThen p1 p2 = > p1 >>= > fun p1Result -> > p2 >>= > fun p2Result -> > returnP (p1Result, p2Result) > <?> $"{getLabel p1} andThen {getLabel p2}" > > ── fsharp ────────────────────────────────────────────────────────────────────── > let (.>>.) = andThen > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = satisfy (fun c -> c = 'e') "e" > let parser3 = parser .>>. parser2 > runOnInput parser3 input |> _assertEqual ( > Success ( > ('H', 'e'), > { > lines = [[| "Hello" |]] > position = { line = 0; column = 2 } > } > ) > ) > > ╭─[ 28.78ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success (('H', 'e'), { lines = [|"Hello"|] │ > │ position = { line = 0 │ > │ column = 2 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline orElse p1 p2 = > { > label = $"{getLabel p1} orElse {getLabel p2}" > parseFn = fun input -> > match runOnInput p1 input with > | Success _ as result -> result > | Failure _ -> runOnInput p2 input > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let (<|>) = orElse > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = satisfy (fun c -> c = 'h') "h" > let parser3 = parser <|> parser2 > runOnInput parser3 input |> _assertEqual ( > Success ( > 'h', > { > lines = [[| "hello" |]] > position = { line = 0; column = 1 } > } > ) > ) > > ╭─[ 23.78ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success ('h', { lines = [|"hello"|] │ > │ position = { line = 0 │ > │ column = 1 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline choice listOfParsers = > listOfParsers |> List.reduce (<|>) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = satisfy (fun c -> c = 'h') "h" > let parser3 = choice [[ parser; parser2 ]] > runOnInput parser3 input |> _assertEqual ( > Success ( > 'h', > { > lines = [[| "hello" |]] > position = { line = 0; column = 1 } > } > ) > ) > > ╭─[ 24.65ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success ('h', { lines = [|"hello"|] │ > │ position = { line = 0 │ > │ column = 1 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec sequence parserList = > match parserList with > | [[]] -> returnP [[]] > | head :: tail -> (lift2 cons) head (sequence tail) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = satisfy (fun c -> c = 'e') "e" > let parser3 = sequence [[ parser; parser2 ]] > runOnInput parser3 input |> _assertEqual ( > Success ( > [[ 'H'; 'e' ]], > { > lines = [[| "Hello" |]] > position = { line = 0; column = 2 } > } > ) > ) > > ╭─[ 31.68ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success (['H'; 'e'], { lines = [|"Hello"|] │ > │ position = { line = 0 │ > │ column = 2 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec parseZeroOrMore parser input = > match runOnInput parser input with > | Failure (_, _, _) -> > [[]], input > | Success (firstValue, inputAfterFirstParse) -> > let subsequentValues, remainingInput = parseZeroOrMore parser > inputAfterFirstParse > firstValue :: subsequentValues, remainingInput > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline many parser = > { > label = $"many {getLabel parser}" > parseFn = fun input -> Success (parseZeroOrMore parser input) > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = many parser > runOnInput parser2 input |> _assertEqual ( > Success ( > [[]], > { > lines = [[| "hello" |]] > position = { line = 0; column = 0 } > } > ) > ) > > ╭─[ 21.25ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success ([], { lines = [|"hello"|] │ > │ position = { line = 0 │ > │ column = 0 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline many1 p = > p >>= > fun head -> > many p >>= > fun tail -> > returnP (head :: tail) > <?> $"many1 {getLabel p}" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = many1 parser > runOnInput parser2 input |> _assertEqual ( > Failure ( > "many1 H", > "Unexpected 'h'", > { > currentLine = "hello" > line = 0 > column = 0 > } > ) > ) > > ╭─[ 29.58ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Failure ("many1 H", "Unexpected 'h'", { currentLine = "hello" │ > │ line = 0 │ > │ column = 0 }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline opt p = > let some = p |>> Some > let none = returnP None > (some <|> none) > <?> $"opt {getLabel p}" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = opt parser > runOnInput parser2 input |> _assertEqual ( > Success ( > None, > { > lines = [[| "hello" |]] > position = { line = 0; column = 0 } > } > ) > ) > > ╭─[ 25.26ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success (None, { lines = [|"hello"|] │ > │ position = { line = 0 │ > │ column = 0 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (.>>) p1 p2 = > p1 .>>. p2 > |> mapP fst > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (>>.) p1 p2 = > p1 .>>. p2 > |> mapP snd > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline between p1 p2 p3 = > p1 >>. p2 .>> p3 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "[[Hello]]" > let parser = > between > (satisfy (fun c -> c = '[[') "[[") > (many (satisfy (fun c -> [[ 'a' .. 'z' ]] @ [[ 'A' .. 'Z' ]] |> > List.contains c) "letter")) > (satisfy (fun c -> c = ']]') "]]") > runOnInput parser input |> _assertEqual ( > Success ( > [[ 'H'; 'e'; 'l'; 'l'; 'o' ]], > { > lines = [[| "[[Hello]]" |]] > position = { line = 0; column = 7 } > } > ) > ) > > ╭─[ 77.46ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success (['H'; 'e'; 'l'; 'l'; 'o'], { lines = [|"[Hello]"|] │ > │ position = { line = 0 │ > │ column = 7 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline sepBy1 p sep = > let sepThenP = sep >>. p > p .>>. many sepThenP > |>> fun (p, pList) -> p :: pList > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline sepBy p sep = > sepBy1 p sep <|> returnP [[]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello,World" > let parser = sepBy (many (satisfy (fun c -> c <> ',') "not comma")) (satisfy > (fun c -> c = ',') "comma") > runOnInput parser input |> _assertEqual ( > Success ( > [[ [[ 'H'; 'e'; 'l'; 'l'; 'o' ]]; [[ 'W'; 'o'; 'r'; 'l'; 'd'; '\n' ]] > ]], > { > lines = [[| "Hello,World" |]] > position = { line = 1; column = 0 } > } > ) > ) > > ╭─[ 53.48ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success ([['H'; 'e'; 'l'; 'l'; 'o']; ['W'; 'o'; 'r'; 'l'; 'd'; '\010']], { │ > │ lines = [|"Hello,World"|] │ > │ │ > │ position = { line = 1 │ > │ │ > │ column = 0 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline pchar charToMatch = > satisfy ((=) charToMatch) $"%c{charToMatch}" > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline anyOf listOfChars = > listOfChars > |> List.map pchar > |> choice > <?> $"anyOf %A{listOfChars}" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = anyOf [[ 'H'; 'e'; 'l'; 'o' ]] |> many > runOnInput parser input |> _assertEqual ( > Success ( > [[ 'H'; 'e'; 'l'; 'l'; 'o' ]], > { > lines = [[| "Hello" |]] > position = { line = 0; column = 5 } > } > ) > ) > > ╭─[ 57.23ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success (['H'; 'e'; 'l'; 'l'; 'o'], { lines = [|"Hello"|] │ > │ position = { line = 0 │ > │ column = 5 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline charListToStr charList = > charList |> List.toArray |> String > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline manyChars cp = > many cp > |>> charListToStr > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline manyChars1 cp = > many1 cp > |>> charListToStr > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = manyChars1 (anyOf [[ 'H'; 'e'; 'l'; 'o' ]]) > runOnInput parser input |> _assertEqual ( > Success ( > "Hello", > { > lines = [[| "Hello" |]] > position = { line = 0; column = 5 } > } > ) > ) > > ╭─[ 36.50ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success ("Hello", { lines = [|"Hello"|] │ > │ position = { line = 0 │ > │ column = 5 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline pstring str = > str > |> List.ofSeq > |> List.map pchar > |> sequence > |> mapP charListToStr > <?> str > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = pstring "Hello" > runOnInput parser input |> _assertEqual ( > Success ( > "Hello", > { > lines = [[| "Hello" |]] > position = { line = 0; column = 5 } > } > ) > ) > > ╭─[ 29.68ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success ("Hello", { lines = [|"Hello"|] │ > │ position = { line = 0 │ > │ column = 5 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let whitespaceChar = > satisfy Char.IsWhiteSpace "whitespace" > > ── fsharp ────────────────────────────────────────────────────────────────────── > let spaces = many whitespaceChar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let spaces1 = many1 whitespaceChar > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr " Hello" > let parser = spaces1 .>>. pstring "Hello" > runOnInput parser input |> _assertEqual ( > Success ( > ([[ ' '; ' ' ]], "Hello"), > { > lines = [[| " Hello" |]] > position = { line = 0; column = 7 } > } > ) > ) > > ╭─[ 33.11ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success (([' '; ' '], "Hello"), { lines = [|" Hello"|] │ > │ position = { line = 0 │ > │ column = 7 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let digitChar = > satisfy Char.IsDigit "digit" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = digitChar > runOnInput parser input |> _assertEqual ( > Failure ( > "digit", > "Unexpected 'H'", > { > currentLine = "Hello" > line = 0 > column = 0 > } > ) > ) > > ╭─[ 13.31ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Failure ("digit", "Unexpected 'H'", { currentLine = "Hello" │ > │ line = 0 │ > │ column = 0 }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let pint = > let inline resultToInt (sign, digits) = > let i = int digits > match sign with > | Some ch -> -i > | None -> i > > let digits = manyChars1 digitChar > > opt (pchar '-') .>>. digits > |> mapP resultToInt > <?> "integer" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run pint "-123" > |> _assertEqual ( > Success ( > -123, > { > lines = [[| "-123" |]] > position = { line = 0; column = 4 } > } > ) > ) > > ╭─[ 17.51ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success (-123, { lines = [|"-123"|] │ > │ position = { line = 0 │ > │ column = 4 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let pfloat = > let inline resultToFloat (((sign, digits1), point), digits2) = > let fl = float $"{digits1}.{digits2}" > match sign with > | Some ch -> -fl > | None -> fl > > let digits = manyChars1 digitChar > > opt (pchar '-') .>>. digits .>>. pchar '.' .>>. digits > |> mapP resultToFloat > <?> "float" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run pfloat "-123.45" > |> _assertEqual ( > Success ( > -123.45, > { > lines = [[| "-123.45" |]] > position = { line = 0; column = 7 } > } > ) > ) > > ╭─[ 19.34ms - stdout ]─────────────────────────────────────────────────────────╮ > │ Success (-123.45, { lines = [|"-123.45"|] │ > │ position = { line = 0 │ > │ column = 7 } }) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline createParserForwardedToRef<'a> () = > let mutable parserRef : Parser<'a> = > { > label = "unknown" > parseFn = fun _ -> failwith "unfixed forwarded parser" > } > > let wrapperParser = > { parserRef with > parseFn = fun input -> runOnInput parserRef input > } > > wrapperParser, (fun v -> parserRef <- v) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (>>%) p x = > p > |>> fun _ -> x 00:00:15 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 45178 } 00:00:15 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ "nbconvert", "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark", ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:16 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb to html 00:00:16 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:16 verbose #7 ! validate(nb) 00:00:16 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:16 verbose #9 ! return _pygments_highlight( 00:00:17 verbose #10 ! [NbConvertApp] Writing 413689 bytes to /home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.html 00:00:17 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 } 00:00:17 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 } 00:00:17 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ "-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:17 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:17 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:17 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 46135 } 00:00:00 debug #1 writeDibCode / output: Fs / path: Parser.dib 00:00:00 debug #1 writeDibCode / output: Fs / path: JsonParser.dib 00:00:00 debug #3 parseDibCode / output: Fs / file: Parser.dib 00:00:00 debug #3 parseDibCode / output: Fs / file: JsonParser.dib
In [ ]:
{ pwsh ../apps/spiral/build.ps1 } | Invoke-Block
00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Supervisor.dib", "--retries", "3"])) } 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ "repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb", ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ # Supervisor (Polyglot) │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > dard2.1/FSharp.Control.AsyncSeq.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > 0/System.Reactive.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > netstandard2.0/System.Reactive.Linq.dll" > #r > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com > mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli > ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0 > /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0 > /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/ > 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll" > #r > @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha > rp.Json.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if !INTERACTIVE > open Lib > #endif > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Common > open SpiralFileSystem.Operators > open Microsoft.AspNetCore.SignalR.Client > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### sendJson │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline sendJson (port : int) (json : string) = async { > let host = "127.0.0.1" > let! portOpen = SpiralNetworking.test_port_open host port > if portOpen then > try > let connection = > HubConnectionBuilder().WithUrl($"http://{host}:{port}").Build() > do! connection.StartAsync () |> Async.AwaitTask > let! result = connection.InvokeAsync<string>("ClientToServerMsg", > json) |> Async.AwaitTask > do! connection.StopAsync () |> Async.AwaitTask > trace Verbose (fun () -> $"Supervisor.sendJson / port: {port} / > json: {json |> SpiralSm.ellipsis_end 200} / result: {result |> Option.ofObj |> > Option.map (SpiralSm.ellipsis_end 200)}") _locals > return Some result > with ex -> > trace Critical (fun () -> $"Supervisor.sendJson / port: {port} / > json: {json |> SpiralSm.ellipsis_end 200} / ex: {ex |> > SpiralSm.format_exception}") _locals > return None > else > trace Debug (fun () -> "Supervisor.sendJson / port: {port} / error: port > not open") _locals > return None > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### sendObj │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline sendObj port obj = > obj > |> System.Text.Json.JsonSerializer.Serialize > |> sendJson port > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### VSCPos │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type VSCPos = {| line : int; character : int |} > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### VSCRange │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type VSCRange = VSCPos * VSCPos > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### RString │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type RString = VSCRange * string > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### TracedError │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TracedError = {| trace : string list; message : string |} > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### ClientErrorsRes │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ClientErrorsRes = > | FatalError of string > | TracedError of TracedError > | PackageErrors of {| uri : string; errors : RString list |} > | TokenizerErrors of {| uri : string; errors : RString list |} > | ParserErrors of {| uri : string; errors : RString list |} > | TypeErrors of {| uri : string; errors : RString list |} > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### workspaceRoot │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let workspaceRoot = SpiralFileSystem.get_workspace_root () > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### awaitCompiler │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline awaitCompiler port cancellationToken = async { > let host = "127.0.0.1" > let struct (ct, disposable) = cancellationToken |> > SpiralThreading.new_disposable_token > let! ct = ct |> SpiralAsync.merge_cancellation_token_with_default_async > > let compiler = MailboxProcessor.Start (fun inbox -> async { > let! availablePort = SpiralNetworking.get_available_port (Some 180) host > port > if availablePort <> port then > inbox.Post (port, false) > else > let compilerPath = > workspaceRoot </> "deps/The-Spiral-Language/The Spiral Language > 2/artifacts/bin/The Spiral Language 2/release" > |> System.IO.Path.GetFullPath > > let dllPath = compilerPath </> "Spiral.dll" > > let! exitCode, result = > SpiralRuntime.execution_options (fun x -> > { x with > l0 = $@"dotnet ""{dllPath}"" --port {availablePort} > --default-int i32 --default-float f64" > l1 = Some ct > l3 = Some (fun struct (_, line, _) -> async { > if line |> SpiralSm.contains > $"System.IO.IOException: Failed to bind to address http://{host}:{port}: address > already in use." then > inbox.Post (port, false) > > if line |> SpiralSm.contains $"Server bound to: > http://localhost:{availablePort}" then > let rec loop retry = async { > do! > SpiralNetworking.wait_for_port_access > (Some 100) true host availablePort > |> Async.runWithTimeoutAsync 500 > |> Async.Ignore > > let _locals () = $"port: {availablePort} / > retry: {retry} / {_locals ()}" > try > let pingObj = {| Ping = true |} > let! pingResult = pingObj |> sendObj > availablePort > trace Verbose (fun () -> $"awaitCompiler > / Ping / result: '{pingResult}'") _locals > > inbox.Post (availablePort, true) > with ex -> > trace Verbose (fun () -> $"awaitCompiler > / Ping / ex: {ex |> SpiralSm.format_exception}") _locals > do! Async.Sleep 10 > do! loop (retry + 1) > } > do! loop 0 > }) > l6 = Some workspaceRoot > } > ) > |> SpiralRuntime.execute_with_options_async > > trace Debug (fun () -> $"awaitCompiler / exitCode: {exitCode} / > result: {result}") _locals > disposable.Dispose () > }, ct) > > let! serverPort, managed = compiler.Receive () > > let connection = > HubConnectionBuilder().WithUrl($"http://{host}:{serverPort}").Build () > do! connection.StartAsync () |> Async.AwaitTask > > let event = Event<_> () > let disposable' = connection.On<string> ("ServerToClientMsg", event.Trigger) > let stream = > FSharp.Control.AsyncSeq.unfoldAsync > (fun () -> async { > let! msg = event.Publish |> Async.AwaitEvent > return Some (msg |> > FSharp.Json.Json.deserialize<ClientErrorsRes>, ()) > }) > () > > let disposable' = > new_disposable (fun () -> > async { > disposable'.Dispose () > do! connection.StopAsync () |> Async.AwaitTask > disposable.Dispose () > if managed > then do! > SpiralNetworking.wait_for_port_access (Some 100) false host > serverPort > |> Async.runWithTimeoutAsync 1500 > |> Async.Ignore > } > |> Async.RunSynchronously > ) > > return > serverPort, > stream, > ct, > disposable' > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### getFilePathFromUri │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline getFilePathFromUri uri = > match System.Uri.TryCreate (uri, System.UriKind.Absolute) with > | true, uri -> uri.AbsolutePath |> System.IO.Path.GetFullPath > | _ -> failwith "invalid uri" > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### getCompilerPort │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline getCompilerPort () = > 13805 > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### serialize_obj │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let serializeObj obj = > try > obj > |> FSharp.Json.Json.serialize > |> SpiralSm.replace "\\\\" "\\" > |> SpiralSm.replace "\\r\\n" "\n" > |> SpiralSm.replace "\\n" "\n" > with ex -> > trace Critical (fun () -> "Supervisor.serialize_obj / obj: %A{obj}") > _locals > "" > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### Backend │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Backend = > | Fsharp > | Cuda > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### buildFile │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline buildFile backend timeout port cancellationToken path = > let rec loop retry = async { > let fullPath = path |> System.IO.Path.GetFullPath > let fileDir = fullPath |> System.IO.Path.GetDirectoryName > let fileName = fullPath |> System.IO.Path.GetFileNameWithoutExtension > let! code = fullPath |> SpiralFileSystem.read_all_text_async > > let stream, disposable = fileDir |> FileSystem.watchDirectory (fun _ -> > true) > use _ = disposable > > let struct (token, disposable) = SpiralThreading.new_disposable_token > cancellationToken > use _ = disposable > > let port = port |> Option.defaultWith getCompilerPort > let! serverPort, errors, ct, disposable = awaitCompiler port (Some > token) > use _ = disposable > > let outputFileName = > match backend with > | Fsharp -> $"{fileName}.fsx" > | Cuda -> $"{fileName}.py" > > let outputContentSeq = > stream > |> FSharp.Control.AsyncSeq.chooseAsync (function > | _, (FileSystem.FileSystemChange.Changed (path, Some text)) > when (path |> System.IO.Path.GetFileName) = outputFileName > -> > // fileDir </> path |> > SpiralFileSystem.read_all_text_retry_async > text |> Some |> Async.init > | _ -> None |> Async.init > ) > |> FSharp.Control.AsyncSeq.map (fun content -> > Some (content |> SpiralSm.replace "\r\n" "\n"), None > ) > > let inline printErrorData (data : {| uri : string; errors : RString list > |}) = > let fileName = data.uri |> System.IO.Path.GetFileName > let errors = > data.errors > |> List.map snd > |> SpiralSm.concat "\n" > $"{fileName}:\n{errors}" > > let errorsSeq = > errors > |> FSharp.Control.AsyncSeq.choose (fun error -> > match error with > | FatalError message -> > Some (message, error) > | TracedError data -> > Some (data.message, error) > | PackageErrors data when data.errors |> List.isEmpty |> not -> > Some (data |> printErrorData, error) > | TokenizerErrors data when data.errors |> List.isEmpty |> not > -> > Some (data |> printErrorData, error) > | ParserErrors data when data.errors |> List.isEmpty |> not -> > Some (data |> printErrorData, error) > | TypeErrors data when data.errors |> List.isEmpty |> not -> > Some (data |> printErrorData, error) > | _ -> None > ) > |> FSharp.Control.AsyncSeq.map (fun (message, error) -> > None, Some (message, error) > ) > > let timerSeq = > 500 > |> FSharp.Control.AsyncSeq.intervalMs > |> FSharp.Control.AsyncSeq.map (fun _ -> None, None) > > let outputSeq = > [[ outputContentSeq; errorsSeq; timerSeq ]] > |> FSharp.Control.AsyncSeq.mergeAll > > let! outputChild = > ((None, [[]], 0), outputSeq) > ||> FSharp.Control.AsyncSeq.scan ( > fun (outputContentResult, errors, typeErrorCount) > (outputContent, error) -> > trace Debug (fun () -> $"Supervisor.buildFile / > AsyncSeq.scan / outputContent:\n{outputContent |> Option.defaultValue > System.String.Empty |> SpiralSm.ellipsis_end 300} / errors: {errors |> > serializeObj} / outputContentResult: {outputContentResult} / typeErrorCount: > {typeErrorCount} / retry: {retry} / error: {error} / path: {path}") _locals > match outputContent, error with > | Some outputContent, None -> Some outputContent, errors, > typeErrorCount > | None, Some (_, FatalError "File main has a type error > somewhere in its path.") -> > outputContentResult, errors, typeErrorCount + 1 > | None, Some error -> outputContentResult, error :: errors, > typeErrorCount > | None, None when typeErrorCount >= 1 -> > outputContentResult, errors, typeErrorCount + 1 > | _ -> outputContentResult, errors, typeErrorCount > ) > |> FSharp.Control.AsyncSeq.takeWhileInclusive (fun (outputContent, > errors, typeErrorCount) -> > trace Debug (fun () -> $"Supervisor.buildFile / > takeWhileInclusive / outputContent:\n{outputContent |> Option.defaultValue > System.String.Empty |> SpiralSm.ellipsis_end 300} / errors: {errors |> > serializeObj} / typeErrorCount: {typeErrorCount} / retry: {retry} / path: > {path}") _locals > #if INTERACTIVE > let errorWait = 2 > #else > let errorWait = 2 > #endif > match outputContent, errors with > | None, [[]] when typeErrorCount > errorWait -> false > | None, [[]] -> true > | _ -> false > ) > |> FSharp.Control.AsyncSeq.tryLast > |> Async.withCancellationToken ct > |> Async.catch > |> Async.runWithTimeoutAsync timeout > |> Async.StartChild > > // do! Async.Sleep 60 > > let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > > let fileOpenObj = {| FileOpen = {| uri = fullPathUri; spiText = code |} > |} > let! _fileOpenResult = fileOpenObj |> sendObj serverPort > > // do! Async.Sleep 60 > > let backendId = > match backend with > | Fsharp -> "Fsharp" > | Cuda -> "Python + Cuda" > let buildFileObj = {| BuildFile = {| uri = fullPathUri; backend = > backendId |} |} > let! _buildFileResult = buildFileObj |> sendObj serverPort > > let! result, typeErrorCount = > outputChild > |> Async.map (function > | Some (Ok (Some (outputCode, errors, typeErrorCount))) -> > (outputCode, errors |> List.distinct |> List.rev), > typeErrorCount > | Some (Error ex) -> > trace Critical (fun () -> $"Supervisor.buildFile / error: > {ex |> SpiralSm.format_exception} / retry: {retry}") _locals > (None, [[]]), 0 > | _ -> (None, [[]]), 0 > ) > > match result with > | None, _ when typeErrorCount > 0 && retry = 0 -> > return! loop (retry + 1) > | _ -> > if fileDir |> SpiralSm.starts_with (workspaceRoot </> "target") then > let fileDirUri = fileDir |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > let fileDeleteObj = {| FileDelete = {| uris = [[| fileDirUri |]] > |} |} > let! _fileDeleteResult = fileDeleteObj |> sendObj serverPort > () > > let outputPath = fileDir </> outputFileName > return outputPath, result > } > loop 0 > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### SpiralInput │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type SpiralInput = > | Spi of string * string option > | Spir of string > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### persistCode │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline persistCode backend input = async { > let targetDir = workspaceRoot </> "target/spiral_Eval" > > let packagesDir = targetDir </> "packages" > > let hashHex = $"%A{backend}%A{input}" |> SpiralCrypto.hash_text > > let codeDir = packagesDir </> hashHex > codeDir |> System.IO.Directory.CreateDirectory |> ignore > > let moduleName = "main" > > let spirModule, spiModule = > match input with > | Spi (spi, Some spir) -> true, true > | Spi (spi, None) -> false, true > | Spir spir -> true, false > |> fun (spir, spi) -> > (if spir then $"real_{moduleName}*-" else ""), > if spi then moduleName else "" > > let spiprojPath = codeDir </> "package.spiproj" > let spiprojCode = > $"""packageDir: {workspaceRoot </> "lib"} > packages: > |core- > spiral- > modules: > {spirModule} > {spiModule} > """ > do! spiprojCode |> SpiralFileSystem.write_all_text_exists spiprojPath > > let spirPath = codeDir </> $"real_{moduleName}.spir" > let spiPath = codeDir </> $"{moduleName}.spi" > > let spirCode, spiCode = > match input with > | Spi (spi, Some spir) -> Some spir, Some spi > | Spi (spi, None) -> None, Some spi > | Spir spir -> Some spir, None > > match spirCode with > | Some spir -> do! spir |> SpiralFileSystem.write_all_text_exists spirPath > | None -> () > match spiCode with > | Some spi -> do! spi |> SpiralFileSystem.write_all_text_exists spiPath > | None -> () > > let spiralPath = > match input with > | Spi _ -> spiPath > | Spir _ -> spirPath > match backend with > | None -> return spiralPath, None > | Some backend -> > let outputFileName = > let fileName = > match input with > | Spi _ -> moduleName > | Spir _ -> $"real_{moduleName}" > match backend with > | Fsharp -> $"{fileName}.fsx" > | Cuda -> $"{fileName}.py" > let outputPath = codeDir </> outputFileName > if outputPath |> System.IO.File.Exists |> not > then return spiralPath, None > else > let! oldCode = spiralPath |> SpiralFileSystem.read_all_text_async > if oldCode <> (spiCode |> Option.defaultValue (spirCode |> > Option.defaultValue "")) > then return spiralPath, None > else > let! outputCode = outputPath |> > SpiralFileSystem.read_all_text_async > return spiralPath, Some (outputPath, outputCode |> > SpiralSm.replace "\r\n" "\n") > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### buildCode │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let buildCode backend isCache timeout cancellationToken input = async { > let! mainPath, outputCache = input |> persistCode (Some backend) > match outputCache with > | Some (outputPath, outputCode) when isCache -> return mainPath, > (outputPath, Some outputCode), [[]] > | _ -> > let! outputPath, (outputCode, errors) = mainPath |> buildFile backend > timeout None cancellationToken > return mainPath, (outputPath, outputCode), errors > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """inl app () = > console.write_line "text" > 1i32 > > inl main () = > app > |> dyn > |> ignore > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp false 15000 None > |> Async.runWithTimeout 15000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > Some """let rec closure1 () () : unit = > let v0 : (string -> unit) = System.Console.WriteLine > let v1 : string = "text" > v0 v1 > and closure0 () () : int32 = > let v0 : unit = () > let v1 : (unit -> unit) = closure1() > let v2 : unit = (fun () -> v1 (); v0) () > 1 > let v0 : (unit -> int32) = closure0() > () > """, > [[]] > ) > ) > > ╭─[ 4.01s - stdout ]───────────────────────────────────────────────────────────╮ > │ 00:00:09 verbose #1 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:07 debug #1 runtime.execute_with_options_async / { options = { │ > │ command = dotnet │ > │ "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ > │ Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port │ > │ 13805 --default-int i32 --default-float f64; cancellation_token = Some │ > │ System.Threading.CancellationToken; environment_variables = [||]; on_line = │ > │ Some <fun:buildCode@6-92>; stdin = None; trace = true; working_directory = │ > │ Some "/home/runner/work/polyglot/polyglot" } } │ > │ 00:00:10 verbose #2 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:10 verbose #3 networking.wait_for_port_access / { port = 13805; │ > │ retry = 0; timeout = Some 100; status = true } │ > │ 00:00:10 verbose #4 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:07 verbose #2 > 00:00:00 debug #1 pwd: │ > │ /home/runner/work/polyglot/polyglot │ > │ 00:00:07 verbose #3 > 00:00:00 debug #2 dllPath: │ > │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ > │ Language 2/artifacts/bin/The Spiral Language 2/release │ > │ 00:00:07 verbose #4 > 00:00:00 debug #3 targetDir: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval │ > │ 00:00:10 verbose #5 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:10 verbose #6 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:10 verbose #7 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:10 verbose #8 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:10 verbose #9 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:10 verbose #10 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:10 verbose #11 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:10 verbose #12 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:10 verbose #13 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:10 verbose #14 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:10 verbose #15 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:10 verbose #16 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:10 verbose #17 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:10 verbose #18 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:10 verbose #19 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:10 verbose #20 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:10 verbose #21 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:10 verbose #22 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:10 verbose #23 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:10 verbose #24 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:10 verbose #25 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:10 verbose #26 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:10 verbose #27 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:07 verbose #5 > Starting the Spiral Server. It is bound to: │ > │ http://localhost:13805 │ > │ 00:00:10 verbose #28 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:10 verbose #29 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:10 verbose #30 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:10 verbose #31 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:05 verbose #1 Supervisor.sendJson / port: 13805 / json: │ > │ {"Ping":true} / result: │ > │ 00:00:05 verbose #2 awaitCompiler / Ping / result: 'Some(null)' / port: │ > │ 13805 / retry: 0 │ > │ 00:00:08 verbose #6 > Server bound to: http://localhost:13805 │ > │ 00:00:05 debug #3 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:05 debug #4 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:05 debug #5 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:05 verbose #6 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"inl app () =\n console.write_line │ > │ \u0022text\u0022\n 1i32\n\ninl main │ > │ ...et/spiral_Eval/packages/22ccd04317d5605c65f81c7f777766f357e85dc69f2d6d04b │ > │ 9dc60aebd08a0d6/main.spi"}} / result: │ > │ 00:00:05 verbose #7 Supervisor.sendJson / port: 13805 / json: │ > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │ > │ lyglot/target/spiral_Eval/packages/22ccd04317d5605c65f81c7f777766f357e85dc69 │ > │ f2d6d04b9dc60aebd08a0d6/main.spi"}} / result: │ > │ 00:00:08 verbose #7 > 00:00:01 debug #4 │ > │ Supervisor.supervisor_server.BuildFile / file: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:05 debug #8 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:05 debug #9 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:06 debug #10 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:06 debug #11 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:06 debug #12 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:06 debug #13 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:07 debug #14 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:07 debug #15 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:07 debug #16 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:07 debug #17 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:07 debug #18 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ let rec closure1 () () : unit = │ > │ let v0 : (string -> unit) = System.Console.WriteLine │ > │ let v1 : string = "text" │ > │ v0 v1 │ > │ and closure0 () () : i...t v0 : unit = () │ > │ let v1 : (unit -> unit) = closure1() │ > │ let v2 : unit = (fun () -> v1 (); v0) () │ > │ 1 │ > │ let v0 : (unit -> int32) = closure0() │ > │ () │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:07 debug #19 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ let rec closure1 () () : unit = │ > │ let v0 : (string -> unit) = System.Console.WriteLine │ > │ let v1 : string = "text" │ > │ v0 v1 │ > │ and closure0 () () : i...t v0 : unit = () │ > │ let v1 : (unit -> unit) = closure1() │ > │ let v2 : unit = (fun () -> v1 (); v0) () │ > │ 1 │ > │ let v0 : (unit -> int32) = closure0() │ > │ () │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:07 verbose #20 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22cc │ > │ d04317d5605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6"]}} / result: │ > │ 00:00:13 verbose #32 networking.wait_for_port_access / { port = 13805; │ > │ retry = 0; timeout = Some 100; status = false } │ > │ 00:00:13 verbose #33 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:08 debug #21 FileSystem.watchWithFilter / Disposing watch │ > │ stream / filter: FileName, LastWrite │ > │ Some │ > │ (Some │ > │ "let rec closure1 () () : unit = │ > │ let v0 : (string -> unit) = System.Console.WriteLine │ > │ let v1 : string = "text" │ > │ v0 v1 │ > │ and closure0 () () : int32 = │ > │ let v0 : unit = () │ > │ let v1 : (unit -> unit) = closure1() │ > │ let v2 : unit = (fun () -> v1 (); v0) () │ > │ 1 │ > │ let v0 : (unit -> int32) = closure0() │ > │ () │ > │ ", │ > │ []) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "" > |> fun code -> Spi (code, None) > |> buildCode Fsharp false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ "Cannot find `main` in file main." ]] > ) > ) > > ╭─[ 3.35s - stdout ]───────────────────────────────────────────────────────────╮ > │ 00:00:13 verbose #34 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:11 debug #8 runtime.execute_with_options_async / { options = { │ > │ command = dotnet │ > │ "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ > │ Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port │ > │ 13805 --default-int i32 --default-float f64; cancellation_token = Some │ > │ System.Threading.CancellationToken; environment_variables = [||]; on_line = │ > │ Some <fun:buildCode@6-92>; stdin = None; trace = true; working_directory = │ > │ Some "/home/runner/work/polyglot/polyglot" } } │ > │ 00:00:14 verbose #35 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:14 verbose #36 networking.wait_for_port_access / { port = 13805; │ > │ retry = 0; timeout = Some 100; status = true } │ > │ 00:00:14 verbose #37 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:14 verbose #38 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:11 verbose #9 > 00:00:00 debug #1 pwd: │ > │ /home/runner/work/polyglot/polyglot │ > │ 00:00:11 verbose #10 > 00:00:00 debug #2 dllPath: │ > │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ > │ Language 2/artifacts/bin/The Spiral Language 2/release │ > │ 00:00:11 verbose #11 > 00:00:00 debug #3 targetDir: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval │ > │ 00:00:14 verbose #39 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:14 verbose #40 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:14 verbose #41 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:14 verbose #42 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:14 verbose #43 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:14 verbose #44 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:14 verbose #45 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:14 verbose #46 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:14 verbose #47 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:14 verbose #48 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:14 verbose #49 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:14 verbose #50 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:14 verbose #51 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:14 verbose #52 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:14 verbose #53 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:14 verbose #54 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:14 verbose #55 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:14 verbose #56 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:14 verbose #57 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:14 verbose #58 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:11 verbose #12 > Starting the Spiral Server. It is bound to: │ > │ http://localhost:13805 │ > │ 00:00:14 verbose #59 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:14 verbose #60 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:14 verbose #61 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:08 verbose #22 Supervisor.sendJson / port: 13805 / json: │ > │ {"Ping":true} / result: │ > │ 00:00:08 verbose #23 awaitCompiler / Ping / result: 'Some(null)' / │ > │ port: 13805 / retry: 0 │ > │ 00:00:11 verbose #13 > Server bound to: http://localhost:13805 │ > │ 00:00:08 debug #24 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ > │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ > │ 00:00:08 debug #25 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ > │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ > │ 00:00:08 debug #26 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ > │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ > │ 00:00:08 verbose #27 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"","uri":"file:///home/runner/work/polyglot/polyglot/ │ > │ target/spiral_Eval/packages/a65342ccc7da0da967b18d8e705d0260e9a932e5e68c0feb │ > │ 33db55c4d28170aa/main.spi"}} / result: │ > │ 00:00:08 verbose #28 Supervisor.sendJson / port: 13805 / json: │ > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │ > │ lyglot/target/spiral_Eval/packages/a65342ccc7da0da967b18d8e705d0260e9a932e5e │ > │ 68c0feb33db55c4d28170aa/main.spi"}} / result: │ > │ 00:00:12 verbose #14 > 00:00:00 debug #4 │ > │ Supervisor.supervisor_server.BuildFile / file: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ > │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ > │ 00:00:09 debug #29 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ > │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ > │ 00:00:09 debug #30 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ > │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ > │ 00:00:09 debug #31 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ > │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ > │ 00:00:09 debug #32 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ > │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ > │ 00:00:10 debug #33 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ > │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ > │ 00:00:10 debug #34 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ > │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ > │ 00:00:10 debug #35 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ > │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ > │ 00:00:10 debug #36 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ > │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ > │ 00:00:11 debug #37 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ > │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ > │ 00:00:11 debug #38 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ > │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ > │ 00:00:11 debug #39 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: Some((Cannot find `main` in file main., FatalError "Cannot find │ > │ `main` in file main.")) / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ > │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ > │ 00:00:11 debug #40 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [ │ > │ [ │ > │ "Cannot find `main` in file main.", │ > │ { │ > │ "FatalError": "Cannot find `main` in file main." │ > │ } │ > │ ] │ > │ ] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ > │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ > │ 00:00:11 verbose #41 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a653 │ > │ 42ccc7da0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa"]}} / result: │ > │ 00:00:17 verbose #62 networking.wait_for_port_access / { port = 13805; │ > │ retry = 0; timeout = Some 100; status = false } │ > │ 00:00:17 verbose #63 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:11 debug #42 FileSystem.watchWithFilter / Disposing watch │ > │ stream / filter: FileName, LastWrite │ > │ Some (None, ["Cannot find `main` in file main."]) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """inl main () = > 1i32 / 0i32 > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ "An attempt to divide by zero has been detected at compile time." ]] > ) > ) > > ╭─[ 3.15s - stdout ]───────────────────────────────────────────────────────────╮ > │ 00:00:17 verbose #64 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:14 debug #15 runtime.execute_with_options_async / { options = { │ > │ command = dotnet │ > │ "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ > │ Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port │ > │ 13805 --default-int i32 --default-float f64; cancellation_token = Some │ > │ System.Threading.CancellationToken; environment_variables = [||]; on_line = │ > │ Some <fun:buildCode@6-92>; stdin = None; trace = true; working_directory = │ > │ Some "/home/runner/work/polyglot/polyglot" } } │ > │ 00:00:17 verbose #65 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:17 verbose #66 networking.wait_for_port_access / { port = 13805; │ > │ retry = 0; timeout = Some 100; status = true } │ > │ 00:00:17 verbose #67 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:17 verbose #68 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:14 verbose #16 > 00:00:00 debug #1 pwd: │ > │ /home/runner/work/polyglot/polyglot │ > │ 00:00:14 verbose #17 > 00:00:00 debug #2 dllPath: │ > │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ > │ Language 2/artifacts/bin/The Spiral Language 2/release │ > │ 00:00:14 verbose #18 > 00:00:00 debug #3 targetDir: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval │ > │ 00:00:17 verbose #69 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:17 verbose #70 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:17 verbose #71 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:17 verbose #72 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:17 verbose #73 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:17 verbose #74 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:17 verbose #75 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:17 verbose #76 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:17 verbose #77 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:17 verbose #78 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:17 verbose #79 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:17 verbose #80 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:17 verbose #81 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:17 verbose #82 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:17 verbose #83 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:17 verbose #84 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:17 verbose #85 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:17 verbose #86 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:17 verbose #87 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:17 verbose #88 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:14 verbose #19 > Starting the Spiral Server. It is bound to: │ > │ http://localhost:13805 │ > │ 00:00:17 verbose #89 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:17 verbose #90 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:17 verbose #91 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:17 verbose #92 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:12 verbose #43 Supervisor.sendJson / port: 13805 / json: │ > │ {"Ping":true} / result: │ > │ 00:00:12 verbose #44 awaitCompiler / Ping / result: 'Some(null)' / │ > │ port: 13805 / retry: 0 │ > │ 00:00:15 verbose #20 > Server bound to: http://localhost:13805 │ > │ 00:00:12 debug #45 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ > │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ > │ 00:00:12 debug #46 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ > │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ > │ 00:00:12 debug #47 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ > │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ > │ 00:00:12 verbose #48 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"inl main () =\n 1i32 / │ > │ 0i32\n","uri":"file:///home/runner/work/polyglot/p...et/spiral_Eval/packages │ > │ /fef9812d9b06b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi"} │ > │ } / result: │ > │ 00:00:12 verbose #49 Supervisor.sendJson / port: 13805 / json: │ > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │ > │ lyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6ff05910b73 │ > │ ead9e8c4f27f88d2a5cdfb2/main.spi"}} / result: │ > │ 00:00:15 verbose #21 > 00:00:00 debug #4 │ > │ Supervisor.supervisor_server.BuildFile / file: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ > │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ > │ 00:00:12 debug #50 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ > │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ > │ 00:00:12 debug #51 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ > │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ > │ 00:00:13 debug #52 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ > │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ > │ 00:00:13 debug #53 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ > │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ > │ 00:00:13 debug #54 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ > │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ > │ 00:00:13 debug #55 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ > │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ > │ 00:00:14 debug #56 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ > │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ > │ 00:00:14 debug #57 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ > │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ > │ 00:00:14 debug #58 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: Some((An attempt to divide by zero has been detected at compile │ > │ time., TracedError │ > │ { message = "An attempt to divide by zero has been detected at compile │ > │ time." │ > │ trace = │ > │ ["Error trace on line: 1, column: 10 in module: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ > │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. │ > │ inl main () = │ > │ ^ │ > │ "; │ > │ "Error trace on line: 2, column: 5 in module: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ > │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. │ > │ 1i32 / 0i32 │ > │ ^ │ > │ "] })) / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ > │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ > │ 00:00:14 debug #59 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [ │ > │ [ │ > │ "An attempt to divide by zero has been detected at compile time.", │ > │ { │ > │ "TracedError": { │ > │ "message": "An attempt to divide by zero has been detected at │ > │ compile time.", │ > │ "trace": [ │ > │ "Error trace on line: 1, column: 10 in module: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ > │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. │ > │ inl main () = │ > │ ^ │ > │ ", │ > │ "Error trace on line: 2, column: 5 in module: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ > │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. │ > │ 1i32 / 0i32 │ > │ ^ │ > │ " │ > │ ] │ > │ } │ > │ } │ > │ ] │ > │ ] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ > │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ > │ 00:00:14 verbose #60 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9 │ > │ 812d9b06b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2"]}} / result: │ > │ 00:00:20 verbose #93 networking.wait_for_port_access / { port = 13805; │ > │ retry = 0; timeout = Some 100; status = false } │ > │ 00:00:20 verbose #94 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:14 debug #61 FileSystem.watchWithFilter / Disposing watch │ > │ stream / filter: FileName, LastWrite │ > │ Some (None, ["An attempt to divide by zero has been detected at compile │ > │ time."]) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """inl main () = > 1 + "" > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ > "main.spi: > Constraint satisfaction error. > Got: string > Fails to satisfy: number" > ]] > ) > ) > > ── fsharp ────────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ Expecto.AssertException: Testing.__expect.<br/> │ > │ <span style="color: green;">expected</span>:<br/> │ > │ Some<span style="color: green;"><br/> │ > │ (None,<br/> │ > │ ["main.spi:<br/> │ > │ Constraint satisfaction error.<br/> │ > │ Got: string<br/> │ > │ Fails to satisfy: number"])</span><br/> │ > │ <span style="color: red;"> actual</span>:<br/> │ > │ Some<span style="color: red;"> (None, [])</span><br/> │ > │ at Expecto.Expect.equalWithDiffPrinter@401-15.Invoke(String msg)<br/> │ > │ at Expecto.Expect.equalWithDiffPrinter$cont@383[a](FSharpFunc`2 │ > │ diffPrinter, a actual, a expected, String message, Object e, Object a, Unit │ > │ unitVar) in C:\workspaces\dotnet\expecto\Expecto\Expect.fs:line 401<br/> │ > │ at Expecto.Expect.equalWithDiffPrinter[a](FSharpFunc`2 diffPrinter, a │ > │ actual, a expected, String message)<br/> │ > │ at <StartupCode$FSI_0049>.$FSI_0049.main@() │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ╭─[ 4.02s - stderr ]───────────────────────────────────────────────────────────╮ > │ 00:00:20 verbose #95 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:17 debug #22 runtime.execute_with_options_async / { options = { │ > │ command = dotnet │ > │ "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ > │ Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port │ > │ 13805 --default-int i32 --default-float f64; cancellation_token = Some │ > │ System.Threading.CancellationToken; environment_variables = [||]; on_line = │ > │ Some <fun:buildCode@6-92>; stdin = None; trace = true; working_directory = │ > │ Some "/home/runner/work/polyglot/polyglot" } } │ > │ 00:00:20 verbose #96 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:20 verbose #97 networking.wait_for_port_access / { port = 13805; │ > │ retry = 0; timeout = Some 100; status = true } │ > │ 00:00:20 verbose #98 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:20 verbose #99 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:17 verbose #23 > 00:00:00 debug #1 pwd: │ > │ /home/runner/work/polyglot/polyglot │ > │ 00:00:17 verbose #24 > 00:00:00 debug #2 dllPath: │ > │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ > │ Language 2/artifacts/bin/The Spiral Language 2/release │ > │ 00:00:17 verbose #25 > 00:00:00 debug #3 targetDir: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval │ > │ 00:00:20 verbose #100 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:20 verbose #101 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:20 verbose #102 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:20 verbose #103 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:20 verbose #104 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:20 verbose #105 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:20 verbose #106 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:20 verbose #107 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:20 verbose #108 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:20 verbose #109 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:20 verbose #110 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:20 verbose #111 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:20 verbose #112 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:20 verbose #113 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:20 verbose #114 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:20 verbose #115 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:20 verbose #116 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:20 verbose #117 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:20 verbose #118 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:20 verbose #119 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:18 verbose #26 > Starting the Spiral Server. It is bound to: │ > │ http://localhost:13805 │ > │ 00:00:20 verbose #120 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:20 verbose #121 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:20 verbose #122 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:15 verbose #62 Supervisor.sendJson / port: 13805 / json: │ > │ {"Ping":true} / result: │ > │ 00:00:15 verbose #63 awaitCompiler / Ping / result: 'Some(null)' / │ > │ port: 13805 / retry: 0 │ > │ 00:00:18 verbose #27 > Server bound to: http://localhost:13805 │ > │ 00:00:15 debug #64 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:15 debug #65 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:15 debug #66 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:15 verbose #67 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"inl main () =\n 1 \u002B │ > │ \u0022\u0022\n","uri":"file:///home/runner/work/...et/spiral_Eval/packages/c │ > │ 030f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"}} │ > │ / result: │ > │ 00:00:15 verbose #68 Supervisor.sendJson / port: 13805 / json: │ > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │ > │ lyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9aabeace67685221d91a4 │ > │ 6e3655199e42df713504aa0/main.spi"}} / result: │ > │ 00:00:18 verbose #28 > 00:00:00 debug #4 │ > │ Supervisor.supervisor_server.BuildFile / file: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:15 debug #69 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:15 debug #70 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:16 debug #71 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:16 debug #72 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:16 debug #73 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:16 debug #74 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:17 debug #75 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:17 debug #76 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:17 debug #77 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: Some((File main has a type error somewhere in its path., FatalError │ > │ "File main has a type error somewhere in its path.")) / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:17 debug #78 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 1 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:17 debug #79 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 1 / retry: 0 / │ > │ error: Some((main.spi: │ > │ Constraint satisfaction error. │ > │ Got: string │ > │ Fails to satisfy: number, TypeErrors │ > │ { errors = │ > │ [(({ character = 8 │ > │ line = 1 }, { character = 10 │ > │ line = 1 }), │ > │ "Constraint satisfaction error. │ > │ Got: string │ > │ Fails to satisfy: number")] │ > │ uri = │ > │ │ > │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030 │ > │ f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" })) / │ > │ path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:17 debug #80 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [ │ > │ [ │ > │ "main.spi: │ > │ Constraint satisfaction error. │ > │ Got: string │ > │ Fails to satisfy: number", │ > │ { │ > │ "TypeErrors": { │ > │ "errors": [ │ > │ [ │ > │ [ │ > │ { │ > │ "character": 8, │ > │ "line": 1 │ > │ }, │ > │ { │ > │ "character": 10, │ > │ "line": 1 │ > │ } │ > │ ], │ > │ "Constraint satisfaction error. │ > │ Got: string │ > │ Fails to satisfy: number" │ > │ ] │ > │ ], │ > │ "uri": │ > │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030 │ > │ f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" │ > │ } │ > │ } │ > │ ] │ > │ ] / typeErrorCount: 1 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:23 verbose #123 networking.test_port_open / { port = 13806; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:17 debug #81 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 1 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:17 debug #82 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 1 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:17 debug #83 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 1 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:17 verbose #84 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"inl main () =\n 1 \u002B │ > │ \u0022\u0022\n","uri":"file:///home/runner/work/...et/spiral_Eval/packages/c │ > │ 030f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"}} │ > │ / result: │ > │ 00:00:17 verbose #85 Supervisor.sendJson / port: 13805 / json: │ > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │ > │ lyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9aabeace67685221d91a4 │ > │ 6e3655199e42df713504aa0/main.spi"}} / result: │ > │ 00:00:20 verbose #29 > 00:00:02 debug #5 │ > │ Supervisor.supervisor_server.BuildFile / file: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:17 debug #86 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 1 / │ > │ error: Some((File main has a type error somewhere in its path., FatalError │ > │ "File main has a type error somewhere in its path.")) / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:17 debug #87 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 1 / retry: 1 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:17 debug #88 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 1 / retry: 1 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:17 debug #89 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 2 / retry: 1 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:18 debug #90 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 2 / retry: 1 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:18 debug #91 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 3 / retry: 1 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:18 verbose #92 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030 │ > │ f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0"]}} / result: │ > │ 00:00:18 debug #93 FileSystem.watchWithFilter / Disposing watch │ > │ stream / filter: FileName, LastWrite │ > │ 00:00:24 verbose #124 networking.wait_for_port_access / { port = 13805; │ > │ retry = 0; timeout = Some 100; status = false } │ > │ 00:00:24 verbose #125 networking.test_port_open / { port = 13805; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:18 debug #94 FileSystem.watchWithFilter / Disposing watch │ > │ stream / filter: FileName, LastWrite │ > │ Some (None, []) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > NotebookRunner.RunNotebookAsync / exiting... 3 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """inl main () = > x + y > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ > "main.spi: > Unbound variable: x. > Unbound variable: y." > ]] > ) > ) > NotebookRunner.RunNotebookAsync / exiting... 2 > NotebookRunner.RunNotebookAsync / exiting... 1 00:00:33 verbose #3 runtime.execute_with_options / result / { exit_code = 137; std_trace_length = 146785 } 00:00:33 debug #4 spiral_builder.run / repl error / { exit_code = 137; repl_result = ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ # Supervisor (Polyglot) │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan dard2.1/FSharp.Control.AsyncSeq.dll" #r @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. 0/System.Reactive.dll" #r @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ netstandard2.0/System.Reactive.Linq.dll" #r @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" #r @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll" #r @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll" #r @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0 /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll" #r @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0 /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll" #r @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/ 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll" #r @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha rp.Json.dll" ── fsharp ────────────────────────────────────────────────────────────────────── #if !INTERACTIVE open Lib #endif ── fsharp ────────────────────────────────────────────────────────────────────── open Common open SpiralFileSystem.Operators open Microsoft.AspNetCore.SignalR.Client ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### sendJson │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline sendJson (port : int) (json : string) = async { let host = "127.0.0.1" let! portOpen = SpiralNetworking.test_port_open host port if portOpen then try let connection = HubConnectionBuilder().WithUrl($"http://{host}:{port}").Build() do! connection.StartAsync () |> Async.AwaitTask let! result = connection.InvokeAsync<string>("ClientToServerMsg", json) |> Async.AwaitTask do! connection.StopAsync () |> Async.AwaitTask trace Verbose (fun () -> $"Supervisor.sendJson / port: {port} / json: {json |> SpiralSm.ellipsis_end 200} / result: {result |> Option.ofObj |> Option.map (SpiralSm.ellipsis_end 200)}") _locals return Some result with ex -> trace Critical (fun () -> $"Supervisor.sendJson / port: {port} / json: {json |> SpiralSm.ellipsis_end 200} / ex: {ex |> SpiralSm.format_exception}") _locals return None else trace Debug (fun () -> "Supervisor.sendJson / port: {port} / error: port not open") _locals return None } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### sendObj │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline sendObj port obj = obj |> System.Text.Json.JsonSerializer.Serialize |> sendJson port ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### VSCPos │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── type VSCPos = {| line : int; character : int |} ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### VSCRange │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── type VSCRange = VSCPos * VSCPos ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### RString │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── type RString = VSCRange * string ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### TracedError │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── type TracedError = {| trace : string list; message : string |} ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### ClientErrorsRes │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── type ClientErrorsRes = | FatalError of string | TracedError of TracedError | PackageErrors of {| uri : string; errors : RString list |} | TokenizerErrors of {| uri : string; errors : RString list |} | ParserErrors of {| uri : string; errors : RString list |} | TypeErrors of {| uri : string; errors : RString list |} ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### workspaceRoot │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let workspaceRoot = SpiralFileSystem.get_workspace_root () ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### awaitCompiler │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline awaitCompiler port cancellationToken = async { let host = "127.0.0.1" let struct (ct, disposable) = cancellationToken |> SpiralThreading.new_disposable_token let! ct = ct |> SpiralAsync.merge_cancellation_token_with_default_async let compiler = MailboxProcessor.Start (fun inbox -> async { let! availablePort = SpiralNetworking.get_available_port (Some 180) host port if availablePort <> port then inbox.Post (port, false) else let compilerPath = workspaceRoot </> "deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release" |> System.IO.Path.GetFullPath let dllPath = compilerPath </> "Spiral.dll" let! exitCode, result = SpiralRuntime.execution_options (fun x -> { x with l0 = $@"dotnet ""{dllPath}"" --port {availablePort} --default-int i32 --default-float f64" l1 = Some ct l3 = Some (fun struct (_, line, _) -> async { if line |> SpiralSm.contains $"System.IO.IOException: Failed to bind to address http://{host}:{port}: address already in use." then inbox.Post (port, false) if line |> SpiralSm.contains $"Server bound to: http://localhost:{availablePort}" then let rec loop retry = async { do! SpiralNetworking.wait_for_port_access (Some 100) true host availablePort |> Async.runWithTimeoutAsync 500 |> Async.Ignore let _locals () = $"port: {availablePort} / retry: {retry} / {_locals ()}" try let pingObj = {| Ping = true |} let! pingResult = pingObj |> sendObj availablePort trace Verbose (fun () -> $"awaitCompiler / Ping / result: '{pingResult}'") _locals inbox.Post (availablePort, true) with ex -> trace Verbose (fun () -> $"awaitCompiler / Ping / ex: {ex |> SpiralSm.format_exception}") _locals do! Async.Sleep 10 do! loop (retry + 1) } do! loop 0 }) l6 = Some workspaceRoot } ) |> SpiralRuntime.execute_with_options_async trace Debug (fun () -> $"awaitCompiler / exitCode: {exitCode} / result: {result}") _locals disposable.Dispose () }, ct) let! serverPort, managed = compiler.Receive () let connection = HubConnectionBuilder().WithUrl($"http://{host}:{serverPort}").Build () do! connection.StartAsync () |> Async.AwaitTask let event = Event<_> () let disposable' = connection.On<string> ("ServerToClientMsg", event.Trigger) let stream = FSharp.Control.AsyncSeq.unfoldAsync (fun () -> async { let! msg = event.Publish |> Async.AwaitEvent return Some (msg |> FSharp.Json.Json.deserialize<ClientErrorsRes>, ()) }) () let disposable' = new_disposable (fun () -> async { disposable'.Dispose () do! connection.StopAsync () |> Async.AwaitTask disposable.Dispose () if managed then do! SpiralNetworking.wait_for_port_access (Some 100) false host serverPort |> Async.runWithTimeoutAsync 1500 |> Async.Ignore } |> Async.RunSynchronously ) return serverPort, stream, ct, disposable' } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### getFilePathFromUri │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline getFilePathFromUri uri = match System.Uri.TryCreate (uri, System.UriKind.Absolute) with | true, uri -> uri.AbsolutePath |> System.IO.Path.GetFullPath | _ -> failwith "invalid uri" ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### getCompilerPort │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline getCompilerPort () = 13805 ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### serialize_obj │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let serializeObj obj = try obj |> FSharp.Json.Json.serialize |> SpiralSm.replace "\\\\" "\\" |> SpiralSm.replace "\\r\\n" "\n" |> SpiralSm.replace "\\n" "\n" with ex -> trace Critical (fun () -> "Supervisor.serialize_obj / obj: %A{obj}") _locals "" ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### Backend │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── type Backend = | Fsharp | Cuda ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### buildFile │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline buildFile backend timeout port cancellationToken path = let rec loop retry = async { let fullPath = path |> System.IO.Path.GetFullPath let fileDir = fullPath |> System.IO.Path.GetDirectoryName let fileName = fullPath |> System.IO.Path.GetFileNameWithoutExtension let! code = fullPath |> SpiralFileSystem.read_all_text_async let stream, disposable = fileDir |> FileSystem.watchDirectory (fun _ -> true) use _ = disposable let struct (token, disposable) = SpiralThreading.new_disposable_token cancellationToken use _ = disposable let port = port |> Option.defaultWith getCompilerPort let! serverPort, errors, ct, disposable = awaitCompiler port (Some token) use _ = disposable let outputFileName = match backend with | Fsharp -> $"{fileName}.fsx" | Cuda -> $"{fileName}.py" let outputContentSeq = stream |> FSharp.Control.AsyncSeq.chooseAsync (function | _, (FileSystem.FileSystemChange.Changed (path, Some text)) when (path |> System.IO.Path.GetFileName) = outputFileName -> // fileDir </> path |> SpiralFileSystem.read_all_text_retry_async text |> Some |> Async.init | _ -> None |> Async.init ) |> FSharp.Control.AsyncSeq.map (fun content -> Some (content |> SpiralSm.replace "\r\n" "\n"), None ) let inline printErrorData (data : {| uri : string; errors : RString list |}) = let fileName = data.uri |> System.IO.Path.GetFileName let errors = data.errors |> List.map snd |> SpiralSm.concat "\n" $"{fileName}:\n{errors}" let errorsSeq = errors |> FSharp.Control.AsyncSeq.choose (fun error -> match error with | FatalError message -> Some (message, error) | TracedError data -> Some (data.message, error) | PackageErrors data when data.errors |> List.isEmpty |> not -> Some (data |> printErrorData, error) | TokenizerErrors data when data.errors |> List.isEmpty |> not -> Some (data |> printErrorData, error) | ParserErrors data when data.errors |> List.isEmpty |> not -> Some (data |> printErrorData, error) | TypeErrors data when data.errors |> List.isEmpty |> not -> Some (data |> printErrorData, error) | _ -> None ) |> FSharp.Control.AsyncSeq.map (fun (message, error) -> None, Some (message, error) ) let timerSeq = 500 |> FSharp.Control.AsyncSeq.intervalMs |> FSharp.Control.AsyncSeq.map (fun _ -> None, None) let outputSeq = [[ outputContentSeq; errorsSeq; timerSeq ]] |> FSharp.Control.AsyncSeq.mergeAll let! outputChild = ((None, [[]], 0), outputSeq) ||> FSharp.Control.AsyncSeq.scan ( fun (outputContentResult, errors, typeErrorCount) (outputContent, error) -> trace Debug (fun () -> $"Supervisor.buildFile / AsyncSeq.scan / outputContent:\n{outputContent |> Option.defaultValue System.String.Empty |> SpiralSm.ellipsis_end 300} / errors: {errors |> serializeObj} / outputContentResult: {outputContentResult} / typeErrorCount: {typeErrorCount} / retry: {retry} / error: {error} / path: {path}") _locals match outputContent, error with | Some outputContent, None -> Some outputContent, errors, typeErrorCount | None, Some (_, FatalError "File main has a type error somewhere in its path.") -> outputContentResult, errors, typeErrorCount + 1 | None, Some error -> outputContentResult, error :: errors, typeErrorCount | None, None when typeErrorCount >= 1 -> outputContentResult, errors, typeErrorCount + 1 | _ -> outputContentResult, errors, typeErrorCount ) |> FSharp.Control.AsyncSeq.takeWhileInclusive (fun (outputContent, errors, typeErrorCount) -> trace Debug (fun () -> $"Supervisor.buildFile / takeWhileInclusive / outputContent:\n{outputContent |> Option.defaultValue System.String.Empty |> SpiralSm.ellipsis_end 300} / errors: {errors |> serializeObj} / typeErrorCount: {typeErrorCount} / retry: {retry} / path: {path}") _locals #if INTERACTIVE let errorWait = 2 #else let errorWait = 2 #endif match outputContent, errors with | None, [[]] when typeErrorCount > errorWait -> false | None, [[]] -> true | _ -> false ) |> FSharp.Control.AsyncSeq.tryLast |> Async.withCancellationToken ct |> Async.catch |> Async.runWithTimeoutAsync timeout |> Async.StartChild // do! Async.Sleep 60 let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> SpiralFileSystem.new_file_uri let fileOpenObj = {| FileOpen = {| uri = fullPathUri; spiText = code |} |} let! _fileOpenResult = fileOpenObj |> sendObj serverPort // do! Async.Sleep 60 let backendId = match backend with | Fsharp -> "Fsharp" | Cuda -> "Python + Cuda" let buildFileObj = {| BuildFile = {| uri = fullPathUri; backend = backendId |} |} let! _buildFileResult = buildFileObj |> sendObj serverPort let! result, typeErrorCount = outputChild |> Async.map (function | Some (Ok (Some (outputCode, errors, typeErrorCount))) -> (outputCode, errors |> List.distinct |> List.rev), typeErrorCount | Some (Error ex) -> trace Critical (fun () -> $"Supervisor.buildFile / error: {ex |> SpiralSm.format_exception} / retry: {retry}") _locals (None, [[]]), 0 | _ -> (None, [[]]), 0 ) match result with | None, _ when typeErrorCount > 0 && retry = 0 -> return! loop (retry + 1) | _ -> if fileDir |> SpiralSm.starts_with (workspaceRoot </> "target") then let fileDirUri = fileDir |> SpiralFileSystem.normalize_path |> SpiralFileSystem.new_file_uri let fileDeleteObj = {| FileDelete = {| uris = [[| fileDirUri |]] |} |} let! _fileDeleteResult = fileDeleteObj |> sendObj serverPort () let outputPath = fileDir </> outputFileName return outputPath, result } loop 0 ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### SpiralInput │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── type SpiralInput = | Spi of string * string option | Spir of string ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### persistCode │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let inline persistCode backend input = async { let targetDir = workspaceRoot </> "target/spiral_Eval" let packagesDir = targetDir </> "packages" let hashHex = $"%A{backend}%A{input}" |> SpiralCrypto.hash_text let codeDir = packagesDir </> hashHex codeDir |> System.IO.Directory.CreateDirectory |> ignore let moduleName = "main" let spirModule, spiModule = match input with | Spi (spi, Some spir) -> true, true | Spi (spi, None) -> false, true | Spir spir -> true, false |> fun (spir, spi) -> (if spir then $"real_{moduleName}*-" else ""), if spi then moduleName else "" let spiprojPath = codeDir </> "package.spiproj" let spiprojCode = $"""packageDir: {workspaceRoot </> "lib"} packages: |core- spiral- modules: {spirModule} {spiModule} """ do! spiprojCode |> SpiralFileSystem.write_all_text_exists spiprojPath let spirPath = codeDir </> $"real_{moduleName}.spir" let spiPath = codeDir </> $"{moduleName}.spi" let spirCode, spiCode = match input with | Spi (spi, Some spir) -> Some spir, Some spi | Spi (spi, None) -> None, Some spi | Spir spir -> Some spir, None match spirCode with | Some spir -> do! spir |> SpiralFileSystem.write_all_text_exists spirPath | None -> () match spiCode with | Some spi -> do! spi |> SpiralFileSystem.write_all_text_exists spiPath | None -> () let spiralPath = match input with | Spi _ -> spiPath | Spir _ -> spirPath match backend with | None -> return spiralPath, None | Some backend -> let outputFileName = let fileName = match input with | Spi _ -> moduleName | Spir _ -> $"real_{moduleName}" match backend with | Fsharp -> $"{fileName}.fsx" | Cuda -> $"{fileName}.py" let outputPath = codeDir </> outputFileName if outputPath |> System.IO.File.Exists |> not then return spiralPath, None else let! oldCode = spiralPath |> SpiralFileSystem.read_all_text_async if oldCode <> (spiCode |> Option.defaultValue (spirCode |> Option.defaultValue "")) then return spiralPath, None else let! outputCode = outputPath |> SpiralFileSystem.read_all_text_async return spiralPath, Some (outputPath, outputCode |> SpiralSm.replace "\r\n" "\n") } ── markdown ──────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ ### buildCode │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── let buildCode backend isCache timeout cancellationToken input = async { let! mainPath, outputCache = input |> persistCode (Some backend) match outputCache with | Some (outputPath, outputCode) when isCache -> return mainPath, (outputPath, Some outputCode), [[]] | _ -> let! outputPath, (outputCode, errors) = mainPath |> buildFile backend timeout None cancellationToken return mainPath, (outputPath, outputCode), errors } ── fsharp ────────────────────────────────────────────────────────────────────── //// test """inl app () = console.write_line "text" 1i32 inl main () = app |> dyn |> ignore """ |> fun code -> Spi (code, None) |> buildCode Fsharp false 15000 None |> Async.runWithTimeout 15000 |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> List.map fst) |> _assertEqual ( Some ( Some """let rec closure1 () () : unit = let v0 : (string -> unit) = System.Console.WriteLine let v1 : string = "text" v0 v1 and closure0 () () : int32 = let v0 : unit = () let v1 : (unit -> unit) = closure1() let v2 : unit = (fun () -> v1 (); v0) () 1 let v0 : (unit -> int32) = closure0() () """, [[]] ) ) ╭─[ 4.01s - stdout ]───────────────────────────────────────────────────────────╮ │ 00:00:09 verbose #1 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:07 debug #1 runtime.execute_with_options_async / { options = { │ │ command = dotnet │ │ "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ │ Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port │ │ 13805 --default-int i32 --default-float f64; cancellation_token = Some │ │ System.Threading.CancellationToken; environment_variables = [||]; on_line = │ │ Some <fun:buildCode@6-92>; stdin = None; trace = true; working_directory = │ │ Some "/home/runner/work/polyglot/polyglot" } } │ │ 00:00:10 verbose #2 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:10 verbose #3 networking.wait_for_port_access / { port = 13805; │ │ retry = 0; timeout = Some 100; status = true } │ │ 00:00:10 verbose #4 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:07 verbose #2 > 00:00:00 debug #1 pwd: │ │ /home/runner/work/polyglot/polyglot │ │ 00:00:07 verbose #3 > 00:00:00 debug #2 dllPath: │ │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ │ Language 2/artifacts/bin/The Spiral Language 2/release │ │ 00:00:07 verbose #4 > 00:00:00 debug #3 targetDir: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval │ │ 00:00:10 verbose #5 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:10 verbose #6 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:10 verbose #7 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:10 verbose #8 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:10 verbose #9 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:10 verbose #10 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:10 verbose #11 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:10 verbose #12 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:10 verbose #13 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:10 verbose #14 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:10 verbose #15 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:10 verbose #16 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:10 verbose #17 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:10 verbose #18 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:10 verbose #19 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:10 verbose #20 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:10 verbose #21 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:10 verbose #22 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:10 verbose #23 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:10 verbose #24 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:10 verbose #25 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:10 verbose #26 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:10 verbose #27 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:07 verbose #5 > Starting the Spiral Server. It is bound to: │ │ http://localhost:13805 │ │ 00:00:10 verbose #28 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:10 verbose #29 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:10 verbose #30 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:10 verbose #31 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:05 verbose #1 Supervisor.sendJson / port: 13805 / json: │ │ {"Ping":true} / result: │ │ 00:00:05 verbose #2 awaitCompiler / Ping / result: 'Some(null)' / port: │ │ 13805 / retry: 0 │ │ 00:00:08 verbose #6 > Server bound to: http://localhost:13805 │ │ 00:00:05 debug #3 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ │ 00:00:05 debug #4 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ │ error: / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ │ 00:00:05 debug #5 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ │ 00:00:05 verbose #6 Supervisor.sendJson / port: 13805 / json: │ │ {"FileOpen":{"spiText":"inl app () =\n console.write_line │ │ \u0022text\u0022\n 1i32\n\ninl main │ │ ...et/spiral_Eval/packages/22ccd04317d5605c65f81c7f777766f357e85dc69f2d6d04b │ │ 9dc60aebd08a0d6/main.spi"}} / result: │ │ 00:00:05 verbose #7 Supervisor.sendJson / port: 13805 / json: │ │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │ │ lyglot/target/spiral_Eval/packages/22ccd04317d5605c65f81c7f777766f357e85dc69 │ │ f2d6d04b9dc60aebd08a0d6/main.spi"}} / result: │ │ 00:00:08 verbose #7 > 00:00:01 debug #4 │ │ Supervisor.supervisor_server.BuildFile / file: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ │ 00:00:05 debug #8 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ │ error: / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ │ 00:00:05 debug #9 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ │ 00:00:06 debug #10 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ │ error: / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ │ 00:00:06 debug #11 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ │ 00:00:06 debug #12 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ │ error: / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ │ 00:00:06 debug #13 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ │ 00:00:07 debug #14 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ │ error: / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ │ 00:00:07 debug #15 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ │ 00:00:07 debug #16 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ │ error: / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ │ 00:00:07 debug #17 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ │ 00:00:07 debug #18 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ let rec closure1 () () : unit = │ │ let v0 : (string -> unit) = System.Console.WriteLine │ │ let v1 : string = "text" │ │ v0 v1 │ │ and closure0 () () : i...t v0 : unit = () │ │ let v1 : (unit -> unit) = closure1() │ │ let v2 : unit = (fun () -> v1 (); v0) () │ │ 1 │ │ let v0 : (unit -> int32) = closure0() │ │ () │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ │ error: / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ │ 00:00:07 debug #19 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ let rec closure1 () () : unit = │ │ let v0 : (string -> unit) = System.Console.WriteLine │ │ let v1 : string = "text" │ │ v0 v1 │ │ and closure0 () () : i...t v0 : unit = () │ │ let v1 : (unit -> unit) = closure1() │ │ let v2 : unit = (fun () -> v1 (); v0) () │ │ 1 │ │ let v0 : (unit -> int32) = closure0() │ │ () │ │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ │ 00:00:07 verbose #20 Supervisor.sendJson / port: 13805 / json: │ │ {"FileDelete":{"uris":[ │ │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22cc │ │ d04317d5605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6"]}} / result: │ │ 00:00:13 verbose #32 networking.wait_for_port_access / { port = 13805; │ │ retry = 0; timeout = Some 100; status = false } │ │ 00:00:13 verbose #33 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:08 debug #21 FileSystem.watchWithFilter / Disposing watch │ │ stream / filter: FileName, LastWrite │ │ Some │ │ (Some │ │ "let rec closure1 () () : unit = │ │ let v0 : (string -> unit) = System.Console.WriteLine │ │ let v1 : string = "text" │ │ v0 v1 │ │ and closure0 () () : int32 = │ │ let v0 : unit = () │ │ let v1 : (unit -> unit) = closure1() │ │ let v2 : unit = (fun () -> v1 (); v0) () │ │ 1 │ │ let v0 : (unit -> int32) = closure0() │ │ () │ │ ", │ │ []) │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test "" |> fun code -> Spi (code, None) |> buildCode Fsharp false 10000 None |> Async.runWithTimeout 10000 |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> List.map fst) |> _assertEqual ( Some ( None, [[ "Cannot find `main` in file main." ]] ) ) ╭─[ 3.35s - stdout ]───────────────────────────────────────────────────────────╮ │ 00:00:13 verbose #34 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:11 debug #8 runtime.execute_with_options_async / { options = { │ │ command = dotnet │ │ "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ │ Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port │ │ 13805 --default-int i32 --default-float f64; cancellation_token = Some │ │ System.Threading.CancellationToken; environment_variables = [||]; on_line = │ │ Some <fun:buildCode@6-92>; stdin = None; trace = true; working_directory = │ │ Some "/home/runner/work/polyglot/polyglot" } } │ │ 00:00:14 verbose #35 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:14 verbose #36 networking.wait_for_port_access / { port = 13805; │ │ retry = 0; timeout = Some 100; status = true } │ │ 00:00:14 verbose #37 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:14 verbose #38 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:11 verbose #9 > 00:00:00 debug #1 pwd: │ │ /home/runner/work/polyglot/polyglot │ │ 00:00:11 verbose #10 > 00:00:00 debug #2 dllPath: │ │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ │ Language 2/artifacts/bin/The Spiral Language 2/release │ │ 00:00:11 verbose #11 > 00:00:00 debug #3 targetDir: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval │ │ 00:00:14 verbose #39 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:14 verbose #40 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:14 verbose #41 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:14 verbose #42 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:14 verbose #43 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:14 verbose #44 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:14 verbose #45 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:14 verbose #46 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:14 verbose #47 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:14 verbose #48 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:14 verbose #49 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:14 verbose #50 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:14 verbose #51 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:14 verbose #52 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:14 verbose #53 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:14 verbose #54 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:14 verbose #55 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:14 verbose #56 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:14 verbose #57 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:14 verbose #58 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:11 verbose #12 > Starting the Spiral Server. It is bound to: │ │ http://localhost:13805 │ │ 00:00:14 verbose #59 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:14 verbose #60 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:14 verbose #61 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:08 verbose #22 Supervisor.sendJson / port: 13805 / json: │ │ {"Ping":true} / result: │ │ 00:00:08 verbose #23 awaitCompiler / Ping / result: 'Some(null)' / │ │ port: 13805 / retry: 0 │ │ 00:00:11 verbose #13 > Server bound to: http://localhost:13805 │ │ 00:00:08 debug #24 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ │ 00:00:08 debug #25 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ │ error: / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ │ 00:00:08 debug #26 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ │ 00:00:08 verbose #27 Supervisor.sendJson / port: 13805 / json: │ │ {"FileOpen":{"spiText":"","uri":"file:///home/runner/work/polyglot/polyglot/ │ │ target/spiral_Eval/packages/a65342ccc7da0da967b18d8e705d0260e9a932e5e68c0feb │ │ 33db55c4d28170aa/main.spi"}} / result: │ │ 00:00:08 verbose #28 Supervisor.sendJson / port: 13805 / json: │ │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │ │ lyglot/target/spiral_Eval/packages/a65342ccc7da0da967b18d8e705d0260e9a932e5e │ │ 68c0feb33db55c4d28170aa/main.spi"}} / result: │ │ 00:00:12 verbose #14 > 00:00:00 debug #4 │ │ Supervisor.supervisor_server.BuildFile / file: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ │ 00:00:09 debug #29 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ │ error: / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ │ 00:00:09 debug #30 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ │ 00:00:09 debug #31 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ │ error: / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ │ 00:00:09 debug #32 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ │ 00:00:10 debug #33 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ │ error: / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ │ 00:00:10 debug #34 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ │ 00:00:10 debug #35 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ │ error: / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ │ 00:00:10 debug #36 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ │ 00:00:11 debug #37 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ │ error: / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ │ 00:00:11 debug #38 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ │ 00:00:11 debug #39 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ │ error: Some((Cannot find `main` in file main., FatalError "Cannot find │ │ `main` in file main.")) / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ │ 00:00:11 debug #40 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [ │ │ [ │ │ "Cannot find `main` in file main.", │ │ { │ │ "FatalError": "Cannot find `main` in file main." │ │ } │ │ ] │ │ ] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ │ 00:00:11 verbose #41 Supervisor.sendJson / port: 13805 / json: │ │ {"FileDelete":{"uris":[ │ │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a653 │ │ 42ccc7da0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa"]}} / result: │ │ 00:00:17 verbose #62 networking.wait_for_port_access / { port = 13805; │ │ retry = 0; timeout = Some 100; status = false } │ │ 00:00:17 verbose #63 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:11 debug #42 FileSystem.watchWithFilter / Disposing watch │ │ stream / filter: FileName, LastWrite │ │ Some (None, ["Cannot find `main` in file main."]) │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test """inl main () = 1i32 / 0i32 """ |> fun code -> Spi (code, None) |> buildCode Fsharp false 10000 None |> Async.runWithTimeout 10000 |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> List.map fst) |> _assertEqual ( Some ( None, [[ "An attempt to divide by zero has been detected at compile time." ]] ) ) ╭─[ 3.15s - stdout ]───────────────────────────────────────────────────────────╮ │ 00:00:17 verbose #64 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:14 debug #15 runtime.execute_with_options_async / { options = { │ │ command = dotnet │ │ "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ │ Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port │ │ 13805 --default-int i32 --default-float f64; cancellation_token = Some │ │ System.Threading.CancellationToken; environment_variables = [||]; on_line = │ │ Some <fun:buildCode@6-92>; stdin = None; trace = true; working_directory = │ │ Some "/home/runner/work/polyglot/polyglot" } } │ │ 00:00:17 verbose #65 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:17 verbose #66 networking.wait_for_port_access / { port = 13805; │ │ retry = 0; timeout = Some 100; status = true } │ │ 00:00:17 verbose #67 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:17 verbose #68 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:14 verbose #16 > 00:00:00 debug #1 pwd: │ │ /home/runner/work/polyglot/polyglot │ │ 00:00:14 verbose #17 > 00:00:00 debug #2 dllPath: │ │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ │ Language 2/artifacts/bin/The Spiral Language 2/release │ │ 00:00:14 verbose #18 > 00:00:00 debug #3 targetDir: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval │ │ 00:00:17 verbose #69 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:17 verbose #70 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:17 verbose #71 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:17 verbose #72 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:17 verbose #73 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:17 verbose #74 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:17 verbose #75 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:17 verbose #76 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:17 verbose #77 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:17 verbose #78 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:17 verbose #79 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:17 verbose #80 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:17 verbose #81 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:17 verbose #82 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:17 verbose #83 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:17 verbose #84 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:17 verbose #85 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:17 verbose #86 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:17 verbose #87 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:17 verbose #88 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:14 verbose #19 > Starting the Spiral Server. It is bound to: │ │ http://localhost:13805 │ │ 00:00:17 verbose #89 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:17 verbose #90 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:17 verbose #91 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:17 verbose #92 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:12 verbose #43 Supervisor.sendJson / port: 13805 / json: │ │ {"Ping":true} / result: │ │ 00:00:12 verbose #44 awaitCompiler / Ping / result: 'Some(null)' / │ │ port: 13805 / retry: 0 │ │ 00:00:15 verbose #20 > Server bound to: http://localhost:13805 │ │ 00:00:12 debug #45 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ │ 00:00:12 debug #46 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ │ error: / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ │ 00:00:12 debug #47 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ │ 00:00:12 verbose #48 Supervisor.sendJson / port: 13805 / json: │ │ {"FileOpen":{"spiText":"inl main () =\n 1i32 / │ │ 0i32\n","uri":"file:///home/runner/work/polyglot/p...et/spiral_Eval/packages │ │ /fef9812d9b06b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi"} │ │ } / result: │ │ 00:00:12 verbose #49 Supervisor.sendJson / port: 13805 / json: │ │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │ │ lyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6ff05910b73 │ │ ead9e8c4f27f88d2a5cdfb2/main.spi"}} / result: │ │ 00:00:15 verbose #21 > 00:00:00 debug #4 │ │ Supervisor.supervisor_server.BuildFile / file: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ │ 00:00:12 debug #50 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ │ error: / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ │ 00:00:12 debug #51 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ │ 00:00:13 debug #52 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ │ error: / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ │ 00:00:13 debug #53 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ │ 00:00:13 debug #54 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ │ error: / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ │ 00:00:13 debug #55 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ │ 00:00:14 debug #56 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ │ error: / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ │ 00:00:14 debug #57 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ │ 00:00:14 debug #58 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ │ error: Some((An attempt to divide by zero has been detected at compile │ │ time., TracedError │ │ { message = "An attempt to divide by zero has been detected at compile │ │ time." │ │ trace = │ │ ["Error trace on line: 1, column: 10 in module: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. │ │ inl main () = │ │ ^ │ │ "; │ │ "Error trace on line: 2, column: 5 in module: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. │ │ 1i32 / 0i32 │ │ ^ │ │ "] })) / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ │ 00:00:14 debug #59 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [ │ │ [ │ │ "An attempt to divide by zero has been detected at compile time.", │ │ { │ │ "TracedError": { │ │ "message": "An attempt to divide by zero has been detected at │ │ compile time.", │ │ "trace": [ │ │ "Error trace on line: 1, column: 10 in module: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. │ │ inl main () = │ │ ^ │ │ ", │ │ "Error trace on line: 2, column: 5 in module: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. │ │ 1i32 / 0i32 │ │ ^ │ │ " │ │ ] │ │ } │ │ } │ │ ] │ │ ] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ │ 00:00:14 verbose #60 Supervisor.sendJson / port: 13805 / json: │ │ {"FileDelete":{"uris":[ │ │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9 │ │ 812d9b06b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2"]}} / result: │ │ 00:00:20 verbose #93 networking.wait_for_port_access / { port = 13805; │ │ retry = 0; timeout = Some 100; status = false } │ │ 00:00:20 verbose #94 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:14 debug #61 FileSystem.watchWithFilter / Disposing watch │ │ stream / filter: FileName, LastWrite │ │ Some (None, ["An attempt to divide by zero has been detected at compile │ │ time."]) │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ ── fsharp ────────────────────────────────────────────────────────────────────── //// test """inl main () = 1 + "" """ |> fun code -> Spi (code, None) |> buildCode Fsharp false 10000 None |> Async.runWithTimeout 10000 |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> List.map fst) |> _assertEqual ( Some ( None, [[ "main.spi: Constraint satisfaction error. Got: string Fails to satisfy: number" ]] ) ) ── fsharp ────────────────────────────────────────────────────────────────────── ╭──────────────────────────────────────────────────────────────────────────────╮ │ Expecto.AssertException: Testing.__expect.<br/> │ │ <span style="color: green;">expected</span>:<br/> │ │ Some<span style="color: green;"><br/> │ │ (None,<br/> │ │ ["main.spi:<br/> │ │ Constraint satisfaction error.<br/> │ │ Got: string<br/> │ │ Fails to satisfy: number"])</span><br/> │ │ <span style="color: red;"> actual</span>:<br/> │ │ Some<span style="color: red;"> (None, [])</span><br/> │ │ at Expecto.Expect.equalWithDiffPrinter@401-15.Invoke(String msg)<br/> │ │ at Expecto.Expect.equalWithDiffPrinter$cont@383[a](FSharpFunc`2 │ │ diffPrinter, a actual, a expected, String message, Object e, Object a, Unit │ │ unitVar) in C:\workspaces\dotnet\expecto\Expecto\Expect.fs:line 401<br/> │ │ at Expecto.Expect.equalWithDiffPrinter[a](FSharpFunc`2 diffPrinter, a │ │ actual, a expected, String message)<br/> │ │ at <StartupCode$FSI_0049>.$FSI_0049.main@() │ ╰──────────────────────────────────────────────────────────────────────────────╯ ╭─[ 4.02s - stderr ]───────────────────────────────────────────────────────────╮ │ 00:00:20 verbose #95 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:17 debug #22 runtime.execute_with_options_async / { options = { │ │ command = dotnet │ │ "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ │ Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port │ │ 13805 --default-int i32 --default-float f64; cancellation_token = Some │ │ System.Threading.CancellationToken; environment_variables = [||]; on_line = │ │ Some <fun:buildCode@6-92>; stdin = None; trace = true; working_directory = │ │ Some "/home/runner/work/polyglot/polyglot" } } │ │ 00:00:20 verbose #96 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:20 verbose #97 networking.wait_for_port_access / { port = 13805; │ │ retry = 0; timeout = Some 100; status = true } │ │ 00:00:20 verbose #98 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:20 verbose #99 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:17 verbose #23 > 00:00:00 debug #1 pwd: │ │ /home/runner/work/polyglot/polyglot │ │ 00:00:17 verbose #24 > 00:00:00 debug #2 dllPath: │ │ /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral │ │ Language 2/artifacts/bin/The Spiral Language 2/release │ │ 00:00:17 verbose #25 > 00:00:00 debug #3 targetDir: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval │ │ 00:00:20 verbose #100 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:20 verbose #101 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:20 verbose #102 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:20 verbose #103 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:20 verbose #104 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:20 verbose #105 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:20 verbose #106 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:20 verbose #107 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:20 verbose #108 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:20 verbose #109 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:20 verbose #110 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:20 verbose #111 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:20 verbose #112 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:20 verbose #113 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:20 verbose #114 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:20 verbose #115 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:20 verbose #116 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:20 verbose #117 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:20 verbose #118 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:20 verbose #119 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:18 verbose #26 > Starting the Spiral Server. It is bound to: │ │ http://localhost:13805 │ │ 00:00:20 verbose #120 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:20 verbose #121 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:20 verbose #122 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:15 verbose #62 Supervisor.sendJson / port: 13805 / json: │ │ {"Ping":true} / result: │ │ 00:00:15 verbose #63 awaitCompiler / Ping / result: 'Some(null)' / │ │ port: 13805 / retry: 0 │ │ 00:00:18 verbose #27 > Server bound to: http://localhost:13805 │ │ 00:00:15 debug #64 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ │ 00:00:15 debug #65 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ │ error: / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ │ 00:00:15 debug #66 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ │ 00:00:15 verbose #67 Supervisor.sendJson / port: 13805 / json: │ │ {"FileOpen":{"spiText":"inl main () =\n 1 \u002B │ │ \u0022\u0022\n","uri":"file:///home/runner/work/...et/spiral_Eval/packages/c │ │ 030f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"}} │ │ / result: │ │ 00:00:15 verbose #68 Supervisor.sendJson / port: 13805 / json: │ │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │ │ lyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9aabeace67685221d91a4 │ │ 6e3655199e42df713504aa0/main.spi"}} / result: │ │ 00:00:18 verbose #28 > 00:00:00 debug #4 │ │ Supervisor.supervisor_server.BuildFile / file: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ │ 00:00:15 debug #69 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ │ error: / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ │ 00:00:15 debug #70 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ │ 00:00:16 debug #71 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ │ error: / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ │ 00:00:16 debug #72 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ │ 00:00:16 debug #73 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ │ error: / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ │ 00:00:16 debug #74 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ │ 00:00:17 debug #75 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ │ error: / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ │ 00:00:17 debug #76 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ │ 00:00:17 debug #77 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ │ error: Some((File main has a type error somewhere in its path., FatalError │ │ "File main has a type error somewhere in its path.")) / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ │ 00:00:17 debug #78 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 1 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ │ 00:00:17 debug #79 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 1 / retry: 0 / │ │ error: Some((main.spi: │ │ Constraint satisfaction error. │ │ Got: string │ │ Fails to satisfy: number, TypeErrors │ │ { errors = │ │ [(({ character = 8 │ │ line = 1 }, { character = 10 │ │ line = 1 }), │ │ "Constraint satisfaction error. │ │ Got: string │ │ Fails to satisfy: number")] │ │ uri = │ │ │ │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030 │ │ f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" })) / │ │ path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ │ 00:00:17 debug #80 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [ │ │ [ │ │ "main.spi: │ │ Constraint satisfaction error. │ │ Got: string │ │ Fails to satisfy: number", │ │ { │ │ "TypeErrors": { │ │ "errors": [ │ │ [ │ │ [ │ │ { │ │ "character": 8, │ │ "line": 1 │ │ }, │ │ { │ │ "character": 10, │ │ "line": 1 │ │ } │ │ ], │ │ "Constraint satisfaction error. │ │ Got: string │ │ Fails to satisfy: number" │ │ ] │ │ ], │ │ "uri": │ │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030 │ │ f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" │ │ } │ │ } │ │ ] │ │ ] / typeErrorCount: 1 / retry: 0 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ │ 00:00:23 verbose #123 networking.test_port_open / { port = 13806; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:17 debug #81 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 1 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ │ 00:00:17 debug #82 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 1 / │ │ error: / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ │ 00:00:17 debug #83 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 0 / retry: 1 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ │ 00:00:17 verbose #84 Supervisor.sendJson / port: 13805 / json: │ │ {"FileOpen":{"spiText":"inl main () =\n 1 \u002B │ │ \u0022\u0022\n","uri":"file:///home/runner/work/...et/spiral_Eval/packages/c │ │ 030f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"}} │ │ / result: │ │ 00:00:17 verbose #85 Supervisor.sendJson / port: 13805 / json: │ │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │ │ lyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9aabeace67685221d91a4 │ │ 6e3655199e42df713504aa0/main.spi"}} / result: │ │ 00:00:20 verbose #29 > 00:00:02 debug #5 │ │ Supervisor.supervisor_server.BuildFile / file: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ │ 00:00:17 debug #86 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 1 / │ │ error: Some((File main has a type error somewhere in its path., FatalError │ │ "File main has a type error somewhere in its path.")) / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ │ 00:00:17 debug #87 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 1 / retry: 1 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ │ 00:00:17 debug #88 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 1 / retry: 1 / │ │ error: / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ │ 00:00:17 debug #89 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 2 / retry: 1 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ │ 00:00:18 debug #90 Supervisor.buildFile / AsyncSeq.scan / │ │ outputContent: │ │ / errors: [] / outputContentResult: / typeErrorCount: 2 / retry: 1 / │ │ error: / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ │ 00:00:18 debug #91 Supervisor.buildFile / takeWhileInclusive / │ │ outputContent: │ │ / errors: [] / typeErrorCount: 3 / retry: 1 / path: │ │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ │ 00:00:18 verbose #92 Supervisor.sendJson / port: 13805 / json: │ │ {"FileDelete":{"uris":[ │ │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030 │ │ f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0"]}} / result: │ │ 00:00:18 debug #93 FileSystem.watchWithFilter / Disposing watch │ │ stream / filter: FileName, LastWrite │ │ 00:00:24 verbose #124 networking.wait_for_port_access / { port = 13805; │ │ retry = 0; timeout = Some 100; status = false } │ │ 00:00:24 verbose #125 networking.test_port_open / { port = 13805; ex = │ │ System.AggregateException: One or more errors occurred. (Connection refused) │ │ } │ │ 00:00:18 debug #94 FileSystem.watchWithFilter / Disposing watch │ │ stream / filter: FileName, LastWrite │ │ Some (None, []) │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────────╯ NotebookRunner.RunNotebookAsync / exiting... 3 ── fsharp ────────────────────────────────────────────────────────────────────── //// test """inl main () = x + y """ |> fun code -> Spi (code, None) |> buildCode Fsharp false 10000 None |> Async.runWithTimeout 10000 |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> List.map fst) |> _assertEqual ( Some ( None, [[ "main.spi: Unbound variable: x. Unbound variable: y." ]] ) ) NotebookRunner.RunNotebookAsync / exiting... 2 NotebookRunner.RunNotebookAsync / exiting... 1; retry = 1/3 } 00:00:33 debug #5 runtime.execute_with_options / { file_name = dotnet; arguments = [ "repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb", ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ # Supervisor (Polyglot) │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > dard2.1/FSharp.Control.AsyncSeq.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > 0/System.Reactive.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > netstandard2.0/System.Reactive.Linq.dll" > #r > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com > mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli > ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0 > /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0 > /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/ > 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll" > #r > @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha > rp.Json.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if !INTERACTIVE > open Lib > #endif > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Common > open SpiralFileSystem.Operators > open Microsoft.AspNetCore.SignalR.Client > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### sendJson │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline sendJson (port : int) (json : string) = async { > let host = "127.0.0.1" > let! portOpen = SpiralNetworking.test_port_open host port > if portOpen then > try > let connection = > HubConnectionBuilder().WithUrl($"http://{host}:{port}").Build() > do! connection.StartAsync () |> Async.AwaitTask > let! result = connection.InvokeAsync<string>("ClientToServerMsg", > json) |> Async.AwaitTask > do! connection.StopAsync () |> Async.AwaitTask > trace Verbose (fun () -> $"Supervisor.sendJson / port: {port} / > json: {json |> SpiralSm.ellipsis_end 200} / result: {result |> Option.ofObj |> > Option.map (SpiralSm.ellipsis_end 200)}") _locals > return Some result > with ex -> > trace Critical (fun () -> $"Supervisor.sendJson / port: {port} / > json: {json |> SpiralSm.ellipsis_end 200} / ex: {ex |> > SpiralSm.format_exception}") _locals > return None > else > trace Debug (fun () -> "Supervisor.sendJson / port: {port} / error: port > not open") _locals > return None > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### sendObj │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline sendObj port obj = > obj > |> System.Text.Json.JsonSerializer.Serialize > |> sendJson port > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### VSCPos │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type VSCPos = {| line : int; character : int |} > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### VSCRange │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type VSCRange = VSCPos * VSCPos > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### RString │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type RString = VSCRange * string > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### TracedError │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TracedError = {| trace : string list; message : string |} > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### ClientErrorsRes │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ClientErrorsRes = > | FatalError of string > | TracedError of TracedError > | PackageErrors of {| uri : string; errors : RString list |} > | TokenizerErrors of {| uri : string; errors : RString list |} > | ParserErrors of {| uri : string; errors : RString list |} > | TypeErrors of {| uri : string; errors : RString list |} > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### workspaceRoot │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let workspaceRoot = SpiralFileSystem.get_workspace_root () > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### awaitCompiler │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline awaitCompiler port cancellationToken = async { > let host = "127.0.0.1" > let struct (ct, disposable) = cancellationToken |> > SpiralThreading.new_disposable_token > let! ct = ct |> SpiralAsync.merge_cancellation_token_with_default_async > > let compiler = MailboxProcessor.Start (fun inbox -> async { > let! availablePort = SpiralNetworking.get_available_port (Some 180) host > port > if availablePort <> port then > inbox.Post (port, false) > else > let compilerPath = > workspaceRoot </> "deps/The-Spiral-Language/The Spiral Language > 2/artifacts/bin/The Spiral Language 2/release" > |> System.IO.Path.GetFullPath > > let dllPath = compilerPath </> "Spiral.dll" > > let! exitCode, result = > SpiralRuntime.execution_options (fun x -> > { x with > l0 = $@"dotnet ""{dllPath}"" --port {availablePort} > --default-int i32 --default-float f64" > l1 = Some ct > l3 = Some (fun struct (_, line, _) -> async { > if line |> SpiralSm.contains > $"System.IO.IOException: Failed to bind to address http://{host}:{port}: address > already in use." then > inbox.Post (port, false) > > if line |> SpiralSm.contains $"Server bound to: > http://localhost:{availablePort}" then > let rec loop retry = async { > do! > SpiralNetworking.wait_for_port_access > (Some 100) true host availablePort > |> Async.runWithTimeoutAsync 500 > |> Async.Ignore > > let _locals () = $"port: {availablePort} / > retry: {retry} / {_locals ()}" > try > let pingObj = {| Ping = true |} > let! pingResult = pingObj |> sendObj > availablePort > trace Verbose (fun () -> $"awaitCompiler > / Ping / result: '{pingResult}'") _locals > > inbox.Post (availablePort, true) > with ex -> > trace Verbose (fun () -> $"awaitCompiler > / Ping / ex: {ex |> SpiralSm.format_exception}") _locals > do! Async.Sleep 10 > do! loop (retry + 1) > } > do! loop 0 > }) > l6 = Some workspaceRoot > } > ) > |> SpiralRuntime.execute_with_options_async > > trace Debug (fun () -> $"awaitCompiler / exitCode: {exitCode} / > result: {result}") _locals > disposable.Dispose () > }, ct) > > let! serverPort, managed = compiler.Receive () > > let connection = > HubConnectionBuilder().WithUrl($"http://{host}:{serverPort}").Build () > do! connection.StartAsync () |> Async.AwaitTask > > let event = Event<_> () > let disposable' = connection.On<string> ("ServerToClientMsg", event.Trigger) > let stream = > FSharp.Control.AsyncSeq.unfoldAsync > (fun () -> async { > let! msg = event.Publish |> Async.AwaitEvent > return Some (msg |> > FSharp.Json.Json.deserialize<ClientErrorsRes>, ()) > }) > () > > let disposable' = > new_disposable (fun () -> > async { > disposable'.Dispose () > do! connection.StopAsync () |> Async.AwaitTask > disposable.Dispose () > if managed > then do! > SpiralNetworking.wait_for_port_access (Some 100) false host > serverPort > |> Async.runWithTimeoutAsync 1500 > |> Async.Ignore > } > |> Async.RunSynchronously > ) > > return > serverPort, > stream, > ct, > disposable' > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### getFilePathFromUri │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline getFilePathFromUri uri = > match System.Uri.TryCreate (uri, System.UriKind.Absolute) with > | true, uri -> uri.AbsolutePath |> System.IO.Path.GetFullPath > | _ -> failwith "invalid uri" > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### getCompilerPort │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline getCompilerPort () = > 13805 > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### serialize_obj │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let serializeObj obj = > try > obj > |> FSharp.Json.Json.serialize > |> SpiralSm.replace "\\\\" "\\" > |> SpiralSm.replace "\\r\\n" "\n" > |> SpiralSm.replace "\\n" "\n" > with ex -> > trace Critical (fun () -> "Supervisor.serialize_obj / obj: %A{obj}") > _locals > "" > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### Backend │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Backend = > | Fsharp > | Cuda > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### buildFile │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline buildFile backend timeout port cancellationToken path = > let rec loop retry = async { > let fullPath = path |> System.IO.Path.GetFullPath > let fileDir = fullPath |> System.IO.Path.GetDirectoryName > let fileName = fullPath |> System.IO.Path.GetFileNameWithoutExtension > let! code = fullPath |> SpiralFileSystem.read_all_text_async > > let stream, disposable = fileDir |> FileSystem.watchDirectory (fun _ -> > true) > use _ = disposable > > let struct (token, disposable) = SpiralThreading.new_disposable_token > cancellationToken > use _ = disposable > > let port = port |> Option.defaultWith getCompilerPort > let! serverPort, errors, ct, disposable = awaitCompiler port (Some > token) > use _ = disposable > > let outputFileName = > match backend with > | Fsharp -> $"{fileName}.fsx" > | Cuda -> $"{fileName}.py" > > let outputContentSeq = > stream > |> FSharp.Control.AsyncSeq.chooseAsync (function > | _, (FileSystem.FileSystemChange.Changed (path, Some text)) > when (path |> System.IO.Path.GetFileName) = outputFileName > -> > // fileDir </> path |> > SpiralFileSystem.read_all_text_retry_async > text |> Some |> Async.init > | _ -> None |> Async.init > ) > |> FSharp.Control.AsyncSeq.map (fun content -> > Some (content |> SpiralSm.replace "\r\n" "\n"), None > ) > > let inline printErrorData (data : {| uri : string; errors : RString list > |}) = > let fileName = data.uri |> System.IO.Path.GetFileName > let errors = > data.errors > |> List.map snd > |> SpiralSm.concat "\n" > $"{fileName}:\n{errors}" > > let errorsSeq = > errors > |> FSharp.Control.AsyncSeq.choose (fun error -> > match error with > | FatalError message -> > Some (message, error) > | TracedError data -> > Some (data.message, error) > | PackageErrors data when data.errors |> List.isEmpty |> not -> > Some (data |> printErrorData, error) > | TokenizerErrors data when data.errors |> List.isEmpty |> not > -> > Some (data |> printErrorData, error) > | ParserErrors data when data.errors |> List.isEmpty |> not -> > Some (data |> printErrorData, error) > | TypeErrors data when data.errors |> List.isEmpty |> not -> > Some (data |> printErrorData, error) > | _ -> None > ) > |> FSharp.Control.AsyncSeq.map (fun (message, error) -> > None, Some (message, error) > ) > > let timerSeq = > 500 > |> FSharp.Control.AsyncSeq.intervalMs > |> FSharp.Control.AsyncSeq.map (fun _ -> None, None) > > let outputSeq = > [[ outputContentSeq; errorsSeq; timerSeq ]] > |> FSharp.Control.AsyncSeq.mergeAll > > let! outputChild = > ((None, [[]], 0), outputSeq) > ||> FSharp.Control.AsyncSeq.scan ( > fun (outputContentResult, errors, typeErrorCount) > (outputContent, error) -> > trace Debug (fun () -> $"Supervisor.buildFile / > AsyncSeq.scan / outputContent:\n{outputContent |> Option.defaultValue > System.String.Empty |> SpiralSm.ellipsis_end 300} / errors: {errors |> > serializeObj} / outputContentResult: {outputContentResult} / typeErrorCount: > {typeErrorCount} / retry: {retry} / error: {error} / path: {path}") _locals > match outputContent, error with > | Some outputContent, None -> Some outputContent, errors, > typeErrorCount > | None, Some (_, FatalError "File main has a type error > somewhere in its path.") -> > outputContentResult, errors, typeErrorCount + 1 > | None, Some error -> outputContentResult, error :: errors, > typeErrorCount > | None, None when typeErrorCount >= 1 -> > outputContentResult, errors, typeErrorCount + 1 > | _ -> outputContentResult, errors, typeErrorCount > ) > |> FSharp.Control.AsyncSeq.takeWhileInclusive (fun (outputContent, > errors, typeErrorCount) -> > trace Debug (fun () -> $"Supervisor.buildFile / > takeWhileInclusive / outputContent:\n{outputContent |> Option.defaultValue > System.String.Empty |> SpiralSm.ellipsis_end 300} / errors: {errors |> > serializeObj} / typeErrorCount: {typeErrorCount} / retry: {retry} / path: > {path}") _locals > #if INTERACTIVE > let errorWait = 2 > #else > let errorWait = 2 > #endif > match outputContent, errors with > | None, [[]] when typeErrorCount > errorWait -> false > | None, [[]] -> true > | _ -> false > ) > |> FSharp.Control.AsyncSeq.tryLast > |> Async.withCancellationToken ct > |> Async.catch > |> Async.runWithTimeoutAsync timeout > |> Async.StartChild > > // do! Async.Sleep 60 > > let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > > let fileOpenObj = {| FileOpen = {| uri = fullPathUri; spiText = code |} > |} > let! _fileOpenResult = fileOpenObj |> sendObj serverPort > > // do! Async.Sleep 60 > > let backendId = > match backend with > | Fsharp -> "Fsharp" > | Cuda -> "Python + Cuda" > let buildFileObj = {| BuildFile = {| uri = fullPathUri; backend = > backendId |} |} > let! _buildFileResult = buildFileObj |> sendObj serverPort > > let! result, typeErrorCount = > outputChild > |> Async.map (function > | Some (Ok (Some (outputCode, errors, typeErrorCount))) -> > (outputCode, errors |> List.distinct |> List.rev), > typeErrorCount > | Some (Error ex) -> > trace Critical (fun () -> $"Supervisor.buildFile / error: > {ex |> SpiralSm.format_exception} / retry: {retry}") _locals > (None, [[]]), 0 > | _ -> (None, [[]]), 0 > ) > > match result with > | None, _ when typeErrorCount > 0 && retry = 0 -> > return! loop (retry + 1) > | _ -> > if fileDir |> SpiralSm.starts_with (workspaceRoot </> "target") then > let fileDirUri = fileDir |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > let fileDeleteObj = {| FileDelete = {| uris = [[| fileDirUri |]] > |} |} > let! _fileDeleteResult = fileDeleteObj |> sendObj serverPort > () > > let outputPath = fileDir </> outputFileName > return outputPath, result > } > loop 0 > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### SpiralInput │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type SpiralInput = > | Spi of string * string option > | Spir of string > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### persistCode │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline persistCode backend input = async { > let targetDir = workspaceRoot </> "target/spiral_Eval" > > let packagesDir = targetDir </> "packages" > > let hashHex = $"%A{backend}%A{input}" |> SpiralCrypto.hash_text > > let codeDir = packagesDir </> hashHex > codeDir |> System.IO.Directory.CreateDirectory |> ignore > > let moduleName = "main" > > let spirModule, spiModule = > match input with > | Spi (spi, Some spir) -> true, true > | Spi (spi, None) -> false, true > | Spir spir -> true, false > |> fun (spir, spi) -> > (if spir then $"real_{moduleName}*-" else ""), > if spi then moduleName else "" > > let spiprojPath = codeDir </> "package.spiproj" > let spiprojCode = > $"""packageDir: {workspaceRoot </> "lib"} > packages: > |core- > spiral- > modules: > {spirModule} > {spiModule} > """ > do! spiprojCode |> SpiralFileSystem.write_all_text_exists spiprojPath > > let spirPath = codeDir </> $"real_{moduleName}.spir" > let spiPath = codeDir </> $"{moduleName}.spi" > > let spirCode, spiCode = > match input with > | Spi (spi, Some spir) -> Some spir, Some spi > | Spi (spi, None) -> None, Some spi > | Spir spir -> Some spir, None > > match spirCode with > | Some spir -> do! spir |> SpiralFileSystem.write_all_text_exists spirPath > | None -> () > match spiCode with > | Some spi -> do! spi |> SpiralFileSystem.write_all_text_exists spiPath > | None -> () > > let spiralPath = > match input with > | Spi _ -> spiPath > | Spir _ -> spirPath > match backend with > | None -> return spiralPath, None > | Some backend -> > let outputFileName = > let fileName = > match input with > | Spi _ -> moduleName > | Spir _ -> $"real_{moduleName}" > match backend with > | Fsharp -> $"{fileName}.fsx" > | Cuda -> $"{fileName}.py" > let outputPath = codeDir </> outputFileName > if outputPath |> System.IO.File.Exists |> not > then return spiralPath, None > else > let! oldCode = spiralPath |> SpiralFileSystem.read_all_text_async > if oldCode <> (spiCode |> Option.defaultValue (spirCode |> > Option.defaultValue "")) > then return spiralPath, None > else > let! outputCode = outputPath |> > SpiralFileSystem.read_all_text_async > return spiralPath, Some (outputPath, outputCode |> > SpiralSm.replace "\r\n" "\n") > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### buildCode │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let buildCode backend isCache timeout cancellationToken input = async { > let! mainPath, outputCache = input |> persistCode (Some backend) > match outputCache with > | Some (outputPath, outputCode) when isCache -> return mainPath, > (outputPath, Some outputCode), [[]] > | _ -> > let! outputPath, (outputCode, errors) = mainPath |> buildFile backend > timeout None cancellationToken > return mainPath, (outputPath, outputCode), errors > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """inl app () = > console.write_line "text" > 1i32 > > inl main () = > app > |> dyn > |> ignore > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp false 15000 None > |> Async.runWithTimeout 15000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > Some """let rec closure1 () () : unit = > let v0 : (string -> unit) = System.Console.WriteLine > let v1 : string = "text" > v0 v1 > and closure0 () () : int32 = > let v0 : unit = () > let v1 : (unit -> unit) = closure1() > let v2 : unit = (fun () -> v1 (); v0) () > 1 > let v0 : (unit -> int32) = closure0() > () > """, > [[]] > ) > ) > > ╭─[ 3.35s - stdout ]───────────────────────────────────────────────────────────╮ > │ 00:00:10 verbose #1 networking.test_port_open / { port = 13806; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:04 debug #1 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:04 debug #2 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:04 debug #3 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:04 verbose #4 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"inl app () =\n console.write_line │ > │ \u0022text\u0022\n 1i32\n\ninl main │ > │ ...et/spiral_Eval/packages/22ccd04317d5605c65f81c7f777766f357e85dc69f2d6d04b │ > │ 9dc60aebd08a0d6/main.spi"}} / result: │ > │ 00:00:04 verbose #5 Supervisor.sendJson / port: 13805 / json: │ > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │ > │ lyglot/target/spiral_Eval/packages/22ccd04317d5605c65f81c7f777766f357e85dc69 │ > │ f2d6d04b9dc60aebd08a0d6/main.spi"}} / result: │ > │ 00:00:05 debug #6 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:05 debug #7 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:05 debug #8 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:05 debug #9 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:06 debug #10 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:06 debug #11 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:06 debug #12 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:06 debug #13 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:07 debug #14 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:07 debug #15 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:07 debug #16 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ let rec closure1 () () : unit = │ > │ let v0 : (string -> unit) = System.Console.WriteLine │ > │ let v1 : string = "text" │ > │ v0 v1 │ > │ and closure0 () () : i...t v0 : unit = () │ > │ let v1 : (unit -> unit) = closure1() │ > │ let v2 : unit = (fun () -> v1 (); v0) () │ > │ 1 │ > │ let v0 : (unit -> int32) = closure0() │ > │ () │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:07 debug #17 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ let rec closure1 () () : unit = │ > │ let v0 : (string -> unit) = System.Console.WriteLine │ > │ let v1 : string = "text" │ > │ v0 v1 │ > │ and closure0 () () : i...t v0 : unit = () │ > │ let v1 : (unit -> unit) = closure1() │ > │ let v2 : unit = (fun () -> v1 (); v0) () │ > │ 1 │ > │ let v0 : (unit -> int32) = closure0() │ > │ () │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5 │ > │ 605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi │ > │ 00:00:07 verbose #18 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22cc │ > │ d04317d5605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6"]}} / result: │ > │ 00:00:07 debug #19 FileSystem.watchWithFilter / Disposing watch │ > │ stream / filter: FileName, LastWrite │ > │ Some │ > │ (Some │ > │ "let rec closure1 () () : unit = │ > │ let v0 : (string -> unit) = System.Console.WriteLine │ > │ let v1 : string = "text" │ > │ v0 v1 │ > │ and closure0 () () : int32 = │ > │ let v0 : unit = () │ > │ let v1 : (unit -> unit) = closure1() │ > │ let v2 : unit = (fun () -> v1 (); v0) () │ > │ 1 │ > │ let v0 : (unit -> int32) = closure0() │ > │ () │ > │ ", │ > │ []) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "" > |> fun code -> Spi (code, None) > |> buildCode Fsharp false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ "Cannot find `main` in file main." ]] > ) > ) > > ╭─[ 240.88ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:13 verbose #2 networking.test_port_open / { port = 13806; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:07 debug #20 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ > │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ > │ 00:00:07 debug #21 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ > │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ > │ 00:00:07 debug #22 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ > │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ > │ 00:00:07 verbose #23 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"","uri":"file:///home/runner/work/polyglot/polyglot/ │ > │ target/spiral_Eval/packages/a65342ccc7da0da967b18d8e705d0260e9a932e5e68c0feb │ > │ 33db55c4d28170aa/main.spi"}} / result: │ > │ 00:00:07 verbose #24 Supervisor.sendJson / port: 13805 / json: │ > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │ > │ lyglot/target/spiral_Eval/packages/a65342ccc7da0da967b18d8e705d0260e9a932e5e │ > │ 68c0feb33db55c4d28170aa/main.spi"}} / result: │ > │ 00:00:07 debug #25 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: Some((Cannot find `main` in file main., FatalError "Cannot find │ > │ `main` in file main.")) / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ > │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ > │ 00:00:07 debug #26 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [ │ > │ [ │ > │ "Cannot find `main` in file main.", │ > │ { │ > │ "FatalError": "Cannot find `main` in file main." │ > │ } │ > │ ] │ > │ ] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da │ > │ 0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi │ > │ 00:00:07 verbose #27 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a653 │ > │ 42ccc7da0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa"]}} / result: │ > │ 00:00:07 debug #28 FileSystem.watchWithFilter / Disposing watch │ > │ stream / filter: FileName, LastWrite │ > │ Some (None, ["Cannot find `main` in file main."]) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """inl main () = > 1i32 / 0i32 > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ "An attempt to divide by zero has been detected at compile time." ]] > ) > ) > > ╭─[ 269.02ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:13 verbose #3 networking.test_port_open / { port = 13806; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:07 debug #29 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ > │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ > │ 00:00:07 debug #30 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ > │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ > │ 00:00:07 debug #31 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ > │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ > │ 00:00:07 verbose #32 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"inl main () =\n 1i32 / │ > │ 0i32\n","uri":"file:///home/runner/work/polyglot/p...et/spiral_Eval/packages │ > │ /fef9812d9b06b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi"} │ > │ } / result: │ > │ 00:00:07 verbose #33 Supervisor.sendJson / port: 13805 / json: │ > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │ > │ lyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6ff05910b73 │ > │ ead9e8c4f27f88d2a5cdfb2/main.spi"}} / result: │ > │ 00:00:07 debug #34 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: Some((An attempt to divide by zero has been detected at compile │ > │ time., TracedError │ > │ { message = "An attempt to divide by zero has been detected at compile │ > │ time." │ > │ trace = │ > │ ["Error trace on line: 1, column: 10 in module: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ > │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. │ > │ inl main () = │ > │ ^ │ > │ "; │ > │ "Error trace on line: 2, column: 5 in module: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ > │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. │ > │ 1i32 / 0i32 │ > │ ^ │ > │ "] })) / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ > │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ > │ 00:00:07 debug #35 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [ │ > │ [ │ > │ "An attempt to divide by zero has been detected at compile time.", │ > │ { │ > │ "TracedError": { │ > │ "message": "An attempt to divide by zero has been detected at │ > │ compile time.", │ > │ "trace": [ │ > │ "Error trace on line: 1, column: 10 in module: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ > │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. │ > │ inl main () = │ > │ ^ │ > │ ", │ > │ "Error trace on line: 2, column: 5 in module: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ > │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. │ > │ 1i32 / 0i32 │ > │ ^ │ > │ " │ > │ ] │ > │ } │ > │ } │ > │ ] │ > │ ] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06 │ > │ b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi │ > │ 00:00:07 verbose #36 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9 │ > │ 812d9b06b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2"]}} / result: │ > │ 00:00:07 debug #37 FileSystem.watchWithFilter / Disposing watch │ > │ stream / filter: FileName, LastWrite │ > │ Some (None, ["An attempt to divide by zero has been detected at compile │ > │ time."]) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """inl main () = > 1 + "" > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ > "main.spi: > Constraint satisfaction error. > Got: string > Fails to satisfy: number" > ]] > ) > ) > > ╭─[ 118.87ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:13 verbose #4 networking.test_port_open / { port = 13806; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:08 debug #38 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:08 debug #39 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:08 debug #40 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:08 verbose #41 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"inl main () =\n 1 \u002B │ > │ \u0022\u0022\n","uri":"file:///home/runner/work/...et/spiral_Eval/packages/c │ > │ 030f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"}} │ > │ / result: │ > │ 00:00:08 verbose #42 Supervisor.sendJson / port: 13805 / json: │ > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │ > │ lyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9aabeace67685221d91a4 │ > │ 6e3655199e42df713504aa0/main.spi"}} / result: │ > │ 00:00:08 debug #43 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: Some((File main has a type error somewhere in its path., FatalError │ > │ "File main has a type error somewhere in its path.")) / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:08 debug #44 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 1 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:08 debug #45 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 1 / retry: 0 / │ > │ error: Some((main.spi: │ > │ Constraint satisfaction error. │ > │ Got: string │ > │ Fails to satisfy: number, TypeErrors │ > │ { errors = │ > │ [(({ character = 8 │ > │ line = 1 }, { character = 10 │ > │ line = 1 }), │ > │ "Constraint satisfaction error. │ > │ Got: string │ > │ Fails to satisfy: number")] │ > │ uri = │ > │ │ > │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030 │ > │ f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" })) / │ > │ path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:08 debug #46 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [ │ > │ [ │ > │ "main.spi: │ > │ Constraint satisfaction error. │ > │ Got: string │ > │ Fails to satisfy: number", │ > │ { │ > │ "TypeErrors": { │ > │ "errors": [ │ > │ [ │ > │ [ │ > │ { │ > │ "character": 8, │ > │ "line": 1 │ > │ }, │ > │ { │ > │ "character": 10, │ > │ "line": 1 │ > │ } │ > │ ], │ > │ "Constraint satisfaction error. │ > │ Got: string │ > │ Fails to satisfy: number" │ > │ ] │ > │ ], │ > │ "uri": │ > │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030 │ > │ f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" │ > │ } │ > │ } │ > │ ] │ > │ ] / typeErrorCount: 1 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:14 verbose #5 networking.test_port_open / { port = 13806; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:08 debug #47 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 1 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:08 debug #48 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 1 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:08 debug #49 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 1 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:08 verbose #50 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"inl main () =\n 1 \u002B │ > │ \u0022\u0022\n","uri":"file:///home/runner/work/...et/spiral_Eval/packages/c │ > │ 030f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"}} │ > │ / result: │ > │ 00:00:08 verbose #52 Supervisor.sendJson / port: 13805 / json: │ > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │ > │ lyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9aabeace67685221d91a4 │ > │ 6e3655199e42df713504aa0/main.spi"}} / result: │ > │ 00:00:08 debug #51 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 1 / │ > │ error: Some((main.spi: │ > │ Constraint satisfaction error. │ > │ Got: string │ > │ Fails to satisfy: number, TypeErrors │ > │ { errors = │ > │ [(({ character = 8 │ > │ line = 1 }, { character = 10 │ > │ line = 1 }), │ > │ "Constraint satisfaction error. │ > │ Got: string │ > │ Fails to satisfy: number")] │ > │ uri = │ > │ │ > │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030 │ > │ f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" })) / │ > │ path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:08 debug #53 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [ │ > │ [ │ > │ "main.spi: │ > │ Constraint satisfaction error. │ > │ Got: string │ > │ Fails to satisfy: number", │ > │ { │ > │ "TypeErrors": { │ > │ "errors": [ │ > │ [ │ > │ [ │ > │ { │ > │ "character": 8, │ > │ "line": 1 │ > │ }, │ > │ { │ > │ "character": 10, │ > │ "line": 1 │ > │ } │ > │ ], │ > │ "Constraint satisfaction error. │ > │ Got: string │ > │ Fails to satisfy: number" │ > │ ] │ > │ ], │ > │ "uri": │ > │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030 │ > │ f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" │ > │ } │ > │ } │ > │ ] │ > │ ] / typeErrorCount: 0 / retry: 1 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e55 │ > │ 3befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi │ > │ 00:00:08 verbose #54 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030 │ > │ f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0"]}} / result: │ > │ 00:00:08 debug #55 FileSystem.watchWithFilter / Disposing watch │ > │ stream / filter: FileName, LastWrite │ > │ 00:00:08 debug #56 FileSystem.watchWithFilter / Disposing watch │ > │ stream / filter: FileName, LastWrite │ > │ Some (None, ["main.spi: │ > │ Constraint satisfaction error. │ > │ Got: string │ > │ Fails to satisfy: number"]) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """inl main () = > x + y > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ > "main.spi: > Unbound variable: x. > Unbound variable: y." > ]] > ) > ) > > ╭─[ 82.67ms - stdout ]─────────────────────────────────────────────────────────╮ > │ 00:00:14 verbose #6 networking.test_port_open / { port = 13806; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:08 debug #57 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9d │ > │ e5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi │ > │ 00:00:08 debug #58 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9d │ > │ e5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi │ > │ 00:00:08 debug #59 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9d │ > │ e5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi │ > │ 00:00:08 verbose #60 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"inl main () =\n x \u002B │ > │ y\n","uri":"file:///home/runner/work/polyglot/po...et/spiral_Eval/packages/6 │ > │ cdeec507f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi"}} │ > │ / result: │ > │ 00:00:08 debug #61 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: Some((main.spi: │ > │ Unbound variable: x. │ > │ Unbound variable: y., TypeErrors │ > │ { errors = │ > │ [(({ character = 4 │ > │ line = 1 }, { character = 5 │ > │ line = 1 }), "Unbound variable: x."); │ > │ (({ character = 8 │ > │ line = 1 }, { character = 9 │ > │ line = 1 }), "Unbound variable: y.")] │ > │ uri = │ > │ │ > │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cde │ > │ ec507f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })) / │ > │ path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9d │ > │ e5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi │ > │ 00:00:08 debug #62 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [ │ > │ [ │ > │ "main.spi: │ > │ Unbound variable: x. │ > │ Unbound variable: y.", │ > │ { │ > │ "TypeErrors": { │ > │ "errors": [ │ > │ [ │ > │ [ │ > │ { │ > │ "character": 4, │ > │ "line": 1 │ > │ }, │ > │ { │ > │ "character": 5, │ > │ "line": 1 │ > │ } │ > │ ], │ > │ "Unbound variable: x." │ > │ ], │ > │ [ │ > │ [ │ > │ { │ > │ "character": 8, │ > │ "line": 1 │ > │ }, │ > │ { │ > │ "character": 9, │ > │ "line": 1 │ > │ } │ > │ ], │ > │ "Unbound variable: y." │ > │ ] │ > │ ], │ > │ "uri": │ > │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cde │ > │ ec507f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" │ > │ } │ > │ } │ > │ ] │ > │ ] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9d │ > │ e5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi │ > │ 00:00:08 verbose #63 Supervisor.sendJson / port: 13805 / json: │ > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │ > │ lyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429cfa7049b777a622aa3b │ > │ f7333b151c767fde35dc5d1/main.spi"}} / result: │ > │ 00:00:08 verbose #64 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cde │ > │ ec507f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1"]}} / result: │ > │ 00:00:08 debug #65 FileSystem.watchWithFilter / Disposing watch │ > │ stream / filter: FileName, LastWrite │ > │ Some (None, ["main.spi: │ > │ Unbound variable: x. │ > │ Unbound variable: y."]) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """ > inl main () = > real > inl real_unbox forall a. (obj : a) : a = > typecase obj with > | _ => obj > real_unbox () > () > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ "Cannot apply a forall with a term." ]] > ) > ) > > ╭─[ 243.93ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:14 verbose #7 networking.test_port_open / { port = 13806; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:08 debug #66 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/61c59548b11a │ > │ 56efe6894b6855e845b5bd8d9f78be605803496c626bd6369493/main.spi │ > │ 00:00:08 debug #67 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/61c59548b11a │ > │ 56efe6894b6855e845b5bd8d9f78be605803496c626bd6369493/main.spi │ > │ 00:00:08 debug #68 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/61c59548b11a │ > │ 56efe6894b6855e845b5bd8d9f78be605803496c626bd6369493/main.spi │ > │ 00:00:08 verbose #69 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"\ninl main () =\n real\n inl real_unbox │ > │ forall a. (obj : a) : a │ > │ =\...et/spiral_Eval/packages/61c59548b11a56efe6894b6855e845b5bd8d9f78be60580 │ > │ 3496c626bd6369493/main.spi"}} / result: │ > │ 00:00:08 verbose #70 Supervisor.sendJson / port: 13805 / json: │ > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │ > │ lyglot/target/spiral_Eval/packages/61c59548b11a56efe6894b6855e845b5bd8d9f78b │ > │ e605803496c626bd6369493/main.spi"}} / result: │ > │ 00:00:08 debug #71 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: Some((Cannot apply a forall with a term., TracedError │ > │ { message = "Cannot apply a forall with a term." │ > │ trace = │ > │ ["Error trace on line: 2, column: 10 in module: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/61c59548b11a │ > │ 56efe6894b6855e845b5bd8d9f78be605803496c626bd6369493/main.spi. │ > │ inl main () = │ > │ ^ │ > │ "; │ > │ "Error trace on line: 4, column: 9 in module: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/61c59548b11a │ > │ 56efe6894b6855e845b5bd8d9f78be605803496c626bd6369493/main.spi. │ > │ inl real_unbox forall a. (obj : a) : a = │ > │ ^ │ > │ "; │ > │ "Error trace on line: 7, column: 9 in module: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/61c59548b11a │ > │ 56efe6894b6855e845b5bd8d9f78be605803496c626bd6369493/main.spi. │ > │ real_unbox () │ > │ ^ │ > │ "] })) / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/61c59548b11a │ > │ 56efe6894b6855e845b5bd8d9f78be605803496c626bd6369493/main.spi │ > │ 00:00:08 debug #72 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [ │ > │ [ │ > │ "Cannot apply a forall with a term.", │ > │ { │ > │ "TracedError": { │ > │ "message": "Cannot apply a forall with a term.", │ > │ "trace": [ │ > │ "Error trace on line: 2, column: 10 in module: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/61c59548b11a │ > │ 56efe6894b6855e845b5bd8d9f78be605803496c626bd6369493/main.spi. │ > │ inl main () = │ > │ ^ │ > │ ", │ > │ "Error trace on line: 4, column: 9 in module: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/61c59548b11a │ > │ 56efe6894b6855e845b5bd8d9f78be605803496c626bd6369493/main.spi. │ > │ inl real_unbox forall a. (obj : a) : a = │ > │ ^ │ > │ ", │ > │ "Error trace on line: 7, column: 9 in module: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/61c59548b11a │ > │ 56efe6894b6855e845b5bd8d9f78be605803496c626bd6369493/main.spi. │ > │ real_unbox () │ > │ ^ │ > │ " │ > │ ] │ > │ } │ > │ } │ > │ ] │ > │ ] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/61c59548b11a │ > │ 56efe6894b6855e845b5bd8d9f78be605803496c626bd6369493/main.spi │ > │ 00:00:08 verbose #73 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/61c5 │ > │ 9548b11a56efe6894b6855e845b5bd8d9f78be605803496c626bd6369493"]}} / result: │ > │ 00:00:08 debug #74 FileSystem.watchWithFilter / Disposing watch │ > │ stream / filter: FileName, LastWrite │ > │ Some (None, ["Cannot apply a forall with a term."]) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """ > inl main () = > real > inl real_unbox forall a. (obj : a) : a = > typecase obj with > | _ => obj > real_unbox `i32 1 > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ "The main function should not have a forall." ]] > ) > ) > > ╭─[ 254.76ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:14 verbose #8 networking.test_port_open / { port = 13806; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:08 debug #75 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/d18ab5eccdd1 │ > │ 6bb367f1cae1e75791ae1134c04410280fa27c5ddd010dff3b10/main.spi │ > │ 00:00:08 debug #76 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/d18ab5eccdd1 │ > │ 6bb367f1cae1e75791ae1134c04410280fa27c5ddd010dff3b10/main.spi │ > │ 00:00:08 debug #77 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/d18ab5eccdd1 │ > │ 6bb367f1cae1e75791ae1134c04410280fa27c5ddd010dff3b10/main.spi │ > │ 00:00:08 verbose #78 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"\ninl main () =\n real\n inl real_unbox │ > │ forall a. (obj : a) : a │ > │ =\...et/spiral_Eval/packages/d18ab5eccdd16bb367f1cae1e75791ae1134c04410280fa │ > │ 27c5ddd010dff3b10/main.spi"}} / result: │ > │ 00:00:08 verbose #79 Supervisor.sendJson / port: 13805 / json: │ > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │ > │ lyglot/target/spiral_Eval/packages/d18ab5eccdd16bb367f1cae1e75791ae1134c0441 │ > │ 0280fa27c5ddd010dff3b10/main.spi"}} / result: │ > │ 00:00:08 debug #80 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: Some((The main function should not have a forall., TracedError { │ > │ message = "The main function should not have a forall." │ > │ trace = [] })) / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/d18ab5eccdd1 │ > │ 6bb367f1cae1e75791ae1134c04410280fa27c5ddd010dff3b10/main.spi │ > │ 00:00:08 debug #81 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [ │ > │ [ │ > │ "The main function should not have a forall.", │ > │ { │ > │ "TracedError": { │ > │ "message": "The main function should not have a forall.", │ > │ "trace": [] │ > │ } │ > │ } │ > │ ] │ > │ ] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/d18ab5eccdd1 │ > │ 6bb367f1cae1e75791ae1134c04410280fa27c5ddd010dff3b10/main.spi │ > │ 00:00:08 verbose #82 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/d18a │ > │ b5eccdd16bb367f1cae1e75791ae1134c04410280fa27c5ddd010dff3b10"]}} / result: │ > │ 00:00:08 debug #83 FileSystem.watchWithFilter / Disposing watch │ > │ stream / filter: FileName, LastWrite │ > │ Some (None, ["The main function should not have a forall."]) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """ > inl init_series start end inc = > inl total : f64 = conv ((end - start) / inc) + 1 > listm.init total (conv >> (*) inc >> (+) start) : list f64 > > type integration = (f64 -> f64) -> f64 -> f64 -> f64 > > inl integral dt : integration = > fun f a b => > init_series (a + dt / 2) (b - dt / 2) dt > |> listm.map (f >> (*) dt) > |> listm.fold (+) 0 > > inl main () = > integral 0.1 (fun x => x ** 2) 0 1 > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > Some "0.3325000000000001\n", > [[]] > ) > ) > > ╭─[ 261.50ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:14 verbose #9 networking.test_port_open / { port = 13806; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:08 debug #84 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2 │ > │ a92d9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi │ > │ 00:00:08 debug #85 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2 │ > │ a92d9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi │ > │ 00:00:08 debug #86 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2 │ > │ a92d9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi │ > │ 00:00:08 verbose #87 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"\ninl init_series start end inc =\n inl total : │ > │ f64 = conv ((end - │ > │ start)...et/spiral_Eval/packages/c127414de2a2a92d9fd93ea5a8e9312a6aad9129ffd │ > │ 3cbd56ac7f0327106f1db/main.spi"}} / result: │ > │ 00:00:08 verbose #88 Supervisor.sendJson / port: 13805 / json: │ > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │ > │ lyglot/target/spiral_Eval/packages/c127414de2a2a92d9fd93ea5a8e9312a6aad9129f │ > │ fd3cbd56ac7f0327106f1db/main.spi"}} / result: │ > │ 00:00:08 debug #89 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ 0.3325000000000001 │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2 │ > │ a92d9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi │ > │ 00:00:08 debug #90 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ 0.3325000000000001 │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2 │ > │ a92d9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi │ > │ 00:00:08 verbose #91 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127 │ > │ 414de2a2a92d9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db"]}} / result: │ > │ 00:00:08 debug #92 FileSystem.watchWithFilter / Disposing watch │ > │ stream / filter: FileName, LastWrite │ > │ Some (Some "0.3325000000000001 │ > │ ", []) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """ > inl init_series start end inc = > inl total : f64 = conv ((end - start) / inc) + 1 > listm.init total (conv >> (*) inc >> (+) start) : list f64 > > type integration = (f64 -> f64) -> f64 -> f64 -> f64 > > inl integral dt : integration = > fun f a b => > init_series (a + dt / 2) (b - dt / 2) dt > |> listm.map (f >> (*) dt) > |> listm.fold (+) 0 > > inl main () = > integral 0.1 (fun x => x ** 2) 0 1 > """ > |> fun code -> Spi (code, None) > |> buildCode Cuda false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > Some @"kernel = r"""""" > """""" > class static_array(): > def __init__(self, length): > self.ptr = [[]] > for _ in range(length): > self.ptr.append(None) > > def __getitem__(self, index): > assert 0 <= index < len(self.ptr), ""The get index needs to be in > range."" > return self.ptr[[index]] > > def __setitem__(self, index, value): > assert 0 <= index < len(self.ptr), ""The set index needs to be in > range."" > self.ptr[[index]] = value > > class static_array_list(static_array): > def __init__(self, length): > super().__init__(length) > self.length = 0 > > def __getitem__(self, index): > assert 0 <= index < self.length, ""The get index needs to be in range."" > return self.ptr[[index]] > > def __setitem__(self, index, value): > assert 0 <= index < self.length, ""The set index needs to be in range."" > self.ptr[[index]] = value > > def push(self,value): > assert (self.length < len(self.ptr)), ""The length before pushing has to > be less than the maximum length of the array."" > self.ptr[[self.length]] = value > self.length += 1 > > def pop(self): > assert (0 < self.length), ""The length before popping has to be greater > than 0."" > self.length -= 1 > return self.ptr[[self.length]] > > def unsafe_set_length(self,i): > assert 0 <= i <= len(self.ptr), ""The new length has to be in range."" > self.length = i > > class dynamic_array(static_array): > pass > > class dynamic_array_list(static_array_list): > def length_(self): return self.length > > import cupy as cp > from dataclasses import dataclass > from typing import NamedTuple, Union, Callable, Tuple > i8 = i16 = i32 = i64 = u8 = u16 = u32 = u64 = int; f32 = f64 = float; char = > string = str > > def main(): > return 0.3325000000000001 > > if __name__ == '__main__': result = main(); None if result is None else > print(result) > ", > [[]] > ) > ) > > ╭─[ 269.75ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:14 verbose #10 networking.test_port_open / { port = 13806; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:09 debug #93 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8 │ > │ e761855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi │ > │ 00:00:09 debug #94 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8 │ > │ e761855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi │ > │ 00:00:09 debug #95 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8 │ > │ e761855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi │ > │ 00:00:09 verbose #96 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"\ninl init_series start end inc =\n inl total : │ > │ f64 = conv ((end - │ > │ start)...et/spiral_Eval/packages/ca288d6928a8e761855210f25f97fdc056ee1f21be4 │ > │ a24b26e8533ec368831c8/main.spi"}} / result: │ > │ 00:00:09 verbose #97 Supervisor.sendJson / port: 13805 / json: │ > │ {"BuildFile":{"backend":"Python \u002B │ > │ Cuda","uri":"file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/p │ > │ ackages/ca288d6928a8e761855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/mai │ > │ n.spi"}} / result: │ > │ 00:00:09 debug #98 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ kernel = r""" │ > │ """ │ > │ class static_array(): │ > │ def __init__(self, length): │ > │ self.ptr = [] │ > │ for _ in range(length): │ > │ self.ptr.app...char = string = str │ > │ │ > │ def main(): │ > │ return 0.3325000000000001 │ > │ │ > │ if __name__ == '__main__': result = main(); None if result is None else │ > │ print(result) │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8 │ > │ e761855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi │ > │ 00:00:09 debug #99 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ kernel = r""" │ > │ """ │ > │ class static_array(): │ > │ def __init__(self, length): │ > │ self.ptr = [] │ > │ for _ in range(length): │ > │ self.ptr.app...char = string = str │ > │ │ > │ def main(): │ > │ return 0.3325000000000001 │ > │ │ > │ if __name__ == '__main__': result = main(); None if result is None else │ > │ print(result) │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8 │ > │ e761855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi │ > │ 00:00:09 verbose #100 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca28 │ > │ 8d6928a8e761855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8"]}} / result: │ > │ 00:00:09 debug #101 FileSystem.watchWithFilter / Disposing watch │ > │ stream / filter: FileName, LastWrite │ > │ Some │ > │ (Some │ > │ "kernel = r""" │ > │ """ │ > │ class static_array(): │ > │ def __init__(self, length): │ > │ self.ptr = [] │ > │ for _ in range(length): │ > │ self.ptr.append(None) │ > │ │ > │ def __getitem__(self, index): │ > │ assert 0 <= index < len(self.ptr), "The get index needs to be in │ > │ range." │ > │ return self.ptr[index] │ > │ │ > │ def __setitem__(self, index, value): │ > │ assert 0 <= index < len(self.ptr), "The set index needs to be in │ > │ range." │ > │ self.ptr[index] = value │ > │ │ > │ class static_array_list(static_array): │ > │ def __init__(self, length): │ > │ super().__init__(length) │ > │ self.length = 0 │ > │ │ > │ def __getitem__(self, index): │ > │ assert 0 <= index < self.length, "The get index needs to be in │ > │ range." │ > │ return self.ptr[index] │ > │ │ > │ def __setitem__(self, index, value): │ > │ assert 0 <= index < self.length, "The set index needs to be in │ > │ range." │ > │ self.ptr[index] = value │ > │ │ > │ def push(self,value): │ > │ assert (self.length < len(self.ptr)), "The length before pushing has │ > │ to be less than the maximum length of the array." │ > │ self.ptr[self.length] = value │ > │ self.length += 1 │ > │ │ > │ def pop(self): │ > │ assert (0 < self.length), "The length before popping has to be │ > │ greater than 0." │ > │ self.length -= 1 │ > │ return self.ptr[self.length] │ > │ │ > │ def unsafe_set_length(self,i): │ > │ assert 0 <= i <= len(self.ptr), "The new length has to be in range." │ > │ self.length = i │ > │ │ > │ class dynamic_array(static_array): │ > │ pass │ > │ │ > │ class dynamic_array_list(static_array_list): │ > │ def length_(self): return self.length │ > │ │ > │ import cupy as cp │ > │ from dataclasses import dataclass │ > │ from typing import NamedTuple, Union, Callable, Tuple │ > │ i8 = i16 = i32 = i64 = u8 = u16 = u32 = u64 = int; f32 = f64 = float; char = │ > │ string = str │ > │ │ > │ def main(): │ > │ return 0.3325000000000001 │ > │ │ > │ if __name__ == '__main__': result = main(); None if result is None else │ > │ print(result) │ > │ ", │ > │ []) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """ > inl init_series start end inc = > inl total : f64 = conv ((end - start) / inc) + 1 > listm.init total (conv >> (*) inc >> (+) start) : list f64 > > type integration = (f64 -> f64) -> f64 -> f64 -> f64 > > inl integral dt : integration = > fun f a b => > init_series (a + dt / 2) (b - dt / 2) dt > |> listm.map (f >> (*) dt) > |> listm.fold (+) 0 > > inl main () = > integral 0.01 (fun x => x ** 2) 0 1 > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > Some "0.33332500000000004\n", > [[]] > ) > ) > // |> _assertEqual None > // |> fun x -> printfn $"{x.ToDisplayString ()}" > > ╭─[ 350.15ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:15 verbose #11 networking.test_port_open / { port = 13806; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:09 debug #102 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b │ > │ 50ce3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi │ > │ 00:00:09 debug #103 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b │ > │ 50ce3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi │ > │ 00:00:09 debug #104 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b │ > │ 50ce3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi │ > │ 00:00:09 verbose #105 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"\ninl init_series start end inc =\n inl total : │ > │ f64 = conv ((end - │ > │ start)...et/spiral_Eval/packages/2acc44d97e6b50ce3caf39a0b93135633484d22c3ef │ > │ 6e7797ce64875a41451f4/main.spi"}} / result: │ > │ 00:00:09 verbose #106 Supervisor.sendJson / port: 13805 / json: │ > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │ > │ lyglot/target/spiral_Eval/packages/2acc44d97e6b50ce3caf39a0b93135633484d22c3 │ > │ ef6e7797ce64875a41451f4/main.spi"}} / result: │ > │ 00:00:09 debug #107 Supervisor.buildFile / AsyncSeq.scan / │ > │ outputContent: │ > │ 0.33332500000000004 │ > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ > │ error: / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b │ > │ 50ce3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi │ > │ 00:00:09 debug #108 Supervisor.buildFile / takeWhileInclusive / │ > │ outputContent: │ > │ 0.33332500000000004 │ > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: │ > │ /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b │ > │ 50ce3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi │ > │ 00:00:09 verbose #109 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc │ > │ 44d97e6b50ce3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4"]}} / result: │ > │ 00:00:09 debug #110 FileSystem.watchWithFilter / Disposing watch │ > │ stream / filter: FileName, LastWrite │ > │ Some (Some "0.33332500000000004 │ > │ ", []) │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## getFileTokenRange │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline getFileTokenRange port cancellationToken path = async { > let fullPath = path |> System.IO.Path.GetFullPath > let! code = fullPath |> SpiralFileSystem.read_all_text_async > let lines = code |> SpiralSm.split "\n" > > let struct (token, disposable) = SpiralThreading.new_disposable_token > cancellationToken > use _ = disposable > > let port = port |> Option.defaultWith getCompilerPort > let! serverPort, _errors, ct, disposable = awaitCompiler port (Some token) > use _ = disposable > > let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > > let fileOpenObj = {| FileOpen = {| uri = fullPathUri; spiText = code |} |} > let! _fileOpenResult = fileOpenObj |> sendObj serverPort > > // do! Async.Sleep 60 > > let fileTokenRangeObj = > {| > FileTokenRange = > {| > uri = fullPathUri > range = > [[| > {| line = 0; character = 0 |} > {| line = lines.Length - 1; character = > lines.[[lines.Length - 1]].Length |} > |]] > |} > |} > let! fileTokenRangeResult = > fileTokenRangeObj > |> sendObj serverPort > |> Async.withCancellationToken ct > > let fileDir = fullPath |> System.IO.Path.GetDirectoryName > if fileDir |> SpiralSm.starts_with (workspaceRoot </> "target") then > let fileDirUri = fileDir |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > let fileDeleteObj = {| FileDelete = {| uris = [[| fileDirUri |]] |} |} > let! _fileDeleteResult = fileDeleteObj |> sendObj serverPort > () > > return fileTokenRangeResult |> Option.map FSharp.Json.Json.deserialize<int > array> > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## getCodeTokenRange │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline getCodeTokenRange cancellationToken code = async { > let! mainPath, _ = Spi (code, None) |> persistCode None > > let codeDir = mainPath |> System.IO.Path.GetDirectoryName > let tokensPath = codeDir </> "tokens.json" > let! tokens = async { > if tokensPath |> System.IO.File.Exists |> not > then return None > else > let! text = tokensPath |> SpiralFileSystem.read_all_text_async > > return > if text.Length > 2 > then text |> FSharp.Json.Json.deserialize<int array> |> Some > else None > } > match tokens with > | Some tokens -> > return tokens |> Some > | None -> return! mainPath |> getFileTokenRange None cancellationToken > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """inl main () = ()""" > |> getCodeTokenRange None > |> Async.runWithTimeout 10000 > |> Option.flatten > |> _assertEqual (Some [[| 0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; > 8; 0; 0; 2; 1; 4; 0; 0; > 2; 1; 8; 0; 0; 1; 1; 8; 0 |]]) > > ╭─[ 875.82ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:17 verbose #12 networking.test_port_open / { port = 13806; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:11 verbose #111 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"inl main () = │ > │ ()","uri":"file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/pac │ > │ kages/20e725d46cfdc99c0f307f1933a76ec7da4570c1b757721164d86f19feaf821e/main. │ > │ spi"}} / result: │ > │ 00:00:11 verbose #112 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileTokenRange":{"range":[ │ > │ {"character":0,"line":0},{"character":16,"line":0}],"uri":"file:///home/...e │ > │ t/spiral_Eval/packages/20e725d46cfdc99c0f307f1933a76ec7da4570c1b757721164d86 │ > │ f19feaf821e/main.spi"}} / result: Some([ │ > │ 0, │ > │ 0, │ > │ 3, │ > │ 7, │ > │ 0, │ > │ 0, │ > │ 4, │ > │ 4, │ > │ 0, │ > │ 0, │ > │ 0, │ > │ 5, │ > │ 1, │ > │ 8, │ > │ 0, │ > │ 0, │ > │ 1, │ > │ 1, │ > │ 8, │ > │ 0, │ > │ 0, │ > │ 2, │ > │ 1, │ > │ 4, │ > │ 0, │ > │ 0, │ > │ 2, │ > │ 1, │ > │ 8, │ > │ 0, │ > │ 0, │ > │ 1, │ > │ 1, │ > │ 8, │ > │ 0 │ > │ ]) │ > │ 00:00:11 verbose #113 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/20e7 │ > │ 25d46cfdc99c0f307f1933a76ec7da4570c1b757721164d86f19feaf821e"]}} / result: │ > │ Some [|0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; 8; 0; 0; 2; 1; │ > │ 4; 0; 0; 2; 1; 8; 0; 0; 1; 1; 8; 0|] │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """inl main () = 1i32""" > |> getCodeTokenRange None > |> Async.runWithTimeout 10000 > |> Option.flatten > |> _assertEqual (Some [[| 0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; > 8; 0; 0; 2; 1; 4; 0; 0; > 2; 1; 3; 0; 0; 1; 3; 12; 0 |]]) > > ╭─[ 941.57ms - stdout ]────────────────────────────────────────────────────────╮ > │ 00:00:18 verbose #13 networking.test_port_open / { port = 13806; ex = │ > │ System.AggregateException: One or more errors occurred. (Connection refused) │ > │ } │ > │ 00:00:12 verbose #114 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileOpen":{"spiText":"inl main () = │ > │ 1i32","uri":"file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/p │ > │ ackages/5370829508ddefc7386d6b4d280722b47d97cb925585525bee733a187ff8f18b/mai │ > │ n.spi"}} / result: │ > │ 00:00:12 verbose #115 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileTokenRange":{"range":[ │ > │ {"character":0,"line":0},{"character":18,"line":0}],"uri":"file:///home/...e │ > │ t/spiral_Eval/packages/5370829508ddefc7386d6b4d280722b47d97cb925585525bee733 │ > │ a187ff8f18b/main.spi"}} / result: Some([ │ > │ 0, │ > │ 0, │ > │ 3, │ > │ 7, │ > │ 0, │ > │ 0, │ > │ 4, │ > │ 4, │ > │ 0, │ > │ 0, │ > │ 0, │ > │ 5, │ > │ 1, │ > │ 8, │ > │ 0, │ > │ 0, │ > │ 1, │ > │ 1, │ > │ 8, │ > │ 0, │ > │ 0, │ > │ 2, │ > │ 1, │ > │ 4, │ > │ 0, │ > │ 0, │ > │ 2, │ > │ 1, │ > │ 3, │ > │ 0, │ > │ 0, │ > │ 1, │ > │ 3, │ > │ 12, │ > │ 0 │ > │ ]) │ > │ 00:00:12 verbose #116 Supervisor.sendJson / port: 13805 / json: │ > │ {"FileDelete":{"uris":[ │ > │ "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/5370 │ > │ 829508ddefc7386d6b4d280722b47d97cb925585525bee733a187ff8f18b"]}} / result: │ > │ Some [|0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; 8; 0; 0; 2; 1; │ > │ 4; 0; 0; 2; 1; 3; 0; 0; 1; 3; 12; 0|] │ > │ │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## Arguments │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > [[<RequireQualifiedAccess>]] > type Arguments = > | Build_File of string * string > | File_Token_Range of string * string > | Execute_Command of string > | [[<Argu.ArguAttributes.Unique>]] Timeout of int > | [[<Argu.ArguAttributes.Unique>]] Port of int > | [[<Argu.ArguAttributes.Unique>]] Parallel > | [[<Argu.ArguAttributes.Unique>]] Exit_On_Error > > interface Argu.IArgParserTemplate with > member s.Usage = > match s with > | Build_File _ -> nameof Build_File > | File_Token_Range _ -> nameof File_Token_Range > | Execute_Command _ -> nameof Execute_Command > | Timeout _ -> nameof Timeout > | Port _ -> nameof Port > | Parallel -> nameof Parallel > | Exit_On_Error-> nameof Exit_On_Error > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > Argu.ArgumentParser.Create<Arguments>().PrintUsage () > > ╭─[ 81.24ms - return value ]───────────────────────────────────────────────────╮ > │ "USAGE: dotnet-repl [--help] [--build-file <string> <string>] │ > │ [--file-token-range <string> <string>] │ > │ [--execute-command <string>] [--timeout <int>] [--port │ > │ <int>] │ > │ [--parallel] [--exit-on-error] │ > │ │ > │ OPTIONS: │ > │ │ > │ --build-file <string> <string> │ > │ Build_File │ > │ --file-token-range <string> <string> │ > │ File_Token_Range │ > │ --execute-command <string> │ > │ Execute_Command │ > │ --timeout <int> Timeout │ > │ --port <int> Port │ > │ --parallel Parallel │ > │ --exit-on-error Exit_On_Error │ > │ --help display this list of options. │ > │ " │ > │ │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## main │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let main args = > let argsMap = args |> Runtime.parseArgsMap<Arguments> > > let buildFileActions = > argsMap > |> Map.tryFind (nameof Arguments.Build_File) > |> Option.defaultValue [[]] > |> List.choose (function > | Arguments.Build_File (inputPath, outputPath) -> Some (inputPath, > outputPath) > | _ -> None > ) > > let fileTokenRangeActions = > argsMap > |> Map.tryFind (nameof Arguments.File_Token_Range) > |> Option.defaultValue [[]] > |> List.choose (function > | Arguments.File_Token_Range (inputPath, outputPath) -> Some > (inputPath, outputPath) > | _ -> None > ) > > let executeCommandActions = > argsMap > |> Map.tryFind (nameof Arguments.Execute_Command) > |> Option.defaultValue [[]] > |> List.choose (function > | Arguments.Execute_Command command -> Some command > | _ -> None > ) > > let timeout = > match argsMap |> Map.tryFind (nameof Arguments.Timeout) with > | Some [[ Arguments.Timeout timeout ]] -> timeout > | _ -> 60000 * 60 > > let port = > match argsMap |> Map.tryFind (nameof Arguments.Port) with > | Some [[ Arguments.Port port ]] -> Some port > | _ -> None > > let isParallel = argsMap |> Map.containsKey (nameof Arguments.Parallel) > > let isExitOnError = argsMap |> Map.containsKey (nameof > Arguments.Exit_On_Error) > > async { > let port = > port > |> Option.defaultWith getCompilerPort > let struct (localToken, disposable) = > SpiralThreading.new_disposable_token None > let! serverPort, _errors, compilerToken, disposable = awaitCompiler port > (Some localToken) > use _ = disposable > > let buildFileAsync = > buildFileActions > |> List.map (fun (inputPath, outputPath) -> async { > let! _outputPath, (outputCode, errors) = > let backend = > if outputPath |> SpiralSm.ends_with ".fsx" > then Fsharp > elif outputPath |> SpiralSm.ends_with ".py" > then Cuda > else failwith $"Supervisor.main / invalid backend / > outputPath: {outputPath}" > let isReal = inputPath |> SpiralSm.ends_with ".spir" > inputPath |> buildFile backend timeout (Some serverPort) > None > > errors > |> List.map snd > |> List.iter (fun error -> > trace Critical (fun () -> $"main / error: {error |> > serializeObj}") _locals > ) > > match outputCode with > | Some outputCode -> > do! outputCode |> SpiralFileSystem.write_all_text_exists > outputPath > return 0 > | None -> > if isExitOnError > then SpiralRuntime.current_process_kill () > > return 1 > }) > > let fileTokenRangeAsync = > fileTokenRangeActions > |> List.map (fun (inputPath, outputPath) -> async { > let! tokenRange = inputPath |> getFileTokenRange (Some > serverPort) None > match tokenRange with > | Some tokenRange -> > do! tokenRange |> FSharp.Json.Json.serialize |> > SpiralFileSystem.write_all_text_exists outputPath > return 0 > | None -> > if isExitOnError > then SpiralRuntime.current_process_kill () > > return 1 > }) > > let executeCommandAsync = > executeCommandActions > |> List.map (fun command -> async { > let! exitCode, result = > SpiralRuntime.execution_options (fun x -> > { x with > l0 = command > l1 = Some compilerToken > } > ) > |> SpiralRuntime.execute_with_options_async > > trace Debug (fun () -> $"main / executeCommand / exitCode: > {exitCode} / command: {command}") _locals > > if isExitOnError && exitCode <> 0 > then SpiralRuntime.current_process_kill () > > return exitCode > }) > > return! > [[| buildFileAsync; fileTokenRangeAsync; executeCommandAsync |]] > |> Seq.collect id > |> fun x -> > if isParallel > then Async.Parallel (x, float System.Environment.ProcessorCount > * 0.51 |> ceil |> int) > else Async.Sequential x > |> Async.map Array.sum > } > |> Async.runWithTimeout timeout > |> Option.defaultValue 1 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let args = > System.Environment.GetEnvironmentVariable "ARGS" > |> SpiralRuntime.split_args > |> Result.toArray > |> Array.collect id > > match args with > | [[||]] -> 0 > | args -> if main args = 0 then 0 else failwith "main failed" > > ╭─[ 54.63ms - return value ]───────────────────────────────────────────────────╮ > │ <div class="dni-plaintext"><pre>0 │ > │ </pre></div><style> │ > │ .dni-code-hint { │ > │ font-style: italic; │ > │ overflow: hidden; │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview { │ > │ white-space: nowrap; │ > │ } │ > │ .dni-treeview td { │ > │ vertical-align: top; │ > │ text-align: start; │ > │ } │ > │ details.dni-treeview { │ > │ padding-left: 1em; │ > │ } │ > │ table td { │ > │ text-align: start; │ > │ } │ > │ table tr { │ > │ vertical-align: top; │ > │ margin: 0em 0px; │ > │ } │ > │ table tr td pre │ > │ { │ > │ vertical-align: top !important; │ > │ margin: 0em 0px !important; │ > │ } │ > │ table th { │ > │ text-align: start; │ > │ } │ > │ </style> │ > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:03 verbose #6 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 173257 } 00:01:03 debug #7 runtime.execute_with_options / { file_name = jupyter; arguments = [ "nbconvert", "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark", ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:04 verbose #8 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb to html 00:01:04 verbose #9 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:01:04 verbose #10 ! validate(nb) 00:01:04 verbose #11 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:01:04 verbose #12 ! return _pygments_highlight( 00:01:05 verbose #13 ! [NbConvertApp] Writing 499955 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.html 00:01:05 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 906 } 00:01:05 debug #15 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 906 } 00:01:05 debug #16 runtime.execute_with_options / { file_name = pwsh; arguments = [ "-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:05 verbose #17 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:01:05 debug #18 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:01:05 debug #19 spiral_builder.run / dib / { exit_code = 0; result_length = 174222 } 00:00:00 debug #1 writeDibCode / output: Fs / path: Supervisor.dib 00:00:00 debug #2 parseDibCode / output: Fs / file: Supervisor.dib 00:00:00 debug #1 persistCodeProject / packages: [Argu; FSharp.Control.AsyncSeq; FSharp.Json; ... ] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: Supervisor / hash: / code.Length: 27506 00:00:00 debug #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj 00:00:00 debug #1 runtime.execute_with_options_async / { options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/spiral/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/Supervisor" } } 00:00:00 verbose #2 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET 00:00:00 verbose #3 > Determining projects to restore... 00:00:01 verbose #4 > Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b 00:00:01 verbose #5 > The last full restore is still up to date. Nothing left to do. 00:00:01 verbose #6 > Total time taken: 0 milliseconds 00:00:01 verbose #7 > Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b 00:00:01 verbose #8 > Restoring /home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj 00:00:01 verbose #9 > Starting restore process. 00:00:01 verbose #10 > Total time taken: 0 milliseconds 00:00:02 verbose #11 > Restored /home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj (in 341 ms). 00:00:02 verbose #12 > /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [/home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj] 00:00:15 verbose #13 > Supervisor -> /home/runner/work/polyglot/polyglot/target/Builder/Supervisor/bin/Release/net9.0/linux-x64/Supervisor.dll 00:00:15 verbose #14 > Supervisor -> /home/runner/work/polyglot/polyglot/apps/spiral/dist 00:00:16 debug #15 runtime.execute_with_options_async / { exit_code = 0; output_length = 1112 } 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Eval.dib", "--retries", "3"])) } 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ "repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb", ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ # Eval (Polyglot) │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > dard2.1/FSharp.Control.AsyncSeq.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > 0/System.Reactive.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > netstandard2.0/System.Reactive.Linq.dll" > #r > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com > mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli > ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0 > /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0 > /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/ > 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll" > #r > @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha > rp.Json.dll" > #r > @"../../../../../../../.nuget/packages/system.management/7.0.0/lib/netstandard2. > 0/System.Management.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if !INTERACTIVE > open Lib > #endif > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Common > open SpiralFileSystem.Operators > open Microsoft.AspNetCore.SignalR.Client > > ── fsharp ────────────────────────────────────────────────────────────────────── > open System > open System.Collections.Generic > open System.IO > open System.Text > open System.Threading > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## mapErrors │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline mapErrors (severity, errors, lastTopLevelIndex) allCode = > let allCodeLineLength = > allCode |> SpiralSm.split "\n" |> Array.length > > errors > |> List.map (fun (_, error) -> > match error with > | Supervisor.FatalError message -> > ( > severity, message, 0, ("", (0, 0), (0, 0)) > ) > |> List.singleton > | Supervisor.TracedError data -> > data.trace > |> List.truncate 5 > |> List.append [[ data.message ]] > |> List.map (fun message -> > ( > severity, message, 0, ("", (0, 0), (0, 0)) > ) > ) > | Supervisor.PackageErrors data > | Supervisor.TokenizerErrors data > | Supervisor.ParserErrors data > | Supervisor.TypeErrors data -> > data.errors > |> List.filter (fun ((rangeStart, _), _) -> > trace Debug (fun () -> $"Eval.mapErrors / rangeStart.line: > {rangeStart.line} / lastTopLevelIndex: {lastTopLevelIndex} / allCodeLineLength: > {allCodeLineLength} / filtered: {rangeStart.line > allCodeLineLength}") _locals > rangeStart.line > allCodeLineLength > ) > |> List.map (fun ((rangeStart, rangeEnd), message) -> > ( > severity, > message, > 0, > ( > (data.uri |> System.IO.Path.GetFileName), > ( > (match lastTopLevelIndex with > | Some i when rangeStart.line >= i + > allCodeLineLength + 3 -> > rangeStart.line - allCodeLineLength - 2 > | _ -> rangeStart.line - allCodeLineLength), > (match lastTopLevelIndex with > | Some i when rangeStart.line >= i + > allCodeLineLength + 3 -> > rangeStart.character - 4 > | _ -> rangeStart.character) > ), > ( > (match lastTopLevelIndex with > | Some i when rangeStart.line >= i + > allCodeLineLength + 3 -> > rangeEnd.line - allCodeLineLength - 2 > | _ -> rangeEnd.line - allCodeLineLength), > (match lastTopLevelIndex with > | Some i when rangeStart.line >= i + > allCodeLineLength + 3 -> > rangeEnd.character - 4 > | _ -> rangeEnd.character) > ) > ) > ) > ) > ) > |> List.collect id > |> List.toArray > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### workspaceRoot │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let workspaceRoot = SpiralFileSystem.get_workspace_root () > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### targetDir │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let targetDir = workspaceRoot </> "target/spiral_Eval" > [[ targetDir ]] > |> List.iter (fun dir -> if Directory.Exists dir |> not then > Directory.CreateDirectory dir |> ignore) > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ### assemblyName │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let assemblyName = Reflection.Assembly.GetEntryAssembly().GetName().Name > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## allCode │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let mutable allCode = "" > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## allCodeReal │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let mutable allCodeReal = "" > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## traceToggle │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let mutable traceToggle = false > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## getParentProcessId │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let getParentProcessId () = > if SpiralPlatform.is_windows () |> not > then 0u > else > let pid = System.Diagnostics.Process.GetCurrentProcess().Id > let query = $"SELECT ParentProcessId FROM Win32_Process WHERE ProcessId > = {pid}" > use searcher = new System.Management.ManagementObjectSearcher (query) > use results = searcher.Get () > let data = results |> Seq.cast<System.Management.ManagementObject> > if data |> Seq.isEmpty > then 0u > else data |> Seq.head |> (fun mo -> mo.[["ParentProcessId"]] :?> uint32) > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## startTokenRangeWatcher │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline startTokenRangeWatcher () = > if [[ "dotnet-repl" ]] |> List.contains assemblyName |> not then > let tokensDir = targetDir </> "tokens" > > [[ tokensDir ]] > |> List.iter (fun dir -> if Directory.Exists dir |> not then > Directory.CreateDirectory dir |> ignore) > > let stream, disposable = FileSystem.watchDirectory (fun _ -> false) > tokensDir > > try > let existingFilesChild = > tokensDir > |> System.IO.Directory.GetDirectories > |> Array.map (fun codeDir -> async { > try > let tokensPath = codeDir </> "tokens.json" > if tokensPath |> File.Exists |> not then > let spiralCodePath = codeDir </> "main.spi" > let spiralRealCodePath = codeDir </> > "real_main.spir" > let spiralExists = spiralCodePath |> > System.IO.File.Exists > let spiralRealExists = spiralRealCodePath |> > System.IO.File.Exists > if spiralExists |> not && spiralRealExists |> not > then do! codeDir |> > SpiralFileSystem.delete_directory_async |> Async.Ignore > else > let! tokens = > if spiralExists then spiralCodePath else > spiralRealCodePath > |> Supervisor.getFileTokenRange None None > match tokens with > | Some tokens -> > do! > tokens > |> FSharp.Json.Json.serialize > |> SpiralFileSystem.write_all_text_async > tokensPath > | None -> > trace Verbose (fun () -> > $"Eval.startTokenRangeWatcher / GetDirectories / tokens: None") _locals > with ex -> > trace Critical (fun () -> $"Eval.startTokenRangeWatcher > / GetDirectories / ex: {ex |> SpiralSm.format_exception}") _locals > }) > |> Async.Parallel > |> Async.Ignore > > let streamAsyncChild = > stream > |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun (ticks, event) > -> > match event with > | FileSystem.FileSystemChange.Changed (codePath, _) > when [[ "main.spi"; "real_main.spir" ]] > |> List.contains (System.IO.Path.GetFileName > codePath) > -> > async { > let hashDir = codePath |> > System.IO.Directory.GetParent > let hashHex = hashDir.Name > let codePath = tokensDir </> codePath > let tokensPath = tokensDir </> hashHex </> > "tokens.json" > // do! Async.Sleep 30 > let rec loop retry = async { > let! tokens = codePath |> > Supervisor.getFileTokenRange None None > if retry = 3 || tokens <> Some [[||]] > then return tokens, retry > else > trace Debug > (fun () -> $"Eval.startTokenRangeWatcher > / iterAsyncParallel") > (fun () -> $"retry: {retry} / tokens: > {tokens}") > do! Async.Sleep 30 > return! loop (retry + 1) > } > let! tokens, retries = loop 1 > match tokens with > | Some tokens -> > do! > tokens > |> FSharp.Json.Json.serialize > |> SpiralFileSystem.write_all_text_exists > tokensPath > | None -> > trace Debug > (fun () -> $"Eval.startTokenRangeWatcher / > iterAsyncParallel") > (fun () -> $"retries: {retries} / tokens: > {tokens}") > } > |> Async.retryAsync 3 > |> Async.map (Result.toOption >> Option.defaultValue ()) > | _ -> () |> Async.init > ) > > let parentAsyncChild = async { > let parentProcessId = getParentProcessId () > trace Verbose > (fun () -> "Eval.parentAsyncChild") > (fun () -> $"parentProcessId: {parentProcessId} / {_locals > ()}") > > if parentProcessId > 0u then > let parentProcess = parentProcessId |> int |> > System.Diagnostics.Process.GetProcessById > do! parentProcess.WaitForExitAsync () |> Async.AwaitTask > trace Debug > (fun () -> "Eval.parentAsyncChild / Parent process has > exited. Performing cleanup...") > (fun () -> $"{_locals ()}") > System.Threading.Thread.Sleep 1000 > System.Environment.Exit 1 > } > > async { > do! Async.Sleep 3000 > existingFilesChild |> Async.StartImmediate > streamAsyncChild |> Async.Start > parentAsyncChild |> Async.Start > } > |> Async.Start > with ex -> > trace Critical (fun () -> $"Eval.startTokenRangeWatcher / ex: {ex |> > SpiralSm.format_exception}") _locals > > disposable > else new_disposable (fun () -> ()) > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## startCommandsWatcher │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let startCommandsWatcher (uriServer : string) = > let commandsDir = targetDir </> "eval_commands" > let commandHistoryDir = targetDir </> "eval_command_history" > [[ commandsDir; commandHistoryDir ]] > |> List.iter (fun dir -> if Directory.Exists dir |> not then > Directory.CreateDirectory dir |> ignore) > > Directory.EnumerateFiles commandsDir |> Seq.iter File.Delete > > let stream, disposable = > commandsDir > |> FileSystem.watchDirectory (function > | FileSystem.FileSystemChange.Created _ -> true > | _ -> false > ) > > let connection = HubConnectionBuilder().WithUrl(uriServer).Build() > connection.StartAsync() |> Async.AwaitTask |> Async.Start > // let _ = connection.On<string>("ServerToClientMsg", fun x -> > // printfn $"ServerToClientMsg: '{x}'" > // ) > > stream > |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun (ticks, event) -> async { > let _locals () = $"ticks: {ticks} / event: {event} / {_locals ()}" > trace Verbose (fun () -> "Eval.startCommandsWatcher / > iterAsyncParallel") _locals > > match event with > | FileSystem.FileSystemChange.Created (path, Some json) -> > try > let fullPath = commandsDir </> path > let! result = > connection.InvokeAsync<string>("ClientToServerMsg", json) |> Async.AwaitTask > let commandHistoryPath = commandHistoryDir </> path > do! fullPath |> SpiralFileSystem.move_file_async > commandHistoryPath |> Async.Ignore > if result |> SpiralSm.trim |> String.length > 0 then > let resultPath = commandHistoryDir </> > $"{Path.GetFileNameWithoutExtension path}_result.json" > do! result |> SpiralFileSystem.write_all_text_async > resultPath > with ex -> > let _locals () = $"ex: {ex |> SpiralSm.format_exception} / > {_locals ()}" > trace Critical (fun () -> "Eval.startCommandsWatcher / > iterAsyncParallel") _locals > | _ -> () > }) > |> Async.StartChild > |> Async.Ignore > |> Async.Start > > new_disposable (fun () -> > disposable.Dispose () > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## prepareSpiral │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let prepareSpiral rawCellCode lines = > let lastBlock = > lines > |> Array.tryFindBack (fun line -> > line |> String.length > 0 > && line.[[0]] <> ' ' > ) > > let hasMain = > lastBlock > |> Option.exists (fun line -> > line |> SpiralSm.starts_with "inl main " > || line |> SpiralSm.starts_with "let main " > ) > > if hasMain > then rawCellCode, None > else > let lastTopLevelIndex, _ = > (lines |> Array.indexed, (None, false)) > ||> Array.foldBack (fun (i, line) (lastTopLevelIndex, finished) -> > // trace Verbose (fun () -> $"Eval.prepareSpiral / i: {i} / > line: '{line}' / lastTopLevelIndex: {lastTopLevelIndex} / finished: {finished}") > _locals > match line with > | _ when finished -> lastTopLevelIndex, true > | "" -> lastTopLevelIndex, false > | line when > line |> SpiralSm.starts_with " " > || line |> SpiralSm.starts_with "// " -> lastTopLevelIndex, > false > | line when > line |> SpiralSm.starts_with "open " > || line |> SpiralSm.starts_with "prototype " > || line |> SpiralSm.starts_with "instance " > || line |> SpiralSm.starts_with "type " > || line |> SpiralSm.starts_with "union " > || line |> SpiralSm.starts_with "nominal " -> > lastTopLevelIndex, true > | line when > line |> SpiralSm.starts_with "inl " > || line |> SpiralSm.starts_with "and " > || line |> SpiralSm.starts_with "let " -> > let m = > System.Text.RegularExpressions.Regex.Match ( > line, > @"^(?:and +)?(inl|let) +([[~\(\w]][[\w\d']]*(?:| > *[[~\w]][[\w\d']]*\)|, *[[~\w]][[\w\d']]*)) +[[:=]](?! +function)" > ) > trace Verbose (fun () -> $"Eval.prepareSpi / m: '{m}' / > m.Groups.Count: {m.Groups.Count}") _locals > if m.Groups.Count = 3 > then Some i, false > else lastTopLevelIndex, true > | _ -> Some i, false > ) > let code = > match lastTopLevelIndex with > | Some lastTopLevelIndex -> > lines > |> Array.mapi (fun i line -> > match i with > | i when i < lastTopLevelIndex -> line > | i when i = lastTopLevelIndex -> $"\nlet main () =\n > {line}" > | _ when line |> SpiralSm.trim = "" -> "" > | _ -> $" {line}" > ) > |> SpiralSm.concat "\n" > | None -> $"{rawCellCode}\n\ninl main () = ()\n" > code, lastTopLevelIndex > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## processSpiralOutput │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let processSpiralOutput > (props : {| > printCode: bool > traceLevel: TraceLevel > builderCommands: string array > lastTopLevelIndex: int option > backend: Supervisor.Backend > cancellationToken: _ > spiralErrors: _ > code: string > outputPath: string > isReal: bool > |}) > = async { > let inline _trace (fn : unit -> string) = > if props.traceLevel = Verbose > then trace Info (fun () -> $"Eval.processSpiralOutput / props: {props |> > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / {fn ()}") _locals > else fn () |> System.Console.WriteLine > > if props.printCode then > let ext = props.outputPath |> System.IO.Path.GetExtension > _trace (fun () -> if props.builderCommands.Length > 0 then > $"{ext}:\n{props.code}\n" else props.code) > > let workspaceRootExternal = > let currentDir = > System.IO.Directory.GetCurrentDirectory () > |> SpiralSm.to_lower > let workspaceRoot = workspaceRoot |> SpiralSm.to_lower > if currentDir |> SpiralSm.starts_with workspaceRoot > then None > else Some workspaceRoot > > let! spiralBuilderResults = > match props.builderCommands, props.lastTopLevelIndex with > | [[||]], _ | _, None -> [[||]] |> Async.init > | builderCommands, _ -> > builderCommands > |> Array.map (fun builderCommand -> > let path = > workspaceRoot </> > $@"workspace/target/release/spiral_builder{SpiralPlatform.get_executable_suffix > ()}" > |> System.IO.Path.GetFullPath > let commands = > if props.backend = Supervisor.Fsharp > && ( > builderCommand |> SpiralSm.starts_with "rust" > || builderCommand |> SpiralSm.starts_with > "typescript" > || builderCommand |> SpiralSm.starts_with "python" > ) > then [[| $"{path} fable --fs-path \"{props.outputPath}\" > --command \"{builderCommand}\"" |]] > elif props.backend = Supervisor.Cuda > && builderCommand |> SpiralSm.starts_with "cuda" > then [[| $"{path} {builderCommand} --py-path > \"{props.outputPath}\"" |]] > else [[||]] > builderCommand, commands > ) > |> Array.filter (fun (_, commands) -> commands.Length > 0) > |> Array.map (fun (builderCommand, commands) -> > commands > |> Array.map (fun command -> async { > let! exitCode, result = > SpiralRuntime.execution_options (fun x -> > { x with > l0 = command > l1 = props.cancellationToken > l2 = [[| > "AUTOMATION", assemblyName = "dotnet-repl" > |> string > "TRACE_LEVEL", $"%A{if props.printCode then > props.traceLevel else Info}" > |]] > l6 = workspaceRootExternal > } > ) > |> SpiralRuntime.execute_with_options_async > trace Debug > (fun () -> $"Eval.processSpiralOutput / spiral_builder") > (fun () -> $"exitCode: {exitCode} / builderCommand: > {builderCommand} / result: {result |> SpiralSm.ellipsis_end 400} / {_locals > ()}") > return > if exitCode = 0 > then {| code = result; eval = false; builderCommand = > builderCommand |} |> Ok > else result |> Error > }) > ) > |> Array.collect id > |> Async.Parallel > > let hasEval = > props.backend = Supervisor.Fsharp > && props.builderCommands |> Array.exists (fun x -> x |> > SpiralSm.starts_with "fsharp") > > let outputResult = > if props.builderCommands.Length > 0 && not hasEval > then None > else > let code = > if props.builderCommands.Length > 1 > then > let header = "System.Console.WriteLine \".fsx output:\"\n" > $"{header}{props.code}" > else props.code > Some (Ok [[ {| code = code; eval = true; builderCommand = "" |} ]]) > > match outputResult, spiralBuilderResults with > | Some outputResult, [[||]] -> > return outputResult, [[||]] > | None, [[||]] -> > return Ok [[ {| code = "()"; eval = true; builderCommand = "" |} ]], > [[||]] > | _, spiralBuilderResults -> > try > let spiralResults = > match outputResult with > | Some (Ok code) -> > spiralBuilderResults > |> Array.append (code |> List.map Ok |> List.toArray) > | _ -> spiralBuilderResults > let codes = > spiralResults > |> Array.map (fun spiralBuilderResult' -> > let commandResult, errors = > match spiralBuilderResult' with > | Ok result when result.eval = false -> > let result' = > result.code > |> > FSharp.Json.Json.deserialize<Map<string,string>> > let result = > match result' |> Map.tryFind "command_result" > with > | Some result'' -> > result'' > |> > FSharp.Json.Json.deserialize<Map<string,string>> > |> Map.add "builderCommand" > result.builderCommand > | None -> Map.empty > result, [[||]] > | Ok result when result.eval = true -> > let result = > [[ > "extension", "fsx" > "code", result.code > "output", "" > ]] > |> Map.ofList > result, [[||]] > | Error error -> > Map.empty, > [[| > ( > TraceLevel.Critical, > $"Eval.processSpiralOutput / evalResult error / errors[[0]] / outputPath: > {props.outputPath} / builderCommands: %A{props.builderCommands} / > spiralBuilderResult': %A{spiralBuilderResult'} / error: %A{error}", 0, ("", (0, > 0), (0, 0)) > ) > |]] > | _ -> > Map.empty, [[||]] > > if errors |> Array.isEmpty |> not > then Error (Exception $"Eval.processSpiralOutput / > evalResult errors / Exception / commandResult: %A{commandResult}"), errors > else > let extension = commandResult.[["extension"]] > let code = commandResult.[["code"]] > let output = commandResult.[["output"]] > let builderCommand = > commandResult > |> Map.tryFind "builderCommand" > |> Option.defaultValue "" > > let eval = output = "" && extension = "fsx" > > if props.printCode && not eval > then _trace (fun () -> $""".{extension}:{'\n'}{code}""") > > trace Debug > (fun () -> $"Eval.processSpiralOutput / result") > (fun () -> $"builderCommand: {builderCommand} / > extension: {extension} / commandResult: {commandResult |> > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400}/ {_locals ()}") > > let code = > if props.printCode > || spiralResults.Length > 1 > || props.builderCommands.Length > 1 > then > if eval then > code > else > let header = > let info = > match props.backend, builderCommand > with > | Supervisor.Fsharp, builderCommand > when builderCommand |> > SpiralSm.contains " " -> $" ({builderCommand})" > | Supervisor.Fsharp, _ -> "" > | _ -> $" ({props.backend})" > if info = "" > then $".{extension} output:\n" > else $".{extension} output{info}:\n" > $"""{if output |> SpiralSm.contains "\n" > then "\n" else ""}{header}{output}""" > elif eval > then code > else output > Ok {| code = code; eval = eval; builderCommand = > builderCommand |}, [[||]] > ) > trace Debug > (fun () -> $"Eval.processSpiralOutput / codes") > (fun () -> > let props = {| props with cancellationToken = None |} > $"codes: {codes |> FSharp.Json.Json.serialize |> > SpiralSm.ellipsis_end 400} / spiralResults: {spiralResults |> > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / spiralBuilderResults: > {spiralBuilderResults |> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end > 400} / props: {props |> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} > / {_locals ()}") > return > (((Ok [[]]), [[||]]), codes) > ||> Array.fold (fun (acc_code, acc_errors) (code, errors) -> > match code, acc_code with > | Ok code, Ok acc_code -> > let errors = > acc_errors > |> Array.append errors > |> Array.append props.spiralErrors > let errors = > if errors |> Array.isEmpty > then errors > else > let code = $"%A{code}" > errors > |> Array.append [[| > TraceLevel.Critical, > $"Eval.processSpiralOutput / errors / errors[[-1]] / outputPath: > {props.outputPath} / builderCommands: %A{props.builderCommands} / code: {code |> > SpiralSm.ellipsis_end 400}", 0, ("", (0, 0), (0, 0)) > |]] > Ok (code :: acc_code), errors > | Error ex, _ > | _, Error ex -> > Error (Exception $"Eval.processSpiralOutput / -1 / > Exception / spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> > SpiralSm.format_exception}"), > acc_errors |> Array.append errors > ) > with ex -> > trace Critical (fun () -> $"Eval.processSpiralOutput / try 2 ex / > spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> > SpiralSm.format_exception}") _locals > return > Error (Exception $"Eval.processSpiralOutput / try 2 ex / > Exception / spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> > SpiralSm.format_exception}"), > [[| > ( > TraceLevel.Critical, $"Eval.processSpiralOutput / try 2 > ex / errors[[0]] / spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> > SpiralSm.format_exception}", 0, ("", (0, 0), (0, 0)) > ) > |]] > } > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## tryGetPropertyValue │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let tryGetPropertyValue (propertyName: string) (obj: obj) = > let objType = obj.GetType () > let propertyInfo = propertyName |> objType.GetProperty > if propertyInfo <> null > then propertyInfo.GetValue (obj, null) |> Some > else None > > ── markdown ──────────────────────────────────────────────────────────────────── > ╭──────────────────────────────────────────────────────────────────────────────╮ > │ ## eval │ > ╰──────────────────────────────────────────────────────────────────────────────╯ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline eval > (fsi_eval: > string > -> System.Threading.CancellationToken > -> Choice<'a, Exception> * (TraceLevel * string * int * (string * (int * > int) * (int * int))) array) > (cancellationToken: Option<System.Threading.CancellationToken>) > (code: string) > = > trace Verbose > (fun () -> $"Eval.eval") > (fun () -> $"code: {code |> SpiralSm.ellipsis_end 400} / {_locals ()}") > > let rawCellCode = > code |> SpiralSm.replace "\r\n" "\n" > > let lines = rawCellCode |> SpiralSm.split "\n" > > if lines |> Array.exists (fun line -> line |> SpiralSm.starts_with "#r " && > line |> SpiralSm.ends_with "\"") then > let cancellationToken = defaultArg cancellationToken > System.Threading.CancellationToken.None > let ch, errors = fsi_eval code cancellationToken > trace Verbose (fun () -> $"Eval.eval / fsi_eval 1 / ch: %A{ch} / errors: > {errors}") _locals > match ch with > | Choice1Of2 v -> Ok(v), errors > | Choice2Of2 ex -> Error(ex), errors > else > let builderCommands = > lines > |> Array.choose (fun line -> > if line |> SpiralSm.starts_with "///! " > then line |> SpiralSm.split "///! " |> Array.tryItem 1 > else None > ) > > let timeout = > lines > |> Array.tryPick (fun line -> > if line |> SpiralSm.starts_with "//// timeout=" > then line |> SpiralSm.split "=" |> Array.tryItem 1 |> Option.map > int > else None > ) > |> Option.defaultValue (60000 * 60) > > let boolArg def command = > lines > |> Array.tryPick (fun line -> > let text = $"//// {command}" > match line.[[0..text.Length-1]], line.[[text.Length..]] with > | head, "" when head = text -> > Some true > | head, _ when head = text -> > line |> SpiralSm.split "=" |> Array.tryItem 1 |> Option.map > ((<>) "false") > | _ -> None > ) > |> Option.defaultValue def > > let printCode = "print_code" |> boolArg false > let isTraceToggle = "trace_toggle" |> boolArg false > let isTrace = "trace" |> boolArg false > let isCache = "cache" |> boolArg false > let isReal = "real" |> boolArg false > > if isTraceToggle > then traceToggle <- not traceToggle > > let oldLevel = get_trace_level () > let traceLevel = > if isTrace || traceToggle > then Verbose > else Info > traceLevel > |> to_trace_level > |> set_trace_level > use _ = (new_disposable (fun () -> > oldLevel |> set_trace_level > )) > > async { > try > let cellCode, lastTopLevelIndex = prepareSpiral rawCellCode > lines > let newAllCode = > if isReal > then $"{allCodeReal}\n\n{cellCode}" > else $"{allCode}\n\n{cellCode}" > > let buildBackends = > if builderCommands.Length = 0 > then [[| Supervisor.Fsharp |]] > else > builderCommands > |> Array.map (fun x -> > if x |> SpiralSm.starts_with "cuda" > then Supervisor.Cuda > else Supervisor.Fsharp > ) > |> Array.distinct > > trace Verbose > (fun () -> $"Eval.eval") > (fun () -> $"lastTopLevelIndex: {lastTopLevelIndex} / > builderCommands: %A{builderCommands} / buildBackends: %A{buildBackends} / > isReal: {isReal} / {_locals ()}") > > let! buildCodeResults = > buildBackends > |> Array.map (fun backend -> async { > let! result = > if isReal > then Supervisor.Spir newAllCode > else > Supervisor.Spi > (newAllCode, if allCodeReal = "" then None > else Some allCodeReal) > |> Supervisor.buildCode backend isCache timeout > cancellationToken > return backend, result > }) > |> Async.Parallel > |> Async.catch > |> Async.runWithTimeoutAsync timeout > > match buildCodeResults with > | Some (Ok buildCodeResults) -> > let! result, errors = > ((Ok [[]], [[||]]), buildCodeResults) > ||> Async.fold (fun acc buildCodeResult -> async { > match buildCodeResult with > | backend, (_, (outputPath, Some code), > spiralErrors) -> > let spiralErrors = > mapErrors (Warning, spiralErrors, > lastTopLevelIndex) allCode > let! result = > processSpiralOutput > {| > printCode = printCode > traceLevel = traceLevel > builderCommands = builderCommands > lastTopLevelIndex = > lastTopLevelIndex > backend = backend > cancellationToken = > cancellationToken > spiralErrors = spiralErrors > code = code > outputPath = outputPath > isReal = isReal > |} > match result, acc with > | (Ok code, errors), (Ok acc_code, acc_errors) > -> > return Ok (acc_code @ code), acc_errors |> > Array.append errors > | (Error ex, errors), _ | _, (Error ex, errors) > -> > return > Error (Exception $"Eval.eval / > processSpiralOutput / Exception / buildCodeResult: %A{buildCodeResult} / ex: {ex > |> SpiralSm.format_exception}"), > errors |> Array.append errors > | _, (_, _, errors) when errors |> List.isEmpty |> > not -> > return errors.[[0]] |> fst |> Exception |> > Error, > mapErrors (TraceLevel.Critical, errors, > lastTopLevelIndex) allCode > | _ -> return acc > }) > let cancellationToken = defaultArg cancellationToken > System.Threading.CancellationToken.None > match result, errors with > | Ok code, [[||]] -> > let code, eval = > code > |> List.map (fun code -> > if code.eval > then None, Some code.code > else Some code.code, None > ) > |> List.unzip > let code = code |> List.choose id > let eval = eval |> List.choose id > > trace Debug > (fun () -> $"Eval.eval") > (fun () -> $"eval: {eval |> > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / code: {code |> > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / {_locals ()}") > > let ch, errors = > match eval, code with > | [[]], [[]] -> > Choice2Of2 (Exception $"Eval.eval / eval=[[]] / > code=[[]] / buildCodeResults: %A{buildCodeResults} / code: %A{code}"), errors > | [[ eval ]], [[]] -> > let ch, errors2 = fsi_eval eval > cancellationToken > let errors = > errors2 > // |> Array.map (fun (e1, e2, e3, _) -> > // (e1, e2, e3, ("", (0, 0), (0, 0))) > // ) > |> Array.append errors > ch, errors > | [[]], _ -> > let code = code |> List.rev |> String.concat > "\n\n" > let code = > if printCode > then $"\"\"\"{code}\n\n\"\"\"" > else $"\"\"\"{code}\n\"\"\"" > let ch, errors2 = fsi_eval code > cancellationToken > let errors = > errors2 > // |> Array.map (fun (e1, e2, e3, _) -> > // (e1, e2, e3, ("", (0, 0), (0, 0))) > // ) > |> Array.append errors > ch, errors > | _ -> > let code, errors = > ((Ok (code |> List.rev), [[||]]), eval) > ||> List.fold (fun (acc, acc_errors) eval -> > match acc with > | Error ch -> Error ch, acc_errors > | Ok acc -> > let ch, errors = fsi_eval eval > cancellationToken > let errors = > errors > // |> Array.map (fun (e1, e2, > e3, _) -> > // (e1, e2, e3, ("", (0, 0), > (0, 0))) > // ) > |> Array.append acc_errors > match ch with > | Choice1Of2 v -> > let v = > v > |> tryGetPropertyValue > "ReflectionValue" > |> Option.map (fun x -> > $"%A{x}") > |> Option.defaultValue "" > Ok (v :: acc), errors > | Choice2Of2 ex -> > trace Critical (fun () -> > $"Eval.eval / fsi_eval fold Choice error / buildCodeResults: > %A{buildCodeResults} / ex: {ex |> SpiralSm.format_exception}") _locals > Error ch, errors > ) > match code with > | Error ch -> ch, errors > | Ok code -> > let code = > code > |> List.filter ((<>) "") > |> String.concat "\n\n" > > let code = > if builderCommands.Length > 0 && > eval.Length = 0 > then code > elif code |> SpiralSm.contains "\n\n\n" > then $"{code}\n\n" > else $"{code}\n" > > let code = > if printCode > then $"\"\"\"{code}\n\n\n\"\"\"" > else $"\"\"\"{code}\n\"\"\"" > let ch, errors2 = fsi_eval code > cancellationToken > let errors = > errors2 > // |> Array.map (fun (e1, e2, e3, _) -> > // (e1, e2, e3, ("", (0, 0), (0, > 0))) > // ) > |> Array.append errors > ch, errors > match ch with > | Choice1Of2 v -> > if isReal > then allCodeReal <- newAllCode > else allCode <- newAllCode > return Ok(v), errors > | Choice2Of2 ex -> > return > Error (Exception $"Eval.eval / -2 / Exception / > buildCodeResults: {buildCodeResults |> FSharp.Json.Json.serialize |> > SpiralSm.ellipsis_end 400} / ex: {ex |> SpiralSm.format_exception}"), > errors > | Ok code, errors -> > return > Error (Exception "Eval.eval / errors / > buildCodeResults: %A{buildCodeResults} / code: %A{code}"), > errors > | Error ex, errors -> > return > Error (Exception $"Eval.eval / -1 / Exception / > buildCodeResults: {buildCodeResults |> FSharp.Json.Json.serialize |> > SpiralSm.ellipsis_end 1500} / ex: {ex |> SpiralSm.format_exception}"), > errors > | Some (Error ex) -> > trace Critical (fun () -> $"Eval.eval / buildCodeResults > Error / buildCodeResults: %A{buildCodeResults} / ex: {ex |> > SpiralSm.format_exception}") _locals > return > Error (Exception $"Eval.eval / buildCodeResults Error / > Exception / buildCodeResults: %A{buildCodeResults} / ex: {ex |> > SpiralSm.format_exception}"), > [[| > ( > TraceLevel.Critical, $"Eval.eval / > buildCodeResults Error / errors[[0]] / buildCodeResults: %A{buildCodeResults} / > ex: {ex |> SpiralSm.format_exception}", 0, ("", (0, 0), (0, 0)) > ) > |]] > | _ -> > return > Error (Exception $"Eval.eval / buildCodeResults / > Exception / buildCodeResults: %A{buildCodeResults}"), > [[| > ( > TraceLevel.Critical, $"Eval.eval / > buildCodeResults / errors[[0]] / buildCodeResults: %A{buildCodeResults}", 0, > ("", (0, 0), (0, 0)) > ) > |]] > with ex -> > trace Critical (fun () -> $"Eval.eval / try 1 ex / ex: {ex |> > SpiralSm.format_exception} / lines: %A{lines}") _locals > return > Error (Exception $"Eval.eval / try 1 ex / Exception / ex: > {ex |> SpiralSm.format_exception} / lines: %A{lines}"), > [[| > ( > TraceLevel.Critical, $"Eval.eval / try 1 ex / > errors[[0]] / ex: {ex |> SpiralSm.format_exception} / lines: %A{lines}", 0, ("", > (0, 0), (0, 0)) > ) > |]] > } > |> Async.runWithTimeout timeout > |> Option.defaultValue ( > Error (Exception $"Eval.eval / Async.runWithTimeout / Exception / > timeout: {timeout} / lines: %A{lines}"), > [[| > ( > TraceLevel.Critical, $"Eval.eval / Async.runWithTimeout / > errors[[0]] / timeout: {timeout} / lines: %A{lines}", 0, ("", (0, 0), (0, 0)) > ) > |]] > ) 00:00:28 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 53005 } 00:00:28 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ "nbconvert", "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark", ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:29 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb to html 00:00:29 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:29 verbose #7 ! validate(nb) 00:00:29 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:29 verbose #9 ! return _pygments_highlight( 00:00:30 verbose #10 ! [NbConvertApp] Writing 449029 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.html 00:00:30 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 894 } 00:00:30 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 894 } 00:00:30 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ "-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:30 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:30 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:30 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 53958 } 00:00:00 debug #1 writeDibCode / output: Fs / path: Eval.dib 00:00:00 debug #2 parseDibCode / output: Fs / file: Eval.dib
In [ ]:
{ pwsh ../lib/fsharp/build.ps1 -sequential 1 } | Invoke-Block
00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 debug #1 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path Async.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:00 verbose #2 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Async.dib", "--retries", "3"])) } 00:00:00 verbose #3 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:00:00 verbose #4 > "repl", 00:00:00 verbose #5 > "--exit-after-run", 00:00:00 verbose #6 > "--run", 00:00:00 verbose #7 > "/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib", 00:00:00 verbose #8 > "--output-path", 00:00:00 verbose #9 > "/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.ipynb", 00:00:00 verbose #10 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:01 verbose #11 > > 00:00:01 verbose #12 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:01 verbose #13 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:01 verbose #14 > > │ # Async (Polyglot) │ 00:00:01 verbose #15 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:15 verbose #16 > > 00:00:15 verbose #17 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 verbose #18 > > #if !INTERACTIVE 00:00:15 verbose #19 > > open Lib 00:00:15 verbose #20 > > #endif 00:00:15 verbose #21 > > 00:00:15 verbose #22 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 verbose #23 > > open Common 00:00:15 verbose #24 > > 00:00:15 verbose #25 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:15 verbose #26 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:15 verbose #27 > > │ ## choice │ 00:00:15 verbose #28 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:15 verbose #29 > > 00:00:15 verbose #30 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 verbose #31 > > let inline choice asyncs = async { 00:00:15 verbose #32 > > let e = Event<_> () 00:00:15 verbose #33 > > use cts = new System.Threading.CancellationTokenSource () 00:00:15 verbose #34 > > let fn = 00:00:15 verbose #35 > > asyncs 00:00:15 verbose #36 > > |> Seq.map (fun a -> async { 00:00:15 verbose #37 > > let! x = a 00:00:15 verbose #38 > > e.Trigger x 00:00:15 verbose #39 > > }) 00:00:15 verbose #40 > > |> Async.Parallel 00:00:15 verbose #41 > > |> Async.Ignore 00:00:15 verbose #42 > > Async.Start (fn, cts.Token) 00:00:15 verbose #43 > > let! result = Async.AwaitEvent e.Publish 00:00:15 verbose #44 > > cts.Cancel () 00:00:15 verbose #45 > > return result 00:00:15 verbose #46 > > } 00:00:15 verbose #47 > > 00:00:15 verbose #48 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:15 verbose #49 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:15 verbose #50 > > │ ## map │ 00:00:15 verbose #51 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:15 verbose #52 > > 00:00:15 verbose #53 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 verbose #54 > > let inline map fn a = async { 00:00:15 verbose #55 > > let! x = a 00:00:15 verbose #56 > > return fn x 00:00:15 verbose #57 > > } 00:00:15 verbose #58 > > 00:00:15 verbose #59 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:15 verbose #60 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:15 verbose #61 > > │ ## catch │ 00:00:15 verbose #62 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:15 verbose #63 > > 00:00:15 verbose #64 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 verbose #65 > > let inline catch a = 00:00:15 verbose #66 > > a 00:00:15 verbose #67 > > |> Async.Catch 00:00:15 verbose #68 > > |> map (function 00:00:15 verbose #69 > > | Choice1Of2 result -> Ok result 00:00:15 verbose #70 > > | Choice2Of2 ex -> Error ex 00:00:15 verbose #71 > > ) 00:00:15 verbose #72 > > 00:00:15 verbose #73 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:15 verbose #74 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:15 verbose #75 > > │ ## runWithTimeoutChoiceAsync │ 00:00:15 verbose #76 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:15 verbose #77 > > 00:00:15 verbose #78 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 verbose #79 > > let inline runWithTimeoutChoiceAsync (timeout : int) fn = 00:00:15 verbose #80 > > let _locals () = $"timeout: {timeout} / {_locals ()}" 00:00:15 verbose #81 > > 00:00:15 verbose #82 > > let timeoutTask = async { 00:00:15 verbose #83 > > do! Async.Sleep timeout 00:00:15 verbose #84 > > trace Debug (fun () -> "runWithTimeoutChoiceAsync") _locals 00:00:15 verbose #85 > > return None 00:00:15 verbose #86 > > } 00:00:15 verbose #87 > > 00:00:15 verbose #88 > > let task = async { 00:00:15 verbose #89 > > try 00:00:15 verbose #90 > > let! result = fn 00:00:15 verbose #91 > > return Some result 00:00:15 verbose #92 > > with 00:00:15 verbose #93 > > | :? System.AggregateException as ex when 00:00:15 verbose #94 > > ex.InnerExceptions 00:00:15 verbose #95 > > |> Seq.exists (function :? 00:00:15 verbose #96 > > System.Threading.Tasks.TaskCanceledException -> true | _ -> false) 00:00:15 verbose #97 > > -> 00:00:15 verbose #98 > > trace Warning 00:00:15 verbose #99 > > (fun () -> "runWithTimeoutChoiceAsync") 00:00:15 verbose #100 > > (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals 00:00:15 verbose #101 > > ()}") 00:00:15 verbose #102 > > return None 00:00:15 verbose #103 > > | ex -> 00:00:15 verbose #104 > > trace Critical 00:00:15 verbose #105 > > (fun () -> "runWithTimeoutChoiceAsync") 00:00:15 verbose #106 > > (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals 00:00:15 verbose #107 > > ()}") 00:00:15 verbose #108 > > return None 00:00:15 verbose #109 > > } 00:00:15 verbose #110 > > 00:00:15 verbose #111 > > [[ timeoutTask; task ]] 00:00:15 verbose #112 > > |> choice 00:00:15 verbose #113 > > 00:00:15 verbose #114 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 verbose #115 > > let inline runWithTimeoutChoice timeout fn = 00:00:15 verbose #116 > > fn 00:00:15 verbose #117 > > |> runWithTimeoutChoiceAsync timeout 00:00:15 verbose #118 > > |> Async.RunSynchronously 00:00:15 verbose #119 > > 00:00:15 verbose #120 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 verbose #121 > > //// test 00:00:15 verbose #122 > > 00:00:15 verbose #123 > > Async.Sleep 120 00:00:15 verbose #124 > > |> runWithTimeoutChoice 10 00:00:15 verbose #125 > > |> _assertEqual None 00:00:15 verbose #126 > > 00:00:15 verbose #127 > > ╭─[ 132.52ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:15 verbose #128 > > │ 00:00:00 debug #1 runWithTimeoutChoiceAsync / timeout: 10 │ 00:00:15 verbose #129 > > │ <null> │ 00:00:15 verbose #130 > > │ │ 00:00:15 verbose #131 > > │ │ 00:00:15 verbose #132 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:15 verbose #133 > > 00:00:15 verbose #134 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 verbose #135 > > //// test 00:00:15 verbose #136 > > 00:00:15 verbose #137 > > Async.Sleep 10 00:00:15 verbose #138 > > |> runWithTimeoutChoice 60 00:00:15 verbose #139 > > |> _assertEqual (Some ()) 00:00:15 verbose #140 > > 00:00:15 verbose #141 > > ╭─[ 93.12ms - stdout ]─────────────────────────────────────────────────────────╮ 00:00:15 verbose #142 > > │ Some () │ 00:00:15 verbose #143 > > │ │ 00:00:15 verbose #144 > > │ │ 00:00:15 verbose #145 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:15 verbose #146 > > 00:00:15 verbose #147 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 verbose #148 > > //// test 00:00:15 verbose #149 > > 00:00:15 verbose #150 > > async { 00:00:15 verbose #151 > > raise (exn "error") 00:00:15 verbose #152 > > } 00:00:15 verbose #153 > > |> runWithTimeoutChoice 60 00:00:15 verbose #154 > > |> _assertEqual None 00:00:15 verbose #155 > > 00:00:15 verbose #156 > > ╭─[ 88.81ms - stdout ]─────────────────────────────────────────────────────────╮ 00:00:15 verbose #157 > > │ 00:00:00 critical #2 runWithTimeoutChoiceAsync / ex: System.Exception: │ 00:00:15 verbose #158 > > │ error / timeout: 60 │ 00:00:15 verbose #159 > > │ <null> │ 00:00:15 verbose #160 > > │ │ 00:00:15 verbose #161 > > │ │ 00:00:15 verbose #162 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:15 verbose #163 > > 00:00:15 verbose #164 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:15 verbose #165 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:15 verbose #166 > > │ ## runWithTimeoutAsync │ 00:00:15 verbose #167 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:15 verbose #168 > > 00:00:15 verbose #169 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 verbose #170 > > let inline runWithTimeoutAsync (timeout : int) fn = async { 00:00:15 verbose #171 > > let _locals () = $"timeout: {timeout} / {_locals ()}" 00:00:15 verbose #172 > > let! child = Async.StartChild (fn, timeout) 00:00:15 verbose #173 > > return! 00:00:15 verbose #174 > > child 00:00:15 verbose #175 > > |> catch 00:00:15 verbose #176 > > |> map (function 00:00:15 verbose #177 > > | Ok result -> Some result 00:00:15 verbose #178 > > | Error (:? System.TimeoutException as ex) -> 00:00:15 verbose #179 > > trace Debug (fun () -> $"runWithTimeoutAsync") _locals 00:00:15 verbose #180 > > None 00:00:15 verbose #181 > > | Error ex -> 00:00:15 verbose #182 > > trace Critical (fun () -> $"runWithTimeoutAsync** / ex: %A{ex}") 00:00:15 verbose #183 > > _locals 00:00:15 verbose #184 > > None 00:00:15 verbose #185 > > ) 00:00:15 verbose #186 > > } 00:00:15 verbose #187 > > 00:00:15 verbose #188 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 verbose #189 > > let inline runWithTimeout timeout fn = 00:00:15 verbose #190 > > fn 00:00:15 verbose #191 > > |> runWithTimeoutAsync timeout 00:00:15 verbose #192 > > |> Async.RunSynchronously 00:00:15 verbose #193 > > 00:00:15 verbose #194 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 verbose #195 > > //// test 00:00:15 verbose #196 > > 00:00:15 verbose #197 > > Async.Sleep 60 00:00:15 verbose #198 > > |> runWithTimeout 10 00:00:15 verbose #199 > > |> _assertEqual None 00:00:16 verbose #200 > > 00:00:16 verbose #201 > > ╭─[ 75.80ms - stdout ]─────────────────────────────────────────────────────────╮ 00:00:16 verbose #202 > > │ 00:00:01 debug #3 runWithTimeoutAsync / timeout: 10 │ 00:00:16 verbose #203 > > │ <null> │ 00:00:16 verbose #204 > > │ │ 00:00:16 verbose #205 > > │ │ 00:00:16 verbose #206 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #207 > > 00:00:16 verbose #208 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #209 > > //// test 00:00:16 verbose #210 > > 00:00:16 verbose #211 > > Async.Sleep 10 00:00:16 verbose #212 > > |> runWithTimeout 60 00:00:16 verbose #213 > > |> _assertEqual (Some ()) 00:00:16 verbose #214 > > 00:00:16 verbose #215 > > ╭─[ 61.08ms - stdout ]─────────────────────────────────────────────────────────╮ 00:00:16 verbose #216 > > │ Some () │ 00:00:16 verbose #217 > > │ │ 00:00:16 verbose #218 > > │ │ 00:00:16 verbose #219 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #220 > > 00:00:16 verbose #221 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #222 > > //// test 00:00:16 verbose #223 > > 00:00:16 verbose #224 > > async { 00:00:16 verbose #225 > > raise (exn "error") 00:00:16 verbose #226 > > } 00:00:16 verbose #227 > > |> runWithTimeout 60 00:00:16 verbose #228 > > |> _assertEqual None 00:00:16 verbose #229 > > 00:00:16 verbose #230 > > ╭─[ 68.87ms - stdout ]─────────────────────────────────────────────────────────╮ 00:00:16 verbose #231 > > │ 00:00:01 critical #4 runWithTimeoutAsync** / ex: System.Exception: │ 00:00:16 verbose #232 > > │ error │ 00:00:16 verbose #233 > > │ at FSI_0036.it@4-119.Invoke(Unit unitVar) │ 00:00:16 verbose #234 > > │ at Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[ │ 00:00:16 verbose #235 > > │ T,TResult](AsyncActivation`1 ctxt, TResult result1, FSharpFunc`2 part2) in │ 00:00:16 verbose #236 > > │ D:\a\_work\1\s\src\FSharp.Core\async.fs:line 510 │ 00:00:16 verbose #237 > > │ at Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction) │ 00:00:16 verbose #238 > > │ in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112 │ 00:00:16 verbose #239 > > │ --- End of stack trace from previous location --- │ 00:00:16 verbose #240 > > │ at Microsoft.FSharp.Control.AsyncResult`1.Commit() in │ 00:00:16 verbose #241 > > │ D:\a\_work\1\s\src\FSharp.Core\async.fs:line 454 │ 00:00:16 verbose #242 > > │ at │ 00:00:16 verbose #243 > > │ <StartupCode$FSharp-Core>.$Async.AwaitAndBindChildResult@1962-4.Invoke(Unit │ 00:00:16 verbose #244 > > │ unitVar) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1964 │ 00:00:16 verbose #245 > > │ at Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[ │ 00:00:16 verbose #246 > > │ T,TResult](AsyncActivation`1 ctxt, TResult result1, FSharpFunc`2 part2) in │ 00:00:16 verbose #247 > > │ D:\a\_work\1\s\src\FSharp.Core\async.fs:line 510 │ 00:00:16 verbose #248 > > │ at Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction) │ 00:00:16 verbose #249 > > │ in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112 / timeout: 60 │ 00:00:16 verbose #250 > > │ <null> │ 00:00:16 verbose #251 > > │ │ 00:00:16 verbose #252 > > │ │ 00:00:16 verbose #253 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #254 > > 00:00:16 verbose #255 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 verbose #256 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:16 verbose #257 > > │ ## runWithTimeoutStrict │ 00:00:16 verbose #258 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #259 > > 00:00:16 verbose #260 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #261 > > let inline runWithTimeoutStrict (timeout : int) fn = 00:00:16 verbose #262 > > let _locals () = $"timeout: {timeout} / {_locals ()}" 00:00:16 verbose #263 > > 00:00:16 verbose #264 > > let timeoutTask = async { 00:00:16 verbose #265 > > do! Async.Sleep timeout 00:00:16 verbose #266 > > return None, _locals 00:00:16 verbose #267 > > } 00:00:16 verbose #268 > > 00:00:16 verbose #269 > > let task = async { 00:00:16 verbose #270 > > try 00:00:16 verbose #271 > > return Async.RunSynchronously (fn, timeout) |> Some, _locals 00:00:16 verbose #272 > > with 00:00:16 verbose #273 > > | :? System.TimeoutException as ex -> 00:00:16 verbose #274 > > let _locals () = $"ex: {ex |> SpiralSm.format_exception} / {_locals 00:00:16 verbose #275 > > ()}" 00:00:16 verbose #276 > > return None, _locals 00:00:16 verbose #277 > > | ex -> 00:00:16 verbose #278 > > trace Critical 00:00:16 verbose #279 > > (fun () -> "runWithTimeoutStrict / async error") 00:00:16 verbose #280 > > (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals 00:00:16 verbose #281 > > ()}") 00:00:16 verbose #282 > > return raise ex 00:00:16 verbose #283 > > } 00:00:16 verbose #284 > > 00:00:16 verbose #285 > > try 00:00:16 verbose #286 > > [[| timeoutTask; task |]] 00:00:16 verbose #287 > > |> Array.map Async.StartAsTask 00:00:16 verbose #288 > > |> System.Threading.Tasks.Task.WhenAny 00:00:16 verbose #289 > > |> fun task -> 00:00:16 verbose #290 > > match task.Result.Result with 00:00:16 verbose #291 > > | None, _locals -> 00:00:16 verbose #292 > > trace Debug (fun () -> "runWithTimeoutStrict") _locals 00:00:16 verbose #293 > > None 00:00:16 verbose #294 > > | result, _ -> result 00:00:16 verbose #295 > > with 00:00:16 verbose #296 > > | :? System.AggregateException as ex when 00:00:16 verbose #297 > > ex.InnerExceptions 00:00:16 verbose #298 > > |> Seq.exists (function :? System.Threading.Tasks.TaskCanceledException 00:00:16 verbose #299 > > -> true | _ -> false) 00:00:16 verbose #300 > > -> 00:00:16 verbose #301 > > trace Warning 00:00:16 verbose #302 > > (fun () -> "runWithTimeoutStrict") 00:00:16 verbose #303 > > (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals ()}") 00:00:16 verbose #304 > > None 00:00:16 verbose #305 > > | ex -> 00:00:16 verbose #306 > > trace Critical 00:00:16 verbose #307 > > (fun () -> "runWithTimeoutStrict / task error") 00:00:16 verbose #308 > > (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals ()}") 00:00:16 verbose #309 > > None 00:00:16 verbose #310 > > 00:00:16 verbose #311 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #312 > > //// test 00:00:16 verbose #313 > > 00:00:16 verbose #314 > > Async.Sleep 60 00:00:16 verbose #315 > > |> runWithTimeoutStrict 10 00:00:16 verbose #316 > > |> _assertEqual None 00:00:16 verbose #317 > > 00:00:16 verbose #318 > > ╭─[ 82.75ms - stdout ]─────────────────────────────────────────────────────────╮ 00:00:16 verbose #319 > > │ 00:00:01 debug #5 runWithTimeoutStrict / timeout: 10 │ 00:00:16 verbose #320 > > │ <null> │ 00:00:16 verbose #321 > > │ │ 00:00:16 verbose #322 > > │ │ 00:00:16 verbose #323 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #324 > > 00:00:16 verbose #325 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #326 > > //// test 00:00:16 verbose #327 > > 00:00:16 verbose #328 > > Async.Sleep 10 00:00:16 verbose #329 > > |> runWithTimeoutStrict 60 00:00:16 verbose #330 > > |> _assertEqual (Some ()) 00:00:16 verbose #331 > > 00:00:16 verbose #332 > > ╭─[ 80.81ms - stdout ]─────────────────────────────────────────────────────────╮ 00:00:16 verbose #333 > > │ Some () │ 00:00:16 verbose #334 > > │ │ 00:00:16 verbose #335 > > │ │ 00:00:16 verbose #336 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #337 > > 00:00:16 verbose #338 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #339 > > //// test 00:00:16 verbose #340 > > 00:00:16 verbose #341 > > async { 00:00:16 verbose #342 > > raise (exn "error") 00:00:16 verbose #343 > > } 00:00:16 verbose #344 > > |> runWithTimeoutStrict 60 00:00:16 verbose #345 > > |> _assertEqual None 00:00:16 verbose #346 > > 00:00:16 verbose #347 > > ╭─[ 84.65ms - stdout ]─────────────────────────────────────────────────────────╮ 00:00:16 verbose #348 > > │ 00:00:01 critical #6 runWithTimeoutStrict / async error / ex: │ 00:00:16 verbose #349 > > │ System.Exception: error / timeout: 60 │ 00:00:16 verbose #350 > > │ 00:00:01 critical #7 runWithTimeoutStrict / task error / ex: │ 00:00:16 verbose #351 > > │ System.AggregateException: One or more errors occurred. (error) / timeout: │ 00:00:16 verbose #352 > > │ 60 │ 00:00:16 verbose #353 > > │ <null> │ 00:00:16 verbose #354 > > │ │ 00:00:16 verbose #355 > > │ │ 00:00:16 verbose #356 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #357 > > 00:00:16 verbose #358 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 verbose #359 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:16 verbose #360 > > │ ## awaitValueTask │ 00:00:16 verbose #361 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #362 > > 00:00:16 verbose #363 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #364 > > let inline awaitValueTaskUnit (task : System.Threading.Tasks.ValueTask) = 00:00:16 verbose #365 > > task.AsTask () |> Async.AwaitTask 00:00:16 verbose #366 > > 00:00:16 verbose #367 > > let inline awaitValueTask (task : System.Threading.Tasks.ValueTask<_>) = 00:00:16 verbose #368 > > task.AsTask () |> Async.AwaitTask 00:00:16 verbose #369 > > 00:00:16 verbose #370 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 verbose #371 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:16 verbose #372 > > │ ## init │ 00:00:16 verbose #373 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #374 > > 00:00:16 verbose #375 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #376 > > let inline init x = async { 00:00:16 verbose #377 > > return x 00:00:16 verbose #378 > > } 00:00:16 verbose #379 > > 00:00:16 verbose #380 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #381 > > //// test 00:00:16 verbose #382 > > 00:00:16 verbose #383 > > init 1 00:00:16 verbose #384 > > |> Async.RunSynchronously 00:00:16 verbose #385 > > |> _assertEqual 1 00:00:16 verbose #386 > > 00:00:16 verbose #387 > > ╭─[ 18.68ms - stdout ]─────────────────────────────────────────────────────────╮ 00:00:16 verbose #388 > > │ 1 │ 00:00:16 verbose #389 > > │ │ 00:00:16 verbose #390 > > │ │ 00:00:16 verbose #391 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #392 > > 00:00:16 verbose #393 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 verbose #394 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:16 verbose #395 > > │ ## withCancellationToken │ 00:00:16 verbose #396 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #397 > > 00:00:16 verbose #398 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #399 > > let inline withCancellationToken (ct : System.Threading.CancellationToken) fn = 00:00:16 verbose #400 > > Async.StartImmediateAsTask (fn, ct) 00:00:16 verbose #401 > > |> Async.AwaitTask 00:00:16 verbose #402 > > 00:00:16 verbose #403 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #404 > > //// test 00:00:16 verbose #405 > > 00:00:16 verbose #406 > > let cts = new System.Threading.CancellationTokenSource () 00:00:16 verbose #407 > > 00:00:16 verbose #408 > > async { 00:00:16 verbose #409 > > let run = async { 00:00:16 verbose #410 > > do! Async.Sleep 100 00:00:16 verbose #411 > > return 1 00:00:16 verbose #412 > > } 00:00:16 verbose #413 > > 00:00:16 verbose #414 > > let! child = 00:00:16 verbose #415 > > run 00:00:16 verbose #416 > > |> withCancellationToken cts.Token 00:00:16 verbose #417 > > |> catch 00:00:16 verbose #418 > > |> Async.StartChild 00:00:16 verbose #419 > > 00:00:16 verbose #420 > > do! Async.Sleep 50 00:00:16 verbose #421 > > cts.Cancel () 00:00:16 verbose #422 > > return! child 00:00:16 verbose #423 > > } 00:00:16 verbose #424 > > |> Async.RunSynchronously 00:00:16 verbose #425 > > |> Result.mapError _.Message 00:00:16 verbose #426 > > |> _assertEqual (Error ("A task was canceled.")) 00:00:16 verbose #427 > > 00:00:16 verbose #428 > > ╭─[ 138.47ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:16 verbose #429 > > │ Error "A task was canceled." │ 00:00:16 verbose #430 > > │ │ 00:00:16 verbose #431 > > │ │ 00:00:16 verbose #432 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #433 > > 00:00:16 verbose #434 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 verbose #435 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:16 verbose #436 > > │ ## retryAsync │ 00:00:16 verbose #437 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #438 > > 00:00:16 verbose #439 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #440 > > let inline retryAsync retries fn = 00:00:16 verbose #441 > > let rec loop retry lastError = async { 00:00:16 verbose #442 > > try 00:00:16 verbose #443 > > return! 00:00:16 verbose #444 > > if retry <= retries 00:00:16 verbose #445 > > then fn |> map Ok 00:00:16 verbose #446 > > else lastError |> Error |> init 00:00:16 verbose #447 > > with ex -> 00:00:16 verbose #448 > > trace Debug (fun () -> $"Async.retryAsync / retry: {retry}/{retries} 00:00:16 verbose #449 > > / ex: {ex |> SpiralSm.format_exception}") _locals 00:00:16 verbose #450 > > do! Async.Sleep 30 00:00:16 verbose #451 > > return! loop (retry + 1) (ex |> SpiralSm.format_exception) 00:00:16 verbose #452 > > } 00:00:16 verbose #453 > > loop 1 "Async.retryAsync / invalid retries / retries: {retries}" 00:00:16 verbose #454 > > 00:00:16 verbose #455 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #456 > > //// test 00:00:16 verbose #457 > > 00:00:16 verbose #458 > > let retry_fn_test = ref 0 00:00:16 verbose #459 > > async { 00:00:16 verbose #460 > > retry_fn_test.Value <- retry_fn_test.Value + 1 00:00:16 verbose #461 > > return retry_fn_test.Value 00:00:16 verbose #462 > > } 00:00:16 verbose #463 > > |> retryAsync 3 00:00:16 verbose #464 > > |> Async.RunSynchronously 00:00:16 verbose #465 > > |> _assertEqual (Ok 1) 00:00:16 verbose #466 > > 00:00:16 verbose #467 > > ╭─[ 61.99ms - stdout ]─────────────────────────────────────────────────────────╮ 00:00:16 verbose #468 > > │ Ok 1 │ 00:00:16 verbose #469 > > │ │ 00:00:16 verbose #470 > > │ │ 00:00:16 verbose #471 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #472 > > 00:00:16 verbose #473 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #474 > > //// test 00:00:16 verbose #475 > > 00:00:16 verbose #476 > > let retry_fn_test = ref 0 00:00:16 verbose #477 > > async { 00:00:16 verbose #478 > > return 00:00:16 verbose #479 > > if retry_fn_test.Value >= 2 00:00:16 verbose #480 > > then retry_fn_test.Value 00:00:16 verbose #481 > > else 00:00:16 verbose #482 > > retry_fn_test.Value <- retry_fn_test.Value + 1 00:00:16 verbose #483 > > failwith "test" 00:00:16 verbose #484 > > } 00:00:16 verbose #485 > > |> retryAsync 3 00:00:16 verbose #486 > > |> Async.RunSynchronously 00:00:16 verbose #487 > > |> _assertEqual (Ok 2) 00:00:17 verbose #488 > > 00:00:17 verbose #489 > > ╭─[ 156.56ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:17 verbose #490 > > │ 00:00:02 debug #8 Async.retryAsync / retry: 1/3 / ex: │ 00:00:17 verbose #491 > > │ System.Exception: test │ 00:00:17 verbose #492 > > │ 00:00:02 debug #9 Async.retryAsync / retry: 2/3 / ex: │ 00:00:17 verbose #493 > > │ System.Exception: test │ 00:00:17 verbose #494 > > │ Ok 2 │ 00:00:17 verbose #495 > > │ │ 00:00:17 verbose #496 > > │ │ 00:00:17 verbose #497 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:17 verbose #498 > > 00:00:17 verbose #499 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:17 verbose #500 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:17 verbose #501 > > │ ## fold │ 00:00:17 verbose #502 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:17 verbose #503 > > 00:00:17 verbose #504 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:17 verbose #505 > > let fold folder state array = 00:00:17 verbose #506 > > let rec loop acc i = 00:00:17 verbose #507 > > async { 00:00:17 verbose #508 > > if i < Array.length array then 00:00:17 verbose #509 > > let! newAcc = folder acc array.[[i]] 00:00:17 verbose #510 > > return! loop newAcc (i + 1) 00:00:17 verbose #511 > > else 00:00:17 verbose #512 > > return acc 00:00:17 verbose #513 > > } 00:00:17 verbose #514 > > loop state 0 00:00:17 verbose #515 > 00:00:16 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 24788 } 00:00:17 verbose #516 > 00:00:16 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:00:17 verbose #517 > "nbconvert", 00:00:17 verbose #518 > "/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.ipynb", 00:00:17 verbose #519 > "--to", 00:00:17 verbose #520 > "html", 00:00:17 verbose #521 > "--HTMLExporter.theme=dark", 00:00:17 verbose #522 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:17 verbose #523 > 00:00:17 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.ipynb to html 00:00:17 verbose #524 > 00:00:17 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:17 verbose #525 > 00:00:17 verbose #7 ! validate(nb) 00:00:18 verbose #526 > 00:00:17 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:18 verbose #527 > 00:00:17 verbose #9 ! return _pygments_highlight( 00:00:18 verbose #528 > 00:00:17 verbose #10 ! [NbConvertApp] Writing 332769 bytes to /home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.html 00:00:18 verbose #529 > 00:00:18 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 894 } 00:00:18 verbose #530 > 00:00:18 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 894 } 00:00:18 verbose #531 > 00:00:18 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:00:18 verbose #532 > "-c", 00:00:18 verbose #533 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:00:18 verbose #534 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:18 verbose #535 > 00:00:18 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:18 verbose #536 > 00:00:18 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:18 verbose #537 > 00:00:18 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 25741 } 00:00:18 debug #538 runtime.execute_with_options_async / { exit_code = 0; output_length = 29584 } 00:00:18 debug #1 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path Async.dib --retries 3 00:00:18 debug #539 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path AsyncSeq.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:18 verbose #540 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "AsyncSeq.dib", "--retries", "3"])) } 00:00:18 verbose #541 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:00:18 verbose #542 > "repl", 00:00:18 verbose #543 > "--exit-after-run", 00:00:18 verbose #544 > "--run", 00:00:18 verbose #545 > "/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib", 00:00:18 verbose #546 > "--output-path", 00:00:18 verbose #547 > "/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.ipynb", 00:00:18 verbose #548 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:20 verbose #549 > > 00:00:20 verbose #550 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:20 verbose #551 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:20 verbose #552 > > │ # AsyncSeq (Polyglot) │ 00:00:20 verbose #553 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:33 verbose #554 > > 00:00:33 verbose #555 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:33 verbose #556 > > #r 00:00:33 verbose #557 > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan 00:00:33 verbose #558 > > dard2.1/FSharp.Control.AsyncSeq.dll" 00:00:33 verbose #559 > > #r 00:00:33 verbose #560 > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. 00:00:33 verbose #561 > > 0/System.Reactive.dll" 00:00:33 verbose #562 > > #r 00:00:33 verbose #563 > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib 00:00:33 verbose #564 > > netstandard2.0/System.Reactive.Linq.dll" 00:00:33 verbose #565 > > 00:00:33 verbose #566 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:33 verbose #567 > > #if !INTERACTIVE 00:00:33 verbose #568 > > open Lib 00:00:33 verbose #569 > > #endif 00:00:33 verbose #570 > > 00:00:33 verbose #571 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:33 verbose #572 > > open Common 00:00:33 verbose #573 > > 00:00:33 verbose #574 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:33 verbose #575 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:33 verbose #576 > > │ ## subscribeEvent │ 00:00:33 verbose #577 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:33 verbose #578 > > 00:00:33 verbose #579 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:33 verbose #580 > > let inline subscribeEvent (event: IEvent<'H, 'A>) map = 00:00:33 verbose #581 > > let observable = System.Reactive.Linq.Observable.FromEventPattern<'H, 00:00:33 verbose #582 > > 'A>(event.AddHandler, event.RemoveHandler) 00:00:33 verbose #583 > > System.Reactive.Linq.Observable.Select (observable, fun event -> map 00:00:33 verbose #584 > > event.EventArgs) 00:00:33 verbose #585 > > |> FSharp.Control.AsyncSeq.ofObservableBuffered 00:00:33 verbose #586 > > 00:00:33 verbose #587 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:33 verbose #588 > > //// test 00:00:33 verbose #589 > > 00:00:33 verbose #590 > > type TestEvent () as self = 00:00:33 verbose #591 > > member val Calls = [[]] with get, set 00:00:33 verbose #592 > > member val Event = Event<ErrorEventHandler, ErrorEventArgs> () with get 00:00:33 verbose #593 > > 00:00:33 verbose #594 > > member _.AddCall text = 00:00:33 verbose #595 > > self.Calls <- self.Calls @ [[ text ]] 00:00:33 verbose #596 > > 00:00:33 verbose #597 > > member _.EventInterface = 00:00:33 verbose #598 > > { new IEvent<ErrorEventHandler, ErrorEventArgs> with 00:00:33 verbose #599 > > member _.AddHandler handler = 00:00:33 verbose #600 > > self.AddCall "AddHandler" 00:00:33 verbose #601 > > self.Event.Publish.AddHandler handler 00:00:33 verbose #602 > > 00:00:33 verbose #603 > > member _.RemoveHandler handler = 00:00:33 verbose #604 > > self.AddCall "RemoveHandler" 00:00:33 verbose #605 > > self.Event.Publish.RemoveHandler handler 00:00:33 verbose #606 > > 00:00:33 verbose #607 > > member _.Subscribe observer = 00:00:33 verbose #608 > > self.AddCall "IObservable.Subscribe" 00:00:33 verbose #609 > > let disposable = self.Event.Publish.Subscribe observer 00:00:33 verbose #610 > > new_disposable (fun () -> 00:00:33 verbose #611 > > self.AddCall "IObservable.Dispose" 00:00:33 verbose #612 > > disposable.Dispose () 00:00:33 verbose #613 > > ) 00:00:33 verbose #614 > > } 00:00:33 verbose #615 > > 00:00:33 verbose #616 > > member _.Subscribe () = 00:00:33 verbose #617 > > subscribeEvent 00:00:33 verbose #618 > > self.EventInterface 00:00:33 verbose #619 > > (fun args -> 00:00:33 verbose #620 > > let result = args.GetException () |> SpiralSm.format_exception 00:00:33 verbose #621 > > self.AddCall $"TestEvent.Subscribe({result})" 00:00:33 verbose #622 > > result 00:00:33 verbose #623 > > ) 00:00:33 verbose #624 > > 00:00:33 verbose #625 > > member _.Iter subscription = 00:00:33 verbose #626 > > subscription 00:00:33 verbose #627 > > |> FSharp.Control.AsyncSeq.iteriAsync (fun i error -> async { 00:00:33 verbose #628 > > self.AddCall $"TestEvent.Iter({i}: {error})" 00:00:33 verbose #629 > > }) 00:00:33 verbose #630 > > 00:00:33 verbose #631 > > member _.WaitCall text = async { 00:00:33 verbose #632 > > while self.Calls |> List.last <> text do 00:00:33 verbose #633 > > do! Async.SwitchToThreadPool () 00:00:33 verbose #634 > > } 00:00:33 verbose #635 > > 00:00:33 verbose #636 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:33 verbose #637 > > //// test 00:00:33 verbose #638 > > 00:00:33 verbose #639 > > let testEvent = TestEvent () 00:00:33 verbose #640 > > 00:00:33 verbose #641 > > async { 00:00:33 verbose #642 > > testEvent.AddCall "1" 00:00:33 verbose #643 > > let! child = testEvent.Subscribe () |> testEvent.Iter |> Async.StartChild 00:00:33 verbose #644 > > do! testEvent.WaitCall "AddHandler" 00:00:33 verbose #645 > > testEvent.AddCall "2" 00:00:33 verbose #646 > > do! child 00:00:33 verbose #647 > > testEvent.AddCall "3" 00:00:33 verbose #648 > > } 00:00:33 verbose #649 > > |> Async.runWithTimeout 300 00:00:33 verbose #650 > > |> _assertEqual None 00:00:33 verbose #651 > > 00:00:33 verbose #652 > > testEvent.Calls 00:00:33 verbose #653 > > |> Seq.toList 00:00:33 verbose #654 > > |> _assertEqual [[ "1"; "AddHandler"; "2"; "RemoveHandler" ]] 00:00:34 verbose #655 > > 00:00:34 verbose #656 > > ╭─[ 434.24ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:34 verbose #657 > > │ 00:00:01 debug #1 runWithTimeoutAsync / timeout: 300 │ 00:00:34 verbose #658 > > │ <null> │ 00:00:34 verbose #659 > > │ │ 00:00:34 verbose #660 > > │ ["1"; "AddHandler"; "2"; "RemoveHandler"] │ 00:00:34 verbose #661 > > │ │ 00:00:34 verbose #662 > > │ │ 00:00:34 verbose #663 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:34 verbose #664 > > 00:00:34 verbose #665 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:34 verbose #666 > > //// test 00:00:34 verbose #667 > > 00:00:34 verbose #668 > > let testEvent = TestEvent () 00:00:34 verbose #669 > > 00:00:34 verbose #670 > > async { 00:00:34 verbose #671 > > testEvent.AddCall "1" 00:00:34 verbose #672 > > let! child = testEvent.Subscribe () |> testEvent.Iter |> Async.StartChild 00:00:34 verbose #673 > > do! testEvent.WaitCall "AddHandler" 00:00:34 verbose #674 > > testEvent.AddCall "2" 00:00:34 verbose #675 > > use _ = testEvent.EventInterface.Subscribe (fun args -> 00:00:34 verbose #676 > > testEvent.AddCall $"testEvent.EventInterface.Subscribe({args})" 00:00:34 verbose #677 > > ) 00:00:34 verbose #678 > > testEvent.AddCall "3" 00:00:34 verbose #679 > > do! child 00:00:34 verbose #680 > > testEvent.AddCall "4" 00:00:34 verbose #681 > > } 00:00:34 verbose #682 > > |> Async.runWithTimeout 300 00:00:34 verbose #683 > > |> _assertEqual None 00:00:34 verbose #684 > > 00:00:34 verbose #685 > > testEvent.Calls 00:00:34 verbose #686 > > |> _assertEqual [[ "1"; "AddHandler"; "2"; "IObservable.Subscribe"; "3"; 00:00:34 verbose #687 > > "RemoveHandler"; "IObservable.Dispose" ]] 00:00:34 verbose #688 > > 00:00:34 verbose #689 > > ╭─[ 373.16ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:34 verbose #690 > > │ 00:00:01 debug #2 runWithTimeoutAsync / timeout: 300 │ 00:00:34 verbose #691 > > │ <null> │ 00:00:34 verbose #692 > > │ │ 00:00:34 verbose #693 > > │ ["1"; "AddHandler"; "2"; "IObservable.Subscribe"; "3"; "RemoveHandler"; │ 00:00:34 verbose #694 > > │ "IObservable.Dispose"] │ 00:00:34 verbose #695 > > │ │ 00:00:34 verbose #696 > > │ │ 00:00:34 verbose #697 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:34 verbose #698 > > 00:00:34 verbose #699 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:34 verbose #700 > > //// test 00:00:34 verbose #701 > > 00:00:34 verbose #702 > > let testEvent = TestEvent () 00:00:34 verbose #703 > > 00:00:34 verbose #704 > > async { 00:00:34 verbose #705 > > testEvent.AddCall "1" 00:00:34 verbose #706 > > let! child = testEvent.Subscribe () |> testEvent.Iter |> Async.StartChild 00:00:34 verbose #707 > > do! testEvent.WaitCall "AddHandler" 00:00:34 verbose #708 > > testEvent.AddCall "2" 00:00:34 verbose #709 > > use _ = testEvent.EventInterface.Subscribe (fun args -> 00:00:34 verbose #710 > > async { 00:00:34 verbose #711 > > do! testEvent.WaitCall "TestEvent.Iter(0: System.Exception: error)" 00:00:34 verbose #712 > > testEvent.AddCall 00:00:34 verbose #713 > > $"testEvent.EventInterface.Subscribe({args.GetException () |> 00:00:34 verbose #714 > > SpiralSm.format_exception})" 00:00:34 verbose #715 > > } 00:00:34 verbose #716 > > |> Async.RunSynchronously 00:00:34 verbose #717 > > ) 00:00:34 verbose #718 > > testEvent.AddCall "3" 00:00:34 verbose #719 > > testEvent.Event.Trigger (null, ErrorEventArgs (Exception "error")) 00:00:34 verbose #720 > > testEvent.AddCall "4" 00:00:34 verbose #721 > > do! child 00:00:34 verbose #722 > > testEvent.AddCall "5" 00:00:34 verbose #723 > > } 00:00:34 verbose #724 > > |> Async.runWithTimeout 300 00:00:34 verbose #725 > > |> _assertEqual None 00:00:34 verbose #726 > > 00:00:34 verbose #727 > > testEvent.Calls 00:00:34 verbose #728 > > |> _assertEqual [[ 00:00:34 verbose #729 > > "1" 00:00:34 verbose #730 > > "AddHandler" 00:00:34 verbose #731 > > "2" 00:00:34 verbose #732 > > "IObservable.Subscribe" 00:00:34 verbose #733 > > "3" 00:00:34 verbose #734 > > "TestEvent.Subscribe(System.Exception: error)" 00:00:34 verbose #735 > > "TestEvent.Iter(0: System.Exception: error)" 00:00:34 verbose #736 > > "testEvent.EventInterface.Subscribe(System.Exception: error)" 00:00:34 verbose #737 > > "4" 00:00:34 verbose #738 > > "RemoveHandler" 00:00:34 verbose #739 > > "IObservable.Dispose" 00:00:34 verbose #740 > > ]] 00:00:34 verbose #741 > > 00:00:34 verbose #742 > > ╭─[ 380.85ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:34 verbose #743 > > │ 00:00:02 debug #3 runWithTimeoutAsync / timeout: 300 │ 00:00:34 verbose #744 > > │ <null> │ 00:00:34 verbose #745 > > │ │ 00:00:34 verbose #746 > > │ ["1"; "AddHandler"; "2"; "IObservable.Subscribe"; "3"; │ 00:00:34 verbose #747 > > │ "TestEvent.Subscribe(System.Exception: error)"; │ 00:00:34 verbose #748 > > │ "TestEvent.Iter(0: System.Exception: error)"; │ 00:00:34 verbose #749 > > │ "testEvent.EventInterface.Subscribe(System.Exception: error)"; "4"; │ 00:00:34 verbose #750 > > │ "RemoveHandler"; "IObservable.Dispose"] │ 00:00:34 verbose #751 > > │ │ 00:00:34 verbose #752 > > │ │ 00:00:34 verbose #753 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:34 verbose #754 > > 00:00:34 verbose #755 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:34 verbose #756 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:34 verbose #757 > > │ ## subscribeToken │ 00:00:34 verbose #758 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:34 verbose #759 > > 00:00:34 verbose #760 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:34 verbose #761 > > let subscribeToken (token : System.Threading.CancellationToken) = 00:00:34 verbose #762 > > let tcs = new System.Threading.Tasks.TaskCompletionSource () 00:00:34 verbose #763 > > System.Action tcs.SetResult |> token.Register |> ignore 00:00:34 verbose #764 > > let start = System.DateTime.Now.Ticks 00:00:34 verbose #765 > > FSharp.Control.AsyncSeq.unfoldAsync 00:00:34 verbose #766 > > (fun () -> async { 00:00:34 verbose #767 > > do! tcs.Task |> Async.AwaitTask 00:00:34 verbose #768 > > return Some (System.DateTime.Now.Ticks - start, ()) 00:00:34 verbose #769 > > }) 00:00:34 verbose #770 > > () 00:00:34 verbose #771 > > 00:00:34 verbose #772 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:34 verbose #773 > > //// test 00:00:34 verbose #774 > > 00:00:34 verbose #775 > > let cts = new System.Threading.CancellationTokenSource () 00:00:34 verbose #776 > > 00:00:34 verbose #777 > > async { 00:00:34 verbose #778 > > let! child = 00:00:34 verbose #779 > > cts.Token 00:00:34 verbose #780 > > |> subscribeToken 00:00:34 verbose #781 > > |> FSharp.Control.AsyncSeq.tryFirst 00:00:34 verbose #782 > > |> Async.StartChild 00:00:34 verbose #783 > > 00:00:34 verbose #784 > > do! Async.Sleep 100 00:00:34 verbose #785 > > cts.Cancel () 00:00:34 verbose #786 > > return! child 00:00:34 verbose #787 > > } 00:00:34 verbose #788 > > |> Async.RunSynchronously 00:00:34 verbose #789 > > |> Option.get 00:00:34 verbose #790 > > |> fun x -> x > 900000 00:00:34 verbose #791 > > |> _assertEqual true 00:00:35 verbose #792 > > 00:00:35 verbose #793 > > ╭─[ 133.48ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:35 verbose #794 > > │ true │ 00:00:35 verbose #795 > > │ │ 00:00:35 verbose #796 > > │ │ 00:00:35 verbose #797 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:35 verbose #798 > 00:00:16 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 10886 } 00:00:35 verbose #799 > 00:00:16 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:00:35 verbose #800 > "nbconvert", 00:00:35 verbose #801 > "/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.ipynb", 00:00:35 verbose #802 > "--to", 00:00:35 verbose #803 > "html", 00:00:35 verbose #804 > "--HTMLExporter.theme=dark", 00:00:35 verbose #805 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:35 verbose #806 > 00:00:16 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.ipynb to html 00:00:35 verbose #807 > 00:00:16 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:35 verbose #808 > 00:00:16 verbose #7 ! validate(nb) 00:00:36 verbose #809 > 00:00:17 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:36 verbose #810 > 00:00:17 verbose #9 ! return _pygments_highlight( 00:00:36 verbose #811 > 00:00:17 verbose #10 ! [NbConvertApp] Writing 303112 bytes to /home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.html 00:00:36 verbose #812 > 00:00:17 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 900 } 00:00:36 verbose #813 > 00:00:17 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 900 } 00:00:36 verbose #814 > 00:00:17 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:00:36 verbose #815 > "-c", 00:00:36 verbose #816 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:00:36 verbose #817 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:36 verbose #818 > 00:00:17 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:36 verbose #819 > 00:00:17 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:36 verbose #820 > 00:00:17 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 11845 } 00:00:36 debug #821 runtime.execute_with_options_async / { exit_code = 0; output_length = 15205 } 00:00:36 debug #2 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path AsyncSeq.dib --retries 3 00:00:36 debug #822 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path Common.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:36 verbose #823 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Common.dib", "--retries", "3"])) } 00:00:36 verbose #824 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:00:36 verbose #825 > "repl", 00:00:36 verbose #826 > "--exit-after-run", 00:00:36 verbose #827 > "--run", 00:00:36 verbose #828 > "/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib", 00:00:36 verbose #829 > "--output-path", 00:00:36 verbose #830 > "/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.ipynb", 00:00:36 verbose #831 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:38 verbose #832 > > 00:00:38 verbose #833 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:38 verbose #834 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:38 verbose #835 > > │ # Common (Polyglot) │ 00:00:38 verbose #836 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:50 verbose #837 > > 00:00:50 verbose #838 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:50 verbose #839 > > #if !INTERACTIVE 00:00:50 verbose #840 > > open Lib 00:00:50 verbose #841 > > #endif 00:00:50 verbose #842 > > 00:00:50 verbose #843 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:50 verbose #844 > > let nl = System.Environment.NewLine 00:00:50 verbose #845 > > let q = @"""" 00:00:50 verbose #846 > > 00:00:50 verbose #847 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:50 verbose #848 > > let inline cons head tail = head :: tail 00:00:50 verbose #849 > > 00:00:50 verbose #850 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:50 verbose #851 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:50 verbose #852 > > │ ## memoize │ 00:00:50 verbose #853 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:50 verbose #854 > > 00:00:50 verbose #855 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:50 verbose #856 > > let inline memoize fn = 00:00:50 verbose #857 > > let result = lazy fn () 00:00:50 verbose #858 > > fun () -> result.Value 00:00:50 verbose #859 > > 00:00:50 verbose #860 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:50 verbose #861 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:50 verbose #862 > > │ ## TraceLevel │ 00:00:50 verbose #863 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:50 verbose #864 > > 00:00:50 verbose #865 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:50 verbose #866 > > type TraceLevel = 00:00:50 verbose #867 > > | Verbose 00:00:50 verbose #868 > > | Debug 00:00:50 verbose #869 > > | Info 00:00:50 verbose #870 > > | Warning 00:00:50 verbose #871 > > | Critical 00:00:50 verbose #872 > > 00:00:50 verbose #873 > > let inline _locals () = "" 00:00:50 verbose #874 > > 00:00:50 verbose #875 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:50 verbose #876 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:50 verbose #877 > > │ ## trace │ 00:00:50 verbose #878 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:50 verbose #879 > > 00:00:50 verbose #880 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:50 verbose #881 > > let to_trace_level = function 00:00:50 verbose #882 > > | Verbose -> SpiralTrace.TraceLevel.US0_0 00:00:50 verbose #883 > > | Debug -> SpiralTrace.TraceLevel.US0_1 00:00:50 verbose #884 > > | Info -> SpiralTrace.TraceLevel.US0_2 00:00:50 verbose #885 > > | Warning -> SpiralTrace.TraceLevel.US0_3 00:00:50 verbose #886 > > | Critical -> SpiralTrace.TraceLevel.US0_4 00:00:50 verbose #887 > > 00:00:50 verbose #888 > > let trace level fn locals = 00:00:50 verbose #889 > > let level = level |> to_trace_level 00:00:50 verbose #890 > > SpiralTrace.trace level fn locals 00:00:50 verbose #891 > > 00:00:50 verbose #892 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:50 verbose #893 > > //// test 00:00:50 verbose #894 > > 00:00:50 verbose #895 > > trace Debug (fun () -> "test") _locals 00:00:50 verbose #896 > > 00:00:50 verbose #897 > > ╭─[ 29.31ms - stdout ]─────────────────────────────────────────────────────────╮ 00:00:50 verbose #898 > > │ 00:00:00 debug #1 test │ 00:00:50 verbose #899 > > │ │ 00:00:50 verbose #900 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:50 verbose #901 > 00:00:14 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 3413 } 00:00:50 verbose #902 > 00:00:14 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:00:50 verbose #903 > "nbconvert", 00:00:50 verbose #904 > "/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.ipynb", 00:00:50 verbose #905 > "--to", 00:00:50 verbose #906 > "html", 00:00:50 verbose #907 > "--HTMLExporter.theme=dark", 00:00:50 verbose #908 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:51 verbose #909 > 00:00:14 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.ipynb to html 00:00:51 verbose #910 > 00:00:14 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:51 verbose #911 > 00:00:14 verbose #7 ! validate(nb) 00:00:51 verbose #912 > 00:00:15 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:51 verbose #913 > 00:00:15 verbose #9 ! return _pygments_highlight( 00:00:52 verbose #914 > 00:00:15 verbose #10 ! [NbConvertApp] Writing 280733 bytes to /home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.html 00:00:52 verbose #915 > 00:00:15 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 896 } 00:00:52 verbose #916 > 00:00:15 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 896 } 00:00:52 verbose #917 > 00:00:15 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:00:52 verbose #918 > "-c", 00:00:52 verbose #919 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:00:52 verbose #920 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:52 verbose #921 > 00:00:15 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:52 verbose #922 > 00:00:15 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:52 verbose #923 > 00:00:15 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 4368 } 00:00:52 debug #924 runtime.execute_with_options_async / { exit_code = 0; output_length = 7348 } 00:00:52 debug #3 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path Common.dib --retries 3 00:00:52 debug #925 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path CommonFSharp.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:52 verbose #926 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "CommonFSharp.dib", "--retries", "3"])) } 00:00:52 verbose #927 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:00:52 verbose #928 > "repl", 00:00:52 verbose #929 > "--exit-after-run", 00:00:52 verbose #930 > "--run", 00:00:52 verbose #931 > "/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib", 00:00:52 verbose #932 > "--output-path", 00:00:52 verbose #933 > "/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.ipynb", 00:00:52 verbose #934 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:53 verbose #935 > > 00:00:53 verbose #936 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:53 verbose #937 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:53 verbose #938 > > │ # CommonFSharp (Polyglot) │ 00:00:53 verbose #939 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:06 verbose #940 > > 00:01:06 verbose #941 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:06 verbose #942 > > open Common 00:01:06 verbose #943 > > 00:01:06 verbose #944 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:06 verbose #945 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:06 verbose #946 > > │ ## getUnionCaseName │ 00:01:06 verbose #947 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:06 verbose #948 > > 00:01:06 verbose #949 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:06 verbose #950 > > let inline getUnionCaseName<'T> (x: 'T) = 00:01:06 verbose #951 > > match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with 00:01:06 verbose #952 > > | case, _ -> case.Name 00:01:06 verbose #953 > > 00:01:06 verbose #954 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:06 verbose #955 > > //// test 00:01:06 verbose #956 > > 00:01:06 verbose #957 > > TraceLevel.Critical 00:01:06 verbose #958 > > |> getUnionCaseName 00:01:06 verbose #959 > > |> _assertEqual (nameof TraceLevel.Critical) 00:01:06 verbose #960 > > 00:01:06 verbose #961 > > ╭─[ 47.27ms - stdout ]─────────────────────────────────────────────────────────╮ 00:01:06 verbose #962 > > │ "Critical" │ 00:01:06 verbose #963 > > │ │ 00:01:06 verbose #964 > > │ │ 00:01:06 verbose #965 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:06 verbose #966 > 00:00:13 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 1845 } 00:01:06 verbose #967 > 00:00:13 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:01:06 verbose #968 > "nbconvert", 00:01:06 verbose #969 > "/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.ipynb", 00:01:06 verbose #970 > "--to", 00:01:06 verbose #971 > "html", 00:01:06 verbose #972 > "--HTMLExporter.theme=dark", 00:01:06 verbose #973 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:06 verbose #974 > 00:00:14 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.ipynb to html 00:01:06 verbose #975 > 00:00:14 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:01:06 verbose #976 > 00:00:14 verbose #7 ! validate(nb) 00:01:07 verbose #977 > 00:00:14 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:01:07 verbose #978 > 00:00:14 verbose #9 ! return _pygments_highlight( 00:01:07 verbose #979 > 00:00:14 verbose #10 ! [NbConvertApp] Writing 275590 bytes to /home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.html 00:01:07 verbose #980 > 00:00:14 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 908 } 00:01:07 verbose #981 > 00:00:14 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 908 } 00:01:07 verbose #982 > 00:00:14 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:01:07 verbose #983 > "-c", 00:01:07 verbose #984 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:01:07 verbose #985 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:07 verbose #986 > 00:00:15 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:01:07 verbose #987 > 00:00:15 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:01:07 verbose #988 > 00:00:15 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 2812 } 00:01:07 debug #989 runtime.execute_with_options_async / { exit_code = 0; output_length = 5770 } 00:01:07 debug #4 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path CommonFSharp.dib --retries 3 00:01:07 debug #990 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path FileSystem.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:07 verbose #991 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "FileSystem.dib", "--retries", "3"])) } 00:01:07 verbose #992 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:01:07 verbose #993 > "repl", 00:01:07 verbose #994 > "--exit-after-run", 00:01:07 verbose #995 > "--run", 00:01:07 verbose #996 > "/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib", 00:01:07 verbose #997 > "--output-path", 00:01:07 verbose #998 > "/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.ipynb", 00:01:07 verbose #999 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:01:09 verbose #1000 > > 00:01:09 verbose #1001 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:09 verbose #1002 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:09 verbose #1003 > > │ # FileSystem (Polyglot) │ 00:01:09 verbose #1004 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:11 verbose #1005 > > 00:01:11 verbose #1006 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:11 verbose #1007 > > #r 00:01:11 verbose #1008 > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan 00:01:11 verbose #1009 > > dard2.1/FSharp.Control.AsyncSeq.dll" 00:01:11 verbose #1010 > > #r 00:01:11 verbose #1011 > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. 00:01:11 verbose #1012 > > 0/System.Reactive.dll" 00:01:11 verbose #1013 > > #r 00:01:11 verbose #1014 > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib 00:01:11 verbose #1015 > > netstandard2.0/System.Reactive.Linq.dll" 00:01:11 verbose #1016 > > #r 00:01:11 verbose #1017 > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" 00:01:23 verbose #1018 > > 00:01:23 verbose #1019 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:23 verbose #1020 > > #if !INTERACTIVE 00:01:23 verbose #1021 > > open Lib 00:01:23 verbose #1022 > > #endif 00:01:23 verbose #1023 > > 00:01:23 verbose #1024 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:23 verbose #1025 > > open Common 00:01:23 verbose #1026 > > open SpiralFileSystem.Operators 00:01:23 verbose #1027 > > 00:01:23 verbose #1028 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:23 verbose #1029 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:23 verbose #1030 > > │ ## watchDirectory │ 00:01:23 verbose #1031 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:23 verbose #1032 > > 00:01:23 verbose #1033 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:23 verbose #1034 > > [[<RequireQualifiedAccess>]] 00:01:23 verbose #1035 > > type FileSystemChangeType = 00:01:23 verbose #1036 > > | Failure 00:01:23 verbose #1037 > > | Changed 00:01:23 verbose #1038 > > | Created 00:01:23 verbose #1039 > > | Deleted 00:01:23 verbose #1040 > > | Renamed 00:01:23 verbose #1041 > > 00:01:23 verbose #1042 > > [[<RequireQualifiedAccess>]] 00:01:23 verbose #1043 > > type FileSystemChange = 00:01:23 verbose #1044 > > | Failure of exn: exn 00:01:23 verbose #1045 > > | Changed of path: string * content: string option 00:01:23 verbose #1046 > > | Created of path: string * content: string option 00:01:23 verbose #1047 > > | Deleted of path: string 00:01:23 verbose #1048 > > | Renamed of oldPath: string * (string * string option) 00:01:23 verbose #1049 > > 00:01:23 verbose #1050 > > 00:01:23 verbose #1051 > > let inline watchDirectoryWithFilter filter shouldReadContent path = 00:01:23 verbose #1052 > > let fullPath = path |> System.IO.Path.GetFullPath 00:01:23 verbose #1053 > > let _locals () = $"filter: {filter} / {_locals ()}" 00:01:23 verbose #1054 > > 00:01:23 verbose #1055 > > let watcher = 00:01:23 verbose #1056 > > new System.IO.FileSystemWatcher ( 00:01:23 verbose #1057 > > Path = fullPath, 00:01:23 verbose #1058 > > NotifyFilter = filter, 00:01:23 verbose #1059 > > EnableRaisingEvents = true, 00:01:23 verbose #1060 > > IncludeSubdirectories = true 00:01:23 verbose #1061 > > ) 00:01:23 verbose #1062 > > 00:01:23 verbose #1063 > > let inline getEventPath (path : string) = 00:01:23 verbose #1064 > > path |> SpiralSm.trim |> SpiralSm.replace fullPath "" |> 00:01:23 verbose #1065 > > SpiralSm.trim_start [[| '/'; '\\' |]] 00:01:23 verbose #1066 > > 00:01:23 verbose #1067 > > let inline ticks () = 00:01:23 verbose #1068 > > System.DateTime.UtcNow.Ticks 00:01:23 verbose #1069 > > 00:01:23 verbose #1070 > > let changedStream = 00:01:23 verbose #1071 > > AsyncSeq.subscribeEvent 00:01:23 verbose #1072 > > watcher.Changed 00:01:23 verbose #1073 > > (fun event -> 00:01:23 verbose #1074 > > ticks (), 00:01:23 verbose #1075 > > [[ FileSystemChange.Changed (getEventPath event.FullPath, None) 00:01:23 verbose #1076 > > ]] 00:01:23 verbose #1077 > > ) 00:01:23 verbose #1078 > > 00:01:23 verbose #1079 > > let deletedStream = 00:01:23 verbose #1080 > > AsyncSeq.subscribeEvent 00:01:23 verbose #1081 > > watcher.Deleted 00:01:23 verbose #1082 > > (fun event -> 00:01:23 verbose #1083 > > ticks (), 00:01:23 verbose #1084 > > [[ FileSystemChange.Deleted (getEventPath event.FullPath) ]] 00:01:23 verbose #1085 > > ) 00:01:23 verbose #1086 > > 00:01:23 verbose #1087 > > let createdStream = 00:01:23 verbose #1088 > > AsyncSeq.subscribeEvent 00:01:23 verbose #1089 > > watcher.Created 00:01:23 verbose #1090 > > (fun event -> 00:01:23 verbose #1091 > > let path = getEventPath event.FullPath 00:01:23 verbose #1092 > > ticks (), [[ 00:01:23 verbose #1093 > > FileSystemChange.Created (path, None) 00:01:23 verbose #1094 > > if SpiralPlatform.is_windows () then 00:01:23 verbose #1095 > > FileSystemChange.Changed (path, None) 00:01:23 verbose #1096 > > ]]) 00:01:23 verbose #1097 > > 00:01:23 verbose #1098 > > let renamedStream = 00:01:23 verbose #1099 > > AsyncSeq.subscribeEvent 00:01:23 verbose #1100 > > watcher.Renamed 00:01:23 verbose #1101 > > (fun event -> 00:01:23 verbose #1102 > > ticks (), [[ 00:01:23 verbose #1103 > > FileSystemChange.Renamed ( 00:01:23 verbose #1104 > > getEventPath event.OldFullPath, 00:01:23 verbose #1105 > > (getEventPath event.FullPath, None) 00:01:23 verbose #1106 > > ) 00:01:23 verbose #1107 > > ]] 00:01:23 verbose #1108 > > ) 00:01:23 verbose #1109 > > 00:01:23 verbose #1110 > > let failureStream = 00:01:23 verbose #1111 > > AsyncSeq.subscribeEvent 00:01:23 verbose #1112 > > watcher.Error 00:01:23 verbose #1113 > > (fun event -> ticks (), [[ FileSystemChange.Failure 00:01:23 verbose #1114 > > (event.GetException ()) ]]) 00:01:23 verbose #1115 > > 00:01:23 verbose #1116 > > let stream = 00:01:23 verbose #1117 > > [[ 00:01:23 verbose #1118 > > changedStream 00:01:23 verbose #1119 > > deletedStream 00:01:23 verbose #1120 > > createdStream 00:01:23 verbose #1121 > > renamedStream 00:01:23 verbose #1122 > > failureStream 00:01:23 verbose #1123 > > ]] 00:01:23 verbose #1124 > > |> FSharp.Control.AsyncSeq.mergeAll 00:01:23 verbose #1125 > > |> FSharp.Control.AsyncSeq.map (fun (t, events) -> 00:01:23 verbose #1126 > > events 00:01:23 verbose #1127 > > |> List.fold 00:01:23 verbose #1128 > > (fun (i, events) event -> 00:01:23 verbose #1129 > > i + 1L, 00:01:23 verbose #1130 > > (t + i, event) :: events) 00:01:23 verbose #1131 > > (0L, [[]]) 00:01:23 verbose #1132 > > |> snd 00:01:23 verbose #1133 > > |> List.rev 00:01:23 verbose #1134 > > ) 00:01:23 verbose #1135 > > |> FSharp.Control.AsyncSeq.concatSeq 00:01:23 verbose #1136 > > |> FSharp.Control.AsyncSeq.mapAsyncParallel (fun (t, event) -> async { 00:01:23 verbose #1137 > > match shouldReadContent event, event with 00:01:23 verbose #1138 > > | true, FileSystemChange.Changed (path, _) -> 00:01:23 verbose #1139 > > do! Async.Sleep 5 00:01:23 verbose #1140 > > let! content = fullPath </> path |> 00:01:23 verbose #1141 > > SpiralFileSystem.read_all_text_retry_async 00:01:23 verbose #1142 > > return t, FileSystemChange.Changed (path, content) 00:01:23 verbose #1143 > > | true, FileSystemChange.Created (path, _) -> 00:01:23 verbose #1144 > > do! Async.Sleep 5 00:01:23 verbose #1145 > > let! content = fullPath </> path |> 00:01:23 verbose #1146 > > SpiralFileSystem.read_all_text_retry_async 00:01:23 verbose #1147 > > return t, FileSystemChange.Created (path, content) 00:01:23 verbose #1148 > > | true, FileSystemChange.Renamed (oldPath, (newPath, _)) -> 00:01:23 verbose #1149 > > let! content = fullPath </> newPath |> 00:01:23 verbose #1150 > > SpiralFileSystem.read_all_text_retry_async 00:01:23 verbose #1151 > > return t, FileSystemChange.Renamed (oldPath, (newPath, content)) 00:01:23 verbose #1152 > > | _ -> return t, event 00:01:23 verbose #1153 > > }) 00:01:23 verbose #1154 > > 00:01:23 verbose #1155 > > let disposable = 00:01:23 verbose #1156 > > new_disposable (fun () -> 00:01:23 verbose #1157 > > trace Debug (fun () -> "FileSystem.watchWithFilter / Disposing watch 00:01:23 verbose #1158 > > stream") _locals 00:01:23 verbose #1159 > > watcher.EnableRaisingEvents <- false 00:01:23 verbose #1160 > > watcher.Dispose () 00:01:23 verbose #1161 > > ) 00:01:23 verbose #1162 > > 00:01:23 verbose #1163 > > stream, disposable 00:01:23 verbose #1164 > > 00:01:23 verbose #1165 > > let inline watchDirectory path = 00:01:23 verbose #1166 > > watchDirectoryWithFilter 00:01:23 verbose #1167 > > (System.IO.NotifyFilters.FileName 00:01:23 verbose #1168 > > // ||| System.IO.NotifyFilters.DirectoryName 00:01:23 verbose #1169 > > // ||| System.IO.NotifyFilters.Attributes 00:01:23 verbose #1170 > > //// ||| System.IO.NotifyFilters.Size 00:01:23 verbose #1171 > > ||| System.IO.NotifyFilters.LastWrite 00:01:23 verbose #1172 > > //// ||| System.IO.NotifyFilters.LastAccess 00:01:23 verbose #1173 > > // ||| System.IO.NotifyFilters.CreationTime 00:01:23 verbose #1174 > > // ||| System.IO.NotifyFilters.Security 00:01:23 verbose #1175 > > ) 00:01:23 verbose #1176 > > path 00:01:23 verbose #1177 > > 00:01:23 verbose #1178 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:23 verbose #1179 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:23 verbose #1180 > > │ ### testEventsRaw (test) │ 00:01:23 verbose #1181 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:23 verbose #1182 > > 00:01:23 verbose #1183 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:23 verbose #1184 > > //// test 00:01:23 verbose #1185 > > 00:01:23 verbose #1186 > > let inline testEventsRaw 00:01:23 verbose #1187 > > (watchFn : (_ -> bool) -> string -> FSharp.Control.AsyncSeq<int64 * 00:01:23 verbose #1188 > > FileSystemChange> * IDisposable) 00:01:23 verbose #1189 > > write 00:01:23 verbose #1190 > > = 00:01:23 verbose #1191 > > let struct (tempDir, tempDisposable) = 00:01:23 verbose #1192 > > "FileSystem.testEventsRaw" 00:01:23 verbose #1193 > > |> SpiralCrypto.hash_text 00:01:23 verbose #1194 > > |> SpiralFileSystem.create_temp_dir' 00:01:23 verbose #1195 > > let stream, disposable = watchFn (fun _ -> true) tempDir 00:01:23 verbose #1196 > > 00:01:23 verbose #1197 > > let events = System.Collections.Concurrent.ConcurrentBag () 00:01:23 verbose #1198 > > 00:01:23 verbose #1199 > > let inline iter () = 00:01:23 verbose #1200 > > stream 00:01:23 verbose #1201 > > |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun event -> async { 00:01:23 verbose #1202 > > events.Add event }) 00:01:23 verbose #1203 > > 00:01:23 verbose #1204 > > let run = async { 00:01:23 verbose #1205 > > let! _ = iter () |> Async.StartChild 00:01:23 verbose #1206 > > do! Async.Sleep 250 00:01:23 verbose #1207 > > return! write tempDir 00:01:23 verbose #1208 > > } 00:01:23 verbose #1209 > > 00:01:23 verbose #1210 > > try 00:01:23 verbose #1211 > > run 00:01:23 verbose #1212 > > |> Async.runWithTimeout 60000 00:01:23 verbose #1213 > > |> _assertEqual (Some ()) 00:01:23 verbose #1214 > > finally 00:01:23 verbose #1215 > > disposable.Dispose () 00:01:23 verbose #1216 > > tempDisposable.Dispose () 00:01:23 verbose #1217 > > 00:01:23 verbose #1218 > > let eventsLog = 00:01:23 verbose #1219 > > events 00:01:23 verbose #1220 > > |> Seq.toList 00:01:23 verbose #1221 > > |> List.sortBy fst 00:01:23 verbose #1222 > > |> List.fold 00:01:23 verbose #1223 > > (fun (prev, acc) (ticks, event) -> 00:01:23 verbose #1224 > > ticks, (ticks, (if prev = 0L then 0L else ticks - prev), event) 00:01:23 verbose #1225 > > :: acc 00:01:23 verbose #1226 > > ) 00:01:23 verbose #1227 > > (0L, [[]]) 00:01:23 verbose #1228 > > |> snd 00:01:23 verbose #1229 > > |> List.rev 00:01:23 verbose #1230 > > |> List.map (fun (diff, n, event) -> $"{n} / {diff} / {event}" |> 00:01:23 verbose #1231 > > SpiralSm.ellipsis_end 100L) 00:01:23 verbose #1232 > > |> SpiralSm.concat "\n" 00:01:23 verbose #1233 > > let _locals () = $"eventsLog: \n{eventsLog} / {_locals ()}" 00:01:23 verbose #1234 > > trace Debug (fun () -> "FileSystem.testEventsRaw") _locals 00:01:23 verbose #1235 > > 00:01:23 verbose #1236 > > events 00:01:23 verbose #1237 > > |> Seq.toList 00:01:23 verbose #1238 > > |> List.sortBy fst 00:01:23 verbose #1239 > > |> List.map snd 00:01:23 verbose #1240 > > |> List.fold 00:01:23 verbose #1241 > > (fun acc event -> 00:01:23 verbose #1242 > > match acc, event with 00:01:23 verbose #1243 > > | FileSystemChange.Changed (lastPath, Some lastContent) as lastEvent 00:01:23 verbose #1244 > > :: acc, 00:01:23 verbose #1245 > > FileSystemChange.Changed (path, Some content) 00:01:23 verbose #1246 > > when lastPath = path && content |> SpiralSm.starts_with 00:01:23 verbose #1247 > > lastContent 00:01:23 verbose #1248 > > -> 00:01:23 verbose #1249 > > event :: acc 00:01:23 verbose #1250 > > | _ -> event :: acc 00:01:23 verbose #1251 > > ) 00:01:23 verbose #1252 > > [[]] 00:01:23 verbose #1253 > > |> List.rev 00:01:23 verbose #1254 > > 00:01:23 verbose #1255 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:23 verbose #1256 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:23 verbose #1257 > > │ #### fast (test) │ 00:01:23 verbose #1258 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:23 verbose #1259 > > 00:01:23 verbose #1260 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:23 verbose #1261 > > //// test 00:01:23 verbose #1262 > > 00:01:23 verbose #1263 > > let inline write path = async { 00:01:23 verbose #1264 > > let n = 2 00:01:23 verbose #1265 > > 00:01:23 verbose #1266 > > for i = 1 to n do 00:01:23 verbose #1267 > > do! $"a{i}" |> SpiralFileSystem.write_all_text_async (path </> 00:01:23 verbose #1268 > > $"file{i}.txt") 00:01:23 verbose #1269 > > 00:01:23 verbose #1270 > > do! Async.Sleep 250 00:01:23 verbose #1271 > > 00:01:23 verbose #1272 > > for i = 1 to n do 00:01:23 verbose #1273 > > do! $"b{i}" |> SpiralFileSystem.write_all_text_async (path </> 00:01:23 verbose #1274 > > $"file{i}.txt") 00:01:23 verbose #1275 > > 00:01:23 verbose #1276 > > do! Async.Sleep 250 00:01:23 verbose #1277 > > 00:01:23 verbose #1278 > > for i = 1 to n do 00:01:23 verbose #1279 > > do! path </> $"file{i}.txt" |> SpiralFileSystem.move_file_async (path 00:01:23 verbose #1280 > > </> $"file_{i}.txt") |> Async.Ignore 00:01:23 verbose #1281 > > 00:01:23 verbose #1282 > > do! Async.Sleep 250 00:01:23 verbose #1283 > > 00:01:23 verbose #1284 > > for i = 1 to n do 00:01:23 verbose #1285 > > do! $"c{i}" |> SpiralFileSystem.write_all_text_async (path </> 00:01:23 verbose #1286 > > $"file_{i}.txt") 00:01:23 verbose #1287 > > 00:01:23 verbose #1288 > > do! Async.Sleep 250 00:01:23 verbose #1289 > > 00:01:23 verbose #1290 > > for i = 1 to n do 00:01:23 verbose #1291 > > do! SpiralFileSystem.delete_file_async (path </> $"file_{i}.txt") |> 00:01:23 verbose #1292 > > Async.Ignore 00:01:23 verbose #1293 > > 00:01:23 verbose #1294 > > do! Async.Sleep 250 00:01:23 verbose #1295 > > } 00:01:23 verbose #1296 > > 00:01:23 verbose #1297 > > let inline run () = 00:01:23 verbose #1298 > > let events = testEventsRaw watchDirectory write 00:01:23 verbose #1299 > > 00:01:23 verbose #1300 > > events 00:01:23 verbose #1301 > > |> _sequenceEqual [[ 00:01:23 verbose #1302 > > FileSystemChange.Created ("file1.txt", Some "a1") 00:01:23 verbose #1303 > > FileSystemChange.Changed ("file1.txt", Some "a1") 00:01:23 verbose #1304 > > FileSystemChange.Created ("file2.txt", Some "a2") 00:01:23 verbose #1305 > > FileSystemChange.Changed ("file2.txt", Some "a2") 00:01:23 verbose #1306 > > 00:01:23 verbose #1307 > > FileSystemChange.Changed ("file1.txt", Some "b1") 00:01:23 verbose #1308 > > FileSystemChange.Changed ("file2.txt", Some "b2") 00:01:23 verbose #1309 > > 00:01:23 verbose #1310 > > FileSystemChange.Renamed ("file1.txt", ("file_1.txt", Some "b1")) 00:01:23 verbose #1311 > > FileSystemChange.Renamed ("file2.txt", ("file_2.txt", Some "b2")) 00:01:23 verbose #1312 > > 00:01:23 verbose #1313 > > FileSystemChange.Changed ("file_1.txt", Some "c1") 00:01:23 verbose #1314 > > FileSystemChange.Changed ("file_2.txt", Some "c2") 00:01:23 verbose #1315 > > 00:01:23 verbose #1316 > > FileSystemChange.Deleted "file_1.txt" 00:01:23 verbose #1317 > > FileSystemChange.Deleted "file_2.txt" 00:01:23 verbose #1318 > > ]] 00:01:23 verbose #1319 > > 00:01:23 verbose #1320 > > run 00:01:23 verbose #1321 > > |> retry_fn 3 00:01:23 verbose #1322 > > |> _assertEqual (Some ()) 00:01:25 verbose #1323 > > 00:01:25 verbose #1324 > > ╭─[ 2.35s - stdout ]───────────────────────────────────────────────────────────╮ 00:01:25 verbose #1325 > > │ Some () │ 00:01:25 verbose #1326 > > │ │ 00:01:25 verbose #1327 > > │ 00:00:03 debug #1 FileSystem.watchWithFilter / Disposing watch stream │ 00:01:25 verbose #1328 > > │ / filter: FileName, LastWrite │ 00:01:25 verbose #1329 > > │ 00:00:03 debug #2 FileSystem.testEventsRaw / eventsLog: │ 00:01:25 verbose #1330 > > │ 0 / 638612294332230399 / Created ("file1.txt", Some "a1") │ 00:01:25 verbose #1331 > > │ 12571 / 638612294332242970 / Changed ("file1.txt", Some "a1") │ 00:01:25 verbose #1332 > > │ 2164 / 638612294332245134 / Created ("file2.txt", Some "a2") │ 00:01:25 verbose #1333 > > │ 48 / 638612294332245182 / Changed ("file2.txt", Some "a2") │ 00:01:25 verbose #1334 > > │ 2484465 / 638612294334729647 / Changed ("file1.txt", Some "b1") │ 00:01:25 verbose #1335 > > │ 602 / 638612294334730249 / Changed ("file1.txt", Some "b1") │ 00:01:25 verbose #1336 > > │ 4559 / 638612294334734808 / Changed ("file2.txt", Some "b2") │ 00:01:25 verbose #1337 > > │ 213 / 638612294334735021 / Changed ("file2.txt", Some "b2") │ 00:01:25 verbose #1338 > > │ 2554524 / 638612294337289545 / Renamed ("file1.txt", ("file_1.txt", Some │ 00:01:25 verbose #1339 > > │ "b1")) │ 00:01:25 verbose #1340 > > │ 5669 / 638612294337295214 / Renamed ("file2.txt", ("file_2.txt", Some "b2")) │ 00:01:25 verbose #1341 > > │ 2528134 / 638612294339823348 / Changed ("file_1.txt", Some "c1") │ 00:01:25 verbose #1342 > > │ 808 / 638612294339824156 / Changed ("file_1.txt", Some "c1") │ 00:01:25 verbose #1343 > > │ 3764 / 638612294339827920 / Changed ("file_2.txt", Some "c2") │ 00:01:25 verbose #1344 > > │ 337 / 638612294339828257 / Changed ("file_2.txt", Some "c2") │ 00:01:25 verbose #1345 > > │ 2551734 / 638612294342379991 / Deleted "file_1.txt" │ 00:01:25 verbose #1346 > > │ 1511 / 638612294342381502 / Deleted "file_2.txt" │ 00:01:25 verbose #1347 > > │ [Created ("file1.txt", Some "a1"); Changed ("file1.txt", Some "a1"); Created │ 00:01:25 verbose #1348 > > │ ("file2.txt", Some "a2"); │ 00:01:25 verbose #1349 > > │ Changed ("file2.txt", Some "a2"); Changed ("file1.txt", Some "b1"); Changed │ 00:01:25 verbose #1350 > > │ ("file2.txt", Some "b2"); │ 00:01:25 verbose #1351 > > │ Renamed ("file1.txt", ("file_1.txt", Some "b1")); Renamed ("file2.txt", │ 00:01:25 verbose #1352 > > │ ("file_2.txt", Some "b2")); │ 00:01:25 verbose #1353 > > │ Changed ("file_1.txt", Some "c1"); Changed ("file_2.txt", Some "c2"); │ 00:01:25 verbose #1354 > > │ Deleted "file_1.txt"; Deleted "file_2.txt"] │ 00:01:25 verbose #1355 > > │ │ 00:01:25 verbose #1356 > > │ Some () │ 00:01:25 verbose #1357 > > │ │ 00:01:25 verbose #1358 > > │ │ 00:01:25 verbose #1359 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:25 verbose #1360 > > 00:01:25 verbose #1361 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:25 verbose #1362 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:25 verbose #1363 > > │ #### slow (test) │ 00:01:25 verbose #1364 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:25 verbose #1365 > > 00:01:25 verbose #1366 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:25 verbose #1367 > > //// test 00:01:25 verbose #1368 > > 00:01:25 verbose #1369 > > let inline write path = async { 00:01:25 verbose #1370 > > let n = 2 00:01:25 verbose #1371 > > 00:01:25 verbose #1372 > > let contents = 00:01:25 verbose #1373 > > [[ 1 .. n ]] 00:01:25 verbose #1374 > > |> List.map (string >> String.replicate 1_000_000) 00:01:25 verbose #1375 > > 00:01:25 verbose #1376 > > for i = 1 to n do 00:01:25 verbose #1377 > > do! $"{contents.[[i - 1]]}a" |> SpiralFileSystem.write_all_text_async 00:01:25 verbose #1378 > > (path </> $"file{i}.txt") 00:01:25 verbose #1379 > > 00:01:25 verbose #1380 > > do! Async.Sleep 1500 00:01:25 verbose #1381 > > 00:01:25 verbose #1382 > > for i = 1 to n do 00:01:25 verbose #1383 > > do! $"{contents.[[i - 1]]}b" |> SpiralFileSystem.write_all_text_async 00:01:25 verbose #1384 > > (path </> $"file{i}.txt") 00:01:25 verbose #1385 > > 00:01:25 verbose #1386 > > do! Async.Sleep 1500 00:01:25 verbose #1387 > > 00:01:25 verbose #1388 > > for i = 1 to n do 00:01:25 verbose #1389 > > do! path </> $"file{i}.txt" |> SpiralFileSystem.move_file_async (path 00:01:25 verbose #1390 > > </> $"file_{i}.txt") |> Async.Ignore 00:01:25 verbose #1391 > > 00:01:25 verbose #1392 > > do! Async.Sleep 1500 00:01:25 verbose #1393 > > 00:01:25 verbose #1394 > > for i = 1 to n do 00:01:25 verbose #1395 > > do! $"{contents.[[i - 1]]}c" |> SpiralFileSystem.write_all_text_async 00:01:25 verbose #1396 > > (path </> $"file_{i}.txt") 00:01:25 verbose #1397 > > 00:01:25 verbose #1398 > > do! Async.Sleep 1500 00:01:25 verbose #1399 > > 00:01:25 verbose #1400 > > for i = 1 to n do 00:01:25 verbose #1401 > > do! SpiralFileSystem.delete_file_async (path </> $"file_{i}.txt") |> 00:01:25 verbose #1402 > > Async.Ignore 00:01:25 verbose #1403 > > 00:01:25 verbose #1404 > > do! Async.Sleep 1500 00:01:25 verbose #1405 > > } 00:01:25 verbose #1406 > > 00:01:25 verbose #1407 > > let inline run () = 00:01:25 verbose #1408 > > let events = 00:01:25 verbose #1409 > > testEventsRaw watchDirectory write 00:01:25 verbose #1410 > > |> List.map (function 00:01:25 verbose #1411 > > | FileSystemChange.Changed (path, Some content) -> 00:01:25 verbose #1412 > > FileSystemChange.Changed (path, content |> Seq.distinct |> 00:01:25 verbose #1413 > > Seq.map string |> SpiralSm.concat "" |> Some) 00:01:25 verbose #1414 > > | FileSystemChange.Created (path, Some content) -> 00:01:25 verbose #1415 > > FileSystemChange.Created (path, content |> Seq.distinct |> 00:01:25 verbose #1416 > > Seq.map string |> SpiralSm.concat "" |> Some) 00:01:25 verbose #1417 > > | FileSystemChange.Renamed (oldPath, (newPath, Some content)) -> 00:01:25 verbose #1418 > > FileSystemChange.Renamed ( 00:01:25 verbose #1419 > > oldPath, 00:01:25 verbose #1420 > > (newPath, content |> Seq.distinct |> Seq.map string |> 00:01:25 verbose #1421 > > SpiralSm.concat "" |> Some) 00:01:25 verbose #1422 > > ) 00:01:25 verbose #1423 > > | event -> event 00:01:25 verbose #1424 > > ) 00:01:25 verbose #1425 > > 00:01:25 verbose #1426 > > events 00:01:25 verbose #1427 > > |> _sequenceEqual [[ 00:01:25 verbose #1428 > > FileSystemChange.Created ("file1.txt", Some "1a") 00:01:25 verbose #1429 > > FileSystemChange.Changed ("file1.txt", Some "1a") 00:01:25 verbose #1430 > > FileSystemChange.Created ("file2.txt", Some "2a") 00:01:25 verbose #1431 > > FileSystemChange.Changed ("file2.txt", Some "2a") 00:01:25 verbose #1432 > > 00:01:25 verbose #1433 > > FileSystemChange.Changed ("file1.txt", Some "1b") 00:01:25 verbose #1434 > > FileSystemChange.Changed ("file2.txt", Some "2b") 00:01:25 verbose #1435 > > 00:01:25 verbose #1436 > > FileSystemChange.Renamed ("file1.txt", ("file_1.txt", Some "1b")) 00:01:25 verbose #1437 > > FileSystemChange.Renamed ("file2.txt", ("file_2.txt", Some "2b")) 00:01:25 verbose #1438 > > 00:01:25 verbose #1439 > > FileSystemChange.Changed ("file_1.txt", Some "1c") 00:01:25 verbose #1440 > > FileSystemChange.Changed ("file_2.txt", Some "2c") 00:01:25 verbose #1441 > > 00:01:25 verbose #1442 > > FileSystemChange.Deleted "file_1.txt" 00:01:25 verbose #1443 > > FileSystemChange.Deleted "file_2.txt" 00:01:25 verbose #1444 > > ]] 00:01:25 verbose #1445 > > 00:01:25 verbose #1446 > > run 00:01:25 verbose #1447 > > |> retry_fn 5 00:01:25 verbose #1448 > > |> _assertEqual (Some ()) 00:01:38 verbose #1449 > > 00:01:38 verbose #1450 > > ╭─[ 12.69s - stdout ]──────────────────────────────────────────────────────────╮ 00:01:38 verbose #1451 > > │ Some () │ 00:01:38 verbose #1452 > > │ │ 00:01:38 verbose #1453 > > │ 00:00:12 debug #3 FileSystem.watchWithFilter / Disposing watch stream │ 00:01:38 verbose #1454 > > │ / filter: FileName, LastWrite │ 00:01:38 verbose #1455 > > │ 00:00:15 debug #4 FileSystem.testEventsRaw / eventsLog: │ 00:01:38 verbose #1456 > > │ 0 / 638612294356851226 / Created │ 00:01:38 verbose #1457 > > │ ("file1.txt", │ 00:01:38 verbose #1458 > > │ ...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1459 > > │ 3019 / 638612294356854245 / Changed │ 00:01:38 verbose #1460 > > │ ("file1.txt"...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1461 > > │ 409 / 638612294356854654 / Changed │ 00:01:38 verbose #1462 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1463 > > │ 89 / 638612294356854743 / Changed │ 00:01:38 verbose #1464 > > │ ("file1.txt", │ 00:01:38 verbose #1465 > > │ ...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1466 > > │ 374 / 638612294356855117 / Changed │ 00:01:38 verbose #1467 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1468 > > │ 374 / 638612294356855491 / Changed │ 00:01:38 verbose #1469 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1470 > > │ 100 / 638612294356855591 / Changed │ 00:01:38 verbose #1471 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1472 > > │ 214 / 638612294356855805 / Changed │ 00:01:38 verbose #1473 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1474 > > │ 66 / 638612294356855871 / Changed │ 00:01:38 verbose #1475 > > │ ("file1.txt", │ 00:01:38 verbose #1476 > > │ ...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1477 > > │ 215 / 638612294356856086 / Changed │ 00:01:38 verbose #1478 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1479 > > │ 79 / 638612294356856165 / Changed │ 00:01:38 verbose #1480 > > │ ("file1.txt", │ 00:01:38 verbose #1481 > > │ ...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1482 > > │ 219 / 638612294356856384 / Changed │ 00:01:38 verbose #1483 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1484 > > │ 105 / 638612294356856489 / Changed │ 00:01:38 verbose #1485 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1486 > > │ 279 / 638612294356856768 / Changed │ 00:01:38 verbose #1487 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1488 > > │ 202 / 638612294356856970 / Changed │ 00:01:38 verbose #1489 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1490 > > │ 90 / 638612294356857060 / Changed │ 00:01:38 verbose #1491 > > │ ("file1.txt", │ 00:01:38 verbose #1492 > > │ ...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1493 > > │ 191 / 638612294356857251 / Changed │ 00:01:38 verbose #1494 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1495 > > │ 195 / 638612294356857446 / Changed │ 00:01:38 verbose #1496 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1497 > > │ 108 / 638612294356857554 / Changed │ 00:01:38 verbose #1498 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1499 > > │ 354 / 638612294356857908 / Changed │ 00:01:38 verbose #1500 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1501 > > │ 65 / 638612294356857973 / Changed │ 00:01:38 verbose #1502 > > │ ("file1.txt", │ 00:01:38 verbose #1503 > > │ ...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1504 > > │ 170 / 638612294356858143 / Changed │ 00:01:38 verbose #1505 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1506 > > │ 238 / 638612294356858381 / Changed │ 00:01:38 verbose #1507 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1508 > > │ 170 / 638612294356858551 / Changed │ 00:01:38 verbose #1509 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1510 > > │ 137 / 638612294356858688 / Changed │ 00:01:38 verbose #1511 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1512 > > │ 199 / 638612294356858887 / Changed │ 00:01:38 verbose #1513 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1514 > > │ 48 / 638612294356858935 / Changed │ 00:01:38 verbose #1515 > > │ ("file1.txt", │ 00:01:38 verbose #1516 > > │ ...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1517 > > │ 217 / 638612294356859152 / Changed │ 00:01:38 verbose #1518 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1519 > > │ 60 / 638612294356859212 / Changed │ 00:01:38 verbose #1520 > > │ ("file1.txt", │ 00:01:38 verbose #1521 > > │ ...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1522 > > │ 180 / 638612294356859392 / Changed │ 00:01:38 verbose #1523 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1524 > > │ 73 / 638612294356859465 / Changed │ 00:01:38 verbose #1525 > > │ ("file1.txt", │ 00:01:38 verbose #1526 > > │ ...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1527 > > │ 216 / 638612294356859681 / Changed │ 00:01:38 verbose #1528 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1529 > > │ 61 / 638612294356859742 / Changed │ 00:01:38 verbose #1530 > > │ ("file1.txt", │ 00:01:38 verbose #1531 > > │ ...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1532 > > │ 324 / 638612294356860066 / Changed │ 00:01:38 verbose #1533 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1534 > > │ 99 / 638612294356860165 / Changed │ 00:01:38 verbose #1535 > > │ ("file1.txt", │ 00:01:38 verbose #1536 > > │ ...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1537 > > │ 220 / 638612294356860385 / Changed │ 00:01:38 verbose #1538 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1539 > > │ 60 / 638612294356860445 / Changed │ 00:01:38 verbose #1540 > > │ ("file1.txt", │ 00:01:38 verbose #1541 > > │ ...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1542 > > │ 285 / 638612294356860730 / Changed │ 00:01:38 verbose #1543 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1544 > > │ 69 / 638612294356860799 / Changed │ 00:01:38 verbose #1545 > > │ ("file1.txt", │ 00:01:38 verbose #1546 > > │ ...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1547 > > │ 46 / 638612294356860845 / Changed │ 00:01:38 verbose #1548 > > │ ("file1.txt", │ 00:01:38 verbose #1549 > > │ ...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1550 > > │ 316 / 638612294356861161 / Changed │ 00:01:38 verbose #1551 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1552 > > │ 76 / 638612294356861237 / Changed │ 00:01:38 verbose #1553 > > │ ("file1.txt", │ 00:01:38 verbose #1554 > > │ ...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1555 > > │ 251 / 638612294356861488 / Changed │ 00:01:38 verbose #1556 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1557 > > │ 69 / 638612294356861557 / Changed │ 00:01:38 verbose #1558 > > │ ("file1.txt", │ 00:01:38 verbose #1559 > > │ ...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1560 > > │ 6830 / 638612294356868387 / Changed │ 00:01:38 verbose #1561 > > │ ("file1.txt"...11111111111111111111111111111111111111111111111a") │ 00:01:38 verbose #1562 > > │ 26446 / 638612294356894833 / Created │ 00:01:38 verbose #1563 > > │ ("file2.txt...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1564 > > │ 569 / 638612294356895402 / Changed │ 00:01:38 verbose #1565 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1566 > > │ 480 / 638612294356895882 / Changed │ 00:01:38 verbose #1567 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1568 > > │ 616 / 638612294356896498 / Changed │ 00:01:38 verbose #1569 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1570 > > │ 116 / 638612294356896614 / Changed │ 00:01:38 verbose #1571 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1572 > > │ 277 / 638612294356896891 / Changed │ 00:01:38 verbose #1573 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1574 > > │ 221 / 638612294356897112 / Changed │ 00:01:38 verbose #1575 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1576 > > │ 248 / 638612294356897360 / Changed │ 00:01:38 verbose #1577 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1578 > > │ 153 / 638612294356897513 / Changed │ 00:01:38 verbose #1579 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1580 > > │ 223 / 638612294356897736 / Changed │ 00:01:38 verbose #1581 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1582 > > │ 140 / 638612294356897876 / Changed │ 00:01:38 verbose #1583 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1584 > > │ 225 / 638612294356898101 / Changed │ 00:01:38 verbose #1585 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1586 > > │ 173 / 638612294356898274 / Changed │ 00:01:38 verbose #1587 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1588 > > │ 167 / 638612294356898441 / Changed │ 00:01:38 verbose #1589 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1590 > > │ 161 / 638612294356898602 / Changed │ 00:01:38 verbose #1591 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1592 > > │ 556 / 638612294356899158 / Changed │ 00:01:38 verbose #1593 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1594 > > │ 63 / 638612294356899221 / Changed │ 00:01:38 verbose #1595 > > │ ("file2.txt", │ 00:01:38 verbose #1596 > > │ ...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1597 > > │ 277 / 638612294356899498 / Changed │ 00:01:38 verbose #1598 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1599 > > │ 154 / 638612294356899652 / Changed │ 00:01:38 verbose #1600 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1601 > > │ 215 / 638612294356899867 / Changed │ 00:01:38 verbose #1602 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1603 > > │ 57 / 638612294356899924 / Changed │ 00:01:38 verbose #1604 > > │ ("file2.txt", │ 00:01:38 verbose #1605 > > │ ...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1606 > > │ 768 / 638612294356900692 / Changed │ 00:01:38 verbose #1607 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1608 > > │ 88 / 638612294356900780 / Changed │ 00:01:38 verbose #1609 > > │ ("file2.txt", │ 00:01:38 verbose #1610 > > │ ...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1611 > > │ 217 / 638612294356900997 / Changed │ 00:01:38 verbose #1612 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1613 > > │ 139 / 638612294356901136 / Changed │ 00:01:38 verbose #1614 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1615 > > │ 168 / 638612294356901304 / Changed │ 00:01:38 verbose #1616 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1617 > > │ 988 / 638612294356902292 / Changed │ 00:01:38 verbose #1618 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1619 > > │ 71 / 638612294356902363 / Changed │ 00:01:38 verbose #1620 > > │ ("file2.txt", │ 00:01:38 verbose #1621 > > │ ...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1622 > > │ 219 / 638612294356902582 / Changed │ 00:01:38 verbose #1623 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1624 > > │ 134 / 638612294356902716 / Changed │ 00:01:38 verbose #1625 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1626 > > │ 190 / 638612294356902906 / Changed │ 00:01:38 verbose #1627 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1628 > > │ 161 / 638612294356903067 / Changed │ 00:01:38 verbose #1629 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1630 > > │ 161 / 638612294356903228 / Changed │ 00:01:38 verbose #1631 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1632 > > │ 157 / 638612294356903385 / Changed │ 00:01:38 verbose #1633 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1634 > > │ 179 / 638612294356903564 / Changed │ 00:01:38 verbose #1635 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1636 > > │ 178 / 638612294356903742 / Changed │ 00:01:38 verbose #1637 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1638 > > │ 153 / 638612294356903895 / Changed │ 00:01:38 verbose #1639 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1640 > > │ 201 / 638612294356904096 / Changed │ 00:01:38 verbose #1641 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1642 > > │ 144 / 638612294356904240 / Changed │ 00:01:38 verbose #1643 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1644 > > │ 159 / 638612294356904399 / Changed │ 00:01:38 verbose #1645 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1646 > > │ 190 / 638612294356904589 / Changed │ 00:01:38 verbose #1647 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1648 > > │ 153 / 638612294356904742 / Changed │ 00:01:38 verbose #1649 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1650 > > │ 159 / 638612294356904901 / Changed │ 00:01:38 verbose #1651 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1652 > > │ 170 / 638612294356905071 / Changed │ 00:01:38 verbose #1653 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1654 > > │ 185 / 638612294356905256 / Changed │ 00:01:38 verbose #1655 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1656 > > │ 194 / 638612294356905450 / Changed │ 00:01:38 verbose #1657 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1658 > > │ 160 / 638612294356905610 / Changed │ 00:01:38 verbose #1659 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1660 > > │ 174 / 638612294356905784 / Changed │ 00:01:38 verbose #1661 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1662 > > │ 155 / 638612294356905939 / Changed │ 00:01:38 verbose #1663 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1664 > > │ 284 / 638612294356906223 / Changed │ 00:01:38 verbose #1665 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1666 > > │ 233 / 638612294356906456 / Changed │ 00:01:38 verbose #1667 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1668 > > │ 153 / 638612294356906609 / Changed │ 00:01:38 verbose #1669 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1670 > > │ 168 / 638612294356906777 / Changed │ 00:01:38 verbose #1671 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1672 > > │ 163 / 638612294356906940 / Changed │ 00:01:38 verbose #1673 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1674 > > │ 253 / 638612294356907193 / Changed │ 00:01:38 verbose #1675 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1676 > > │ 222 / 638612294356907415 / Changed │ 00:01:38 verbose #1677 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1678 > > │ 177 / 638612294356907592 / Changed │ 00:01:38 verbose #1679 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1680 > > │ 209 / 638612294356907801 / Changed │ 00:01:38 verbose #1681 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1682 > > │ 146 / 638612294356907947 / Changed │ 00:01:38 verbose #1683 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1684 > > │ 147 / 638612294356908094 / Changed │ 00:01:38 verbose #1685 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1686 > > │ 154 / 638612294356908248 / Changed │ 00:01:38 verbose #1687 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1688 > > │ 165 / 638612294356908413 / Changed │ 00:01:38 verbose #1689 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1690 > > │ 173 / 638612294356908586 / Changed │ 00:01:38 verbose #1691 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1692 > > │ 176 / 638612294356908762 / Changed │ 00:01:38 verbose #1693 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1694 > > │ 178 / 638612294356908940 / Changed │ 00:01:38 verbose #1695 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1696 > > │ 208 / 638612294356909148 / Changed │ 00:01:38 verbose #1697 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1698 > > │ 139 / 638612294356909287 / Changed │ 00:01:38 verbose #1699 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1700 > > │ 263 / 638612294356909550 / Changed │ 00:01:38 verbose #1701 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1702 > > │ 178 / 638612294356909728 / Changed │ 00:01:38 verbose #1703 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1704 > > │ 285 / 638612294356910013 / Changed │ 00:01:38 verbose #1705 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1706 > > │ 56 / 638612294356910069 / Changed │ 00:01:38 verbose #1707 > > │ ("file2.txt", │ 00:01:38 verbose #1708 > > │ ...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1709 > > │ 148 / 638612294356910217 / Changed │ 00:01:38 verbose #1710 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1711 > > │ 166 / 638612294356910383 / Changed │ 00:01:38 verbose #1712 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1713 > > │ 170 / 638612294356910553 / Changed │ 00:01:38 verbose #1714 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1715 > > │ 172 / 638612294356910725 / Changed │ 00:01:38 verbose #1716 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1717 > > │ 160 / 638612294356910885 / Changed │ 00:01:38 verbose #1718 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1719 > > │ 215 / 638612294356911100 / Changed │ 00:01:38 verbose #1720 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1721 > > │ 714 / 638612294356911814 / Changed │ 00:01:38 verbose #1722 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1723 > > │ 304 / 638612294356912118 / Changed │ 00:01:38 verbose #1724 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1725 > > │ 196 / 638612294356912314 / Changed │ 00:01:38 verbose #1726 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1727 > > │ 142 / 638612294356912456 / Changed │ 00:01:38 verbose #1728 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1729 > > │ 195 / 638612294356912651 / Changed │ 00:01:38 verbose #1730 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1731 > > │ 864 / 638612294356913515 / Changed │ 00:01:38 verbose #1732 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1733 > > │ 104 / 638612294356913619 / Changed │ 00:01:38 verbose #1734 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1735 > > │ 218 / 638612294356913837 / Changed │ 00:01:38 verbose #1736 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1737 > > │ 137 / 638612294356913974 / Changed │ 00:01:38 verbose #1738 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1739 > > │ 155 / 638612294356914129 / Changed │ 00:01:38 verbose #1740 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1741 > > │ 248 / 638612294356914377 / Changed │ 00:01:38 verbose #1742 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1743 > > │ 197 / 638612294356914574 / Changed │ 00:01:38 verbose #1744 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1745 > > │ 169 / 638612294356914743 / Changed │ 00:01:38 verbose #1746 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1747 > > │ 198 / 638612294356914941 / Changed │ 00:01:38 verbose #1748 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1749 > > │ 239 / 638612294356915180 / Changed │ 00:01:38 verbose #1750 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1751 > > │ 305 / 638612294356915485 / Changed │ 00:01:38 verbose #1752 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1753 > > │ 63 / 638612294356915548 / Changed │ 00:01:38 verbose #1754 > > │ ("file2.txt", │ 00:01:38 verbose #1755 > > │ ...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1756 > > │ 212 / 638612294356915760 / Changed │ 00:01:38 verbose #1757 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1758 > > │ 228 / 638612294356915988 / Changed │ 00:01:38 verbose #1759 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1760 > > │ 172 / 638612294356916160 / Changed │ 00:01:38 verbose #1761 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1762 > > │ 133 / 638612294356916293 / Changed │ 00:01:38 verbose #1763 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1764 > > │ 1154 / 638612294356917447 / Changed │ 00:01:38 verbose #1765 > > │ ("file2.txt"...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1766 > > │ 99 / 638612294356917546 / Changed │ 00:01:38 verbose #1767 > > │ ("file2.txt", │ 00:01:38 verbose #1768 > > │ ...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1769 > > │ 150 / 638612294356917696 / Changed │ 00:01:38 verbose #1770 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1771 > > │ 144 / 638612294356917840 / Changed │ 00:01:38 verbose #1772 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1773 > > │ 166 / 638612294356918006 / Changed │ 00:01:38 verbose #1774 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1775 > > │ 119 / 638612294356918125 / Changed │ 00:01:38 verbose #1776 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222a") │ 00:01:38 verbose #1777 > > │ 15065141 / 638612294371983266 / Changed │ 00:01:38 verbose #1778 > > │ ("file1....11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1779 > > │ 2348 / 638612294371985614 / Changed │ 00:01:38 verbose #1780 > > │ ("file1.txt"...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1781 > > │ 122 / 638612294371985736 / Changed │ 00:01:38 verbose #1782 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1783 > > │ 248 / 638612294371985984 / Changed │ 00:01:38 verbose #1784 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1785 > > │ 59 / 638612294371986043 / Changed │ 00:01:38 verbose #1786 > > │ ("file1.txt", │ 00:01:38 verbose #1787 > > │ ...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1788 > > │ 312 / 638612294371986355 / Changed │ 00:01:38 verbose #1789 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1790 > > │ 664 / 638612294371987019 / Changed │ 00:01:38 verbose #1791 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1792 > > │ 118 / 638612294371987137 / Changed │ 00:01:38 verbose #1793 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1794 > > │ 277 / 638612294371987414 / Changed │ 00:01:38 verbose #1795 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1796 > > │ 238 / 638612294371987652 / Changed │ 00:01:38 verbose #1797 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1798 > > │ 54 / 638612294371987706 / Changed │ 00:01:38 verbose #1799 > > │ ("file1.txt", │ 00:01:38 verbose #1800 > > │ ...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1801 > > │ 182 / 638612294371987888 / Changed │ 00:01:38 verbose #1802 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1803 > > │ 170 / 638612294371988058 / Changed │ 00:01:38 verbose #1804 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1805 > > │ 273 / 638612294371988331 / Changed │ 00:01:38 verbose #1806 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1807 > > │ 183 / 638612294371988514 / Changed │ 00:01:38 verbose #1808 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1809 > > │ 158 / 638612294371988672 / Changed │ 00:01:38 verbose #1810 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1811 > > │ 160 / 638612294371988832 / Changed │ 00:01:38 verbose #1812 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1813 > > │ 150 / 638612294371988982 / Changed │ 00:01:38 verbose #1814 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1815 > > │ 168 / 638612294371989150 / Changed │ 00:01:38 verbose #1816 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1817 > > │ 171 / 638612294371989321 / Changed │ 00:01:38 verbose #1818 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1819 > > │ 156 / 638612294371989477 / Changed │ 00:01:38 verbose #1820 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1821 > > │ 152 / 638612294371989629 / Changed │ 00:01:38 verbose #1822 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1823 > > │ 1607 / 638612294371991236 / Changed │ 00:01:38 verbose #1824 > > │ ("file1.txt"...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1825 > > │ 104 / 638612294371991340 / Changed │ 00:01:38 verbose #1826 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1827 > > │ 199 / 638612294371991539 / Changed │ 00:01:38 verbose #1828 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1829 > > │ 194 / 638612294371991733 / Changed │ 00:01:38 verbose #1830 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1831 > > │ 1161 / 638612294371992894 / Changed │ 00:01:38 verbose #1832 > > │ ("file1.txt"...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1833 > > │ 144 / 638612294371993038 / Changed │ 00:01:38 verbose #1834 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1835 > > │ 167 / 638612294371993205 / Changed │ 00:01:38 verbose #1836 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1837 > > │ 201 / 638612294371993406 / Changed │ 00:01:38 verbose #1838 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1839 > > │ 131 / 638612294371993537 / Changed │ 00:01:38 verbose #1840 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1841 > > │ 154 / 638612294371993691 / Changed │ 00:01:38 verbose #1842 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1843 > > │ 157 / 638612294371993848 / Changed │ 00:01:38 verbose #1844 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1845 > > │ 188 / 638612294371994036 / Changed │ 00:01:38 verbose #1846 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1847 > > │ 721 / 638612294371994757 / Changed │ 00:01:38 verbose #1848 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1849 > > │ 129 / 638612294371994886 / Changed │ 00:01:38 verbose #1850 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1851 > > │ 195 / 638612294371995081 / Changed │ 00:01:38 verbose #1852 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1853 > > │ 162 / 638612294371995243 / Changed │ 00:01:38 verbose #1854 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1855 > > │ 175 / 638612294371995418 / Changed │ 00:01:38 verbose #1856 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1857 > > │ 173 / 638612294371995591 / Changed │ 00:01:38 verbose #1858 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1859 > > │ 163 / 638612294371995754 / Changed │ 00:01:38 verbose #1860 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1861 > > │ 688 / 638612294371996442 / Changed │ 00:01:38 verbose #1862 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1863 > > │ 56 / 638612294371996498 / Changed │ 00:01:38 verbose #1864 > > │ ("file1.txt", │ 00:01:38 verbose #1865 > > │ ...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1866 > > │ 156 / 638612294371996654 / Changed │ 00:01:38 verbose #1867 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1868 > > │ 181 / 638612294371996835 / Changed │ 00:01:38 verbose #1869 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1870 > > │ 155 / 638612294371996990 / Changed │ 00:01:38 verbose #1871 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1872 > > │ 165 / 638612294371997155 / Changed │ 00:01:38 verbose #1873 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1874 > > │ 141 / 638612294371997296 / Changed │ 00:01:38 verbose #1875 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1876 > > │ 182 / 638612294371997478 / Changed │ 00:01:38 verbose #1877 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1878 > > │ 669 / 638612294371998147 / Changed │ 00:01:38 verbose #1879 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1880 > > │ 67 / 638612294371998214 / Changed │ 00:01:38 verbose #1881 > > │ ("file1.txt", │ 00:01:38 verbose #1882 > > │ ...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1883 > > │ 117 / 638612294371998331 / Changed │ 00:01:38 verbose #1884 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1885 > > │ 158 / 638612294371998489 / Changed │ 00:01:38 verbose #1886 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1887 > > │ 167 / 638612294371998656 / Changed │ 00:01:38 verbose #1888 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1889 > > │ 664 / 638612294371999320 / Changed │ 00:01:38 verbose #1890 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1891 > > │ 54 / 638612294371999374 / Changed │ 00:01:38 verbose #1892 > > │ ("file1.txt", │ 00:01:38 verbose #1893 > > │ ...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1894 > > │ 172 / 638612294371999546 / Changed │ 00:01:38 verbose #1895 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1896 > > │ 720 / 638612294372000266 / Changed │ 00:01:38 verbose #1897 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1898 > > │ 80 / 638612294372000346 / Changed │ 00:01:38 verbose #1899 > > │ ("file1.txt", │ 00:01:38 verbose #1900 > > │ ...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1901 > > │ 171 / 638612294372000517 / Changed │ 00:01:38 verbose #1902 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1903 > > │ 165 / 638612294372000682 / Changed │ 00:01:38 verbose #1904 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1905 > > │ 174 / 638612294372000856 / Changed │ 00:01:38 verbose #1906 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1907 > > │ 762 / 638612294372001618 / Changed │ 00:01:38 verbose #1908 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1909 > > │ 79 / 638612294372001697 / Changed │ 00:01:38 verbose #1910 > > │ ("file1.txt", │ 00:01:38 verbose #1911 > > │ ...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1912 > > │ 132 / 638612294372001829 / Changed │ 00:01:38 verbose #1913 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1914 > > │ 161 / 638612294372001990 / Changed │ 00:01:38 verbose #1915 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1916 > > │ 189 / 638612294372002179 / Changed │ 00:01:38 verbose #1917 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1918 > > │ 634 / 638612294372002813 / Changed │ 00:01:38 verbose #1919 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1920 > > │ 53 / 638612294372002866 / Changed │ 00:01:38 verbose #1921 > > │ ("file1.txt", │ 00:01:38 verbose #1922 > > │ ...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1923 > > │ 200 / 638612294372003066 / Changed │ 00:01:38 verbose #1924 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1925 > > │ 166 / 638612294372003232 / Changed │ 00:01:38 verbose #1926 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1927 > > │ 146 / 638612294372003378 / Changed │ 00:01:38 verbose #1928 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1929 > > │ 153 / 638612294372003531 / Changed │ 00:01:38 verbose #1930 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1931 > > │ 173 / 638612294372003704 / Changed │ 00:01:38 verbose #1932 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1933 > > │ 179 / 638612294372003883 / Changed │ 00:01:38 verbose #1934 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1935 > > │ 181 / 638612294372004064 / Changed │ 00:01:38 verbose #1936 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1937 > > │ 192 / 638612294372004256 / Changed │ 00:01:38 verbose #1938 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1939 > > │ 144 / 638612294372004400 / Changed │ 00:01:38 verbose #1940 > > │ ("file1.txt",...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1941 > > │ 17083 / 638612294372021483 / Changed │ 00:01:38 verbose #1942 > > │ ("file1.txt...11111111111111111111111111111111111111111111111b") │ 00:01:38 verbose #1943 > > │ 35073 / 638612294372056556 / Changed │ 00:01:38 verbose #1944 > > │ ("file2.txt...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #1945 > > │ 656 / 638612294372057212 / Changed │ 00:01:38 verbose #1946 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #1947 > > │ 498 / 638612294372057710 / Changed │ 00:01:38 verbose #1948 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #1949 > > │ 339 / 638612294372058049 / Changed │ 00:01:38 verbose #1950 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #1951 > > │ 307 / 638612294372058356 / Changed │ 00:01:38 verbose #1952 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #1953 > > │ 332 / 638612294372058688 / Changed │ 00:01:38 verbose #1954 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #1955 > > │ 583 / 638612294372059271 / Changed │ 00:01:38 verbose #1956 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #1957 > > │ 309 / 638612294372059580 / Changed │ 00:01:38 verbose #1958 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #1959 > > │ 344 / 638612294372059924 / Changed │ 00:01:38 verbose #1960 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #1961 > > │ 310 / 638612294372060234 / Changed │ 00:01:38 verbose #1962 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #1963 > > │ 316 / 638612294372060550 / Changed │ 00:01:38 verbose #1964 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #1965 > > │ 316 / 638612294372060866 / Changed │ 00:01:38 verbose #1966 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #1967 > > │ 293 / 638612294372061159 / Changed │ 00:01:38 verbose #1968 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #1969 > > │ 473 / 638612294372061632 / Changed │ 00:01:38 verbose #1970 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #1971 > > │ 348 / 638612294372061980 / Changed │ 00:01:38 verbose #1972 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #1973 > > │ 329 / 638612294372062309 / Changed │ 00:01:38 verbose #1974 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #1975 > > │ 253 / 638612294372062562 / Changed │ 00:01:38 verbose #1976 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #1977 > > │ 226 / 638612294372062788 / Changed │ 00:01:38 verbose #1978 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #1979 > > │ 231 / 638612294372063019 / Changed │ 00:01:38 verbose #1980 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #1981 > > │ 221 / 638612294372063240 / Changed │ 00:01:38 verbose #1982 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #1983 > > │ 231 / 638612294372063471 / Changed │ 00:01:38 verbose #1984 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #1985 > > │ 3174 / 638612294372066645 / Changed │ 00:01:38 verbose #1986 > > │ ("file2.txt"...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #1987 > > │ 77 / 638612294372066722 / Changed │ 00:01:38 verbose #1988 > > │ ("file2.txt", │ 00:01:38 verbose #1989 > > │ ...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #1990 > > │ 248 / 638612294372066970 / Changed │ 00:01:38 verbose #1991 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #1992 > > │ 177 / 638612294372067147 / Changed │ 00:01:38 verbose #1993 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #1994 > > │ 181 / 638612294372067328 / Changed │ 00:01:38 verbose #1995 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #1996 > > │ 214 / 638612294372067542 / Changed │ 00:01:38 verbose #1997 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #1998 > > │ 175 / 638612294372067717 / Changed │ 00:01:38 verbose #1999 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2000 > > │ 184 / 638612294372067901 / Changed │ 00:01:38 verbose #2001 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2002 > > │ 129 / 638612294372068030 / Changed │ 00:01:38 verbose #2003 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2004 > > │ 247 / 638612294372068277 / Changed │ 00:01:38 verbose #2005 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2006 > > │ 170 / 638612294372068447 / Changed │ 00:01:38 verbose #2007 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2008 > > │ 216 / 638612294372068663 / Changed │ 00:01:38 verbose #2009 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2010 > > │ 111 / 638612294372068774 / Changed │ 00:01:38 verbose #2011 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2012 > > │ 239 / 638612294372069013 / Changed │ 00:01:38 verbose #2013 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2014 > > │ 222 / 638612294372069235 / Changed │ 00:01:38 verbose #2015 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2016 > > │ 342 / 638612294372069577 / Changed │ 00:01:38 verbose #2017 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2018 > > │ 64 / 638612294372069641 / Changed │ 00:01:38 verbose #2019 > > │ ("file2.txt", │ 00:01:38 verbose #2020 > > │ ...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2021 > > │ 41 / 638612294372069682 / Changed │ 00:01:38 verbose #2022 > > │ ("file2.txt", │ 00:01:38 verbose #2023 > > │ ...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2024 > > │ 238 / 638612294372069920 / Changed │ 00:01:38 verbose #2025 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2026 > > │ 175 / 638612294372070095 / Changed │ 00:01:38 verbose #2027 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2028 > > │ 178 / 638612294372070273 / Changed │ 00:01:38 verbose #2029 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2030 > > │ 211 / 638612294372070484 / Changed │ 00:01:38 verbose #2031 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2032 > > │ 172 / 638612294372070656 / Changed │ 00:01:38 verbose #2033 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2034 > > │ 288 / 638612294372070944 / Changed │ 00:01:38 verbose #2035 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2036 > > │ 172 / 638612294372071116 / Changed │ 00:01:38 verbose #2037 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2038 > > │ 208 / 638612294372071324 / Changed │ 00:01:38 verbose #2039 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2040 > > │ 170 / 638612294372071494 / Changed │ 00:01:38 verbose #2041 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2042 > > │ 206 / 638612294372071700 / Changed │ 00:01:38 verbose #2043 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2044 > > │ 424 / 638612294372072124 / Changed │ 00:01:38 verbose #2045 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2046 > > │ 66 / 638612294372072190 / Changed │ 00:01:38 verbose #2047 > > │ ("file2.txt", │ 00:01:38 verbose #2048 > > │ ...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2049 > > │ 260 / 638612294372072450 / Changed │ 00:01:38 verbose #2050 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2051 > > │ 71 / 638612294372072521 / Changed │ 00:01:38 verbose #2052 > > │ ("file2.txt", │ 00:01:38 verbose #2053 > > │ ...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2054 > > │ 250 / 638612294372072771 / Changed │ 00:01:38 verbose #2055 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2056 > > │ 175 / 638612294372072946 / Changed │ 00:01:38 verbose #2057 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2058 > > │ 232 / 638612294372073178 / Changed │ 00:01:38 verbose #2059 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2060 > > │ 234 / 638612294372073412 / Changed │ 00:01:38 verbose #2061 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2062 > > │ 219 / 638612294372073631 / Changed │ 00:01:38 verbose #2063 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2064 > > │ 182 / 638612294372073813 / Changed │ 00:01:38 verbose #2065 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2066 > > │ 184 / 638612294372073997 / Changed │ 00:01:38 verbose #2067 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2068 > > │ 199 / 638612294372074196 / Changed │ 00:01:38 verbose #2069 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2070 > > │ 174 / 638612294372074370 / Changed │ 00:01:38 verbose #2071 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2072 > > │ 245 / 638612294372074615 / Changed │ 00:01:38 verbose #2073 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2074 > > │ 58 / 638612294372074673 / Changed │ 00:01:38 verbose #2075 > > │ ("file2.txt", │ 00:01:38 verbose #2076 > > │ ...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2077 > > │ 236 / 638612294372074909 / Changed │ 00:01:38 verbose #2078 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2079 > > │ 247 / 638612294372075156 / Changed │ 00:01:38 verbose #2080 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2081 > > │ 171 / 638612294372075327 / Changed │ 00:01:38 verbose #2082 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2083 > > │ 209 / 638612294372075536 / Changed │ 00:01:38 verbose #2084 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2085 > > │ 172 / 638612294372075708 / Changed │ 00:01:38 verbose #2086 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2087 > > │ 165 / 638612294372075873 / Changed │ 00:01:38 verbose #2088 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2089 > > │ 242 / 638612294372076115 / Changed │ 00:01:38 verbose #2090 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2091 > > │ 255 / 638612294372076370 / Changed │ 00:01:38 verbose #2092 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2093 > > │ 189 / 638612294372076559 / Changed │ 00:01:38 verbose #2094 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2095 > > │ 178 / 638612294372076737 / Changed │ 00:01:38 verbose #2096 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2097 > > │ 216 / 638612294372076953 / Changed │ 00:01:38 verbose #2098 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2099 > > │ 118 / 638612294372077071 / Changed │ 00:01:38 verbose #2100 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2101 > > │ 220 / 638612294372077291 / Changed │ 00:01:38 verbose #2102 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2103 > > │ 177 / 638612294372077468 / Changed │ 00:01:38 verbose #2104 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2105 > > │ 152 / 638612294372077620 / Changed │ 00:01:38 verbose #2106 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2107 > > │ 233 / 638612294372077853 / Changed │ 00:01:38 verbose #2108 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2109 > > │ 171 / 638612294372078024 / Changed │ 00:01:38 verbose #2110 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2111 > > │ 211 / 638612294372078235 / Changed │ 00:01:38 verbose #2112 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2113 > > │ 120 / 638612294372078355 / Changed │ 00:01:38 verbose #2114 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2115 > > │ 223 / 638612294372078578 / Changed │ 00:01:38 verbose #2116 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2117 > > │ 179 / 638612294372078757 / Changed │ 00:01:38 verbose #2118 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2119 > > │ 301 / 638612294372079058 / Changed │ 00:01:38 verbose #2120 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2121 > > │ 63 / 638612294372079121 / Changed │ 00:01:38 verbose #2122 > > │ ("file2.txt", │ 00:01:38 verbose #2123 > > │ ...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2124 > > │ 181 / 638612294372079302 / Changed │ 00:01:38 verbose #2125 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2126 > > │ 207 / 638612294372079509 / Changed │ 00:01:38 verbose #2127 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2128 > > │ 170 / 638612294372079679 / Changed │ 00:01:38 verbose #2129 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2130 > > │ 177 / 638612294372079856 / Changed │ 00:01:38 verbose #2131 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2132 > > │ 209 / 638612294372080065 / Changed │ 00:01:38 verbose #2133 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2134 > > │ 266 / 638612294372080331 / Changed │ 00:01:38 verbose #2135 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2136 > > │ 55 / 638612294372080386 / Changed │ 00:01:38 verbose #2137 > > │ ("file2.txt", │ 00:01:38 verbose #2138 > > │ ...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2139 > > │ 244 / 638612294372080630 / Changed │ 00:01:38 verbose #2140 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2141 > > │ 223 / 638612294372080853 / Changed │ 00:01:38 verbose #2142 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2143 > > │ 177 / 638612294372081030 / Changed │ 00:01:38 verbose #2144 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2145 > > │ 201 / 638612294372081231 / Changed │ 00:01:38 verbose #2146 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2147 > > │ 204 / 638612294372081435 / Changed │ 00:01:38 verbose #2148 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2149 > > │ 112 / 638612294372081547 / Changed │ 00:01:38 verbose #2150 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2151 > > │ 123 / 638612294372081670 / Changed │ 00:01:38 verbose #2152 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2153 > > │ 263 / 638612294372081933 / Changed │ 00:01:38 verbose #2154 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2155 > > │ 178 / 638612294372082111 / Changed │ 00:01:38 verbose #2156 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2157 > > │ 176 / 638612294372082287 / Changed │ 00:01:38 verbose #2158 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2159 > > │ 206 / 638612294372082493 / Changed │ 00:01:38 verbose #2160 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2161 > > │ 179 / 638612294372082672 / Changed │ 00:01:38 verbose #2162 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2163 > > │ 175 / 638612294372082847 / Changed │ 00:01:38 verbose #2164 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2165 > > │ 204 / 638612294372083051 / Changed │ 00:01:38 verbose #2166 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2167 > > │ 125 / 638612294372083176 / Changed │ 00:01:38 verbose #2168 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2169 > > │ 233 / 638612294372083409 / Changed │ 00:01:38 verbose #2170 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2171 > > │ 181 / 638612294372083590 / Changed │ 00:01:38 verbose #2172 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2173 > > │ 207 / 638612294372083797 / Changed │ 00:01:38 verbose #2174 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2175 > > │ 171 / 638612294372083968 / Changed │ 00:01:38 verbose #2176 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2177 > > │ 200 / 638612294372084168 / Changed │ 00:01:38 verbose #2178 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2179 > > │ 185 / 638612294372084353 / Changed │ 00:01:38 verbose #2180 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2181 > > │ 151 / 638612294372084504 / Changed │ 00:01:38 verbose #2182 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2183 > > │ 249 / 638612294372084753 / Changed │ 00:01:38 verbose #2184 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2185 > > │ 175 / 638612294372084928 / Changed │ 00:01:38 verbose #2186 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2187 > > │ 201 / 638612294372085129 / Changed │ 00:01:38 verbose #2188 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2189 > > │ 170 / 638612294372085299 / Changed │ 00:01:38 verbose #2190 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2191 > > │ 175 / 638612294372085474 / Changed │ 00:01:38 verbose #2192 > > │ ("file2.txt",...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2193 > > │ 50 / 638612294372085524 / Changed │ 00:01:38 verbose #2194 > > │ ("file2.txt", │ 00:01:38 verbose #2195 > > │ ...22222222222222222222222222222222222222222222222b") │ 00:01:38 verbose #2196 > > │ 15016711 / 638612294387102235 / Renamed │ 00:01:38 verbose #2197 > > │ ("file1....1111111111111111111111111111111111111111111111b")) │ 00:01:38 verbose #2198 > > │ 545 / 638612294387102780 / Renamed │ 00:01:38 verbose #2199 > > │ ("file2.txt",...2222222222222222222222222222222222222222222222b")) │ 00:01:38 verbose #2200 > > │ 15052290 / 638612294402155070 / Changed │ 00:01:38 verbose #2201 > > │ ("file_1...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2202 > > │ 682 / 638612294402155752 / Changed │ 00:01:38 verbose #2203 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2204 > > │ 607 / 638612294402156359 / Changed │ 00:01:38 verbose #2205 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2206 > > │ 403 / 638612294402156762 / Changed │ 00:01:38 verbose #2207 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2208 > > │ 128 / 638612294402156890 / Changed │ 00:01:38 verbose #2209 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2210 > > │ 132 / 638612294402157022 / Changed │ 00:01:38 verbose #2211 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2212 > > │ 1541 / 638612294402158563 / Changed │ 00:01:38 verbose #2213 > > │ ("file_1.txt...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2214 > > │ 122 / 638612294402158685 / Changed │ 00:01:38 verbose #2215 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2216 > > │ 221 / 638612294402158906 / Changed │ 00:01:38 verbose #2217 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2218 > > │ 427 / 638612294402159333 / Changed │ 00:01:38 verbose #2219 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2220 > > │ 365 / 638612294402159698 / Changed │ 00:01:38 verbose #2221 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2222 > > │ 372 / 638612294402160070 / Changed │ 00:01:38 verbose #2223 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2224 > > │ 58 / 638612294402160128 / Changed │ 00:01:38 verbose #2225 > > │ ("file_1.txt",...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2226 > > │ 153 / 638612294402160281 / Changed │ 00:01:38 verbose #2227 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2228 > > │ 274 / 638612294402160555 / Changed │ 00:01:38 verbose #2229 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2230 > > │ 280 / 638612294402160835 / Changed │ 00:01:38 verbose #2231 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2232 > > │ 245 / 638612294402161080 / Changed │ 00:01:38 verbose #2233 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2234 > > │ 256 / 638612294402161336 / Changed │ 00:01:38 verbose #2235 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2236 > > │ 258 / 638612294402161594 / Changed │ 00:01:38 verbose #2237 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2238 > > │ 351 / 638612294402161945 / Changed │ 00:01:38 verbose #2239 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2240 > > │ 7463 / 638612294402169408 / Changed │ 00:01:38 verbose #2241 > > │ ("file_1.txt...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2242 > > │ 181 / 638612294402169589 / Changed │ 00:01:38 verbose #2243 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2244 > > │ 406 / 638612294402169995 / Changed │ 00:01:38 verbose #2245 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2246 > > │ 78 / 638612294402170073 / Changed │ 00:01:38 verbose #2247 > > │ ("file_1.txt",...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2248 > > │ 849 / 638612294402170922 / Changed │ 00:01:38 verbose #2249 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2250 > > │ 204 / 638612294402171126 / Changed │ 00:01:38 verbose #2251 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2252 > > │ 356 / 638612294402171482 / Changed │ 00:01:38 verbose #2253 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2254 > > │ 262 / 638612294402171744 / Changed │ 00:01:38 verbose #2255 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2256 > > │ 409 / 638612294402172153 / Changed │ 00:01:38 verbose #2257 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2258 > > │ 250 / 638612294402172403 / Changed │ 00:01:38 verbose #2259 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2260 > > │ 76 / 638612294402172479 / Changed │ 00:01:38 verbose #2261 > > │ ("file_1.txt",...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2262 > > │ 207 / 638612294402172686 / Changed │ 00:01:38 verbose #2263 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2264 > > │ 182 / 638612294402172868 / Changed │ 00:01:38 verbose #2265 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2266 > > │ 270 / 638612294402173138 / Changed │ 00:01:38 verbose #2267 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2268 > > │ 287 / 638612294402173425 / Changed │ 00:01:38 verbose #2269 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2270 > > │ 211 / 638612294402173636 / Changed │ 00:01:38 verbose #2271 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2272 > > │ 167 / 638612294402173803 / Changed │ 00:01:38 verbose #2273 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2274 > > │ 177 / 638612294402173980 / Changed │ 00:01:38 verbose #2275 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2276 > > │ 150 / 638612294402174130 / Changed │ 00:01:38 verbose #2277 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2278 > > │ 159 / 638612294402174289 / Changed │ 00:01:38 verbose #2279 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2280 > > │ 159 / 638612294402174448 / Changed │ 00:01:38 verbose #2281 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2282 > > │ 206 / 638612294402174654 / Changed │ 00:01:38 verbose #2283 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2284 > > │ 148 / 638612294402174802 / Changed │ 00:01:38 verbose #2285 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2286 > > │ 162 / 638612294402174964 / Changed │ 00:01:38 verbose #2287 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2288 > > │ 169 / 638612294402175133 / Changed │ 00:01:38 verbose #2289 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2290 > > │ 167 / 638612294402175300 / Changed │ 00:01:38 verbose #2291 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2292 > > │ 179 / 638612294402175479 / Changed │ 00:01:38 verbose #2293 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2294 > > │ 179 / 638612294402175658 / Changed │ 00:01:38 verbose #2295 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2296 > > │ 168 / 638612294402175826 / Changed │ 00:01:38 verbose #2297 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2298 > > │ 192 / 638612294402176018 / Changed │ 00:01:38 verbose #2299 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2300 > > │ 188 / 638612294402176206 / Changed │ 00:01:38 verbose #2301 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2302 > > │ 163 / 638612294402176369 / Changed │ 00:01:38 verbose #2303 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2304 > > │ 176 / 638612294402176545 / Changed │ 00:01:38 verbose #2305 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2306 > > │ 180 / 638612294402176725 / Changed │ 00:01:38 verbose #2307 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2308 > > │ 159 / 638612294402176884 / Changed │ 00:01:38 verbose #2309 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2310 > > │ 165 / 638612294402177049 / Changed │ 00:01:38 verbose #2311 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2312 > > │ 168 / 638612294402177217 / Changed │ 00:01:38 verbose #2313 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2314 > > │ 157 / 638612294402177374 / Changed │ 00:01:38 verbose #2315 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2316 > > │ 162 / 638612294402177536 / Changed │ 00:01:38 verbose #2317 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2318 > > │ 177 / 638612294402177713 / Changed │ 00:01:38 verbose #2319 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2320 > > │ 160 / 638612294402177873 / Changed │ 00:01:38 verbose #2321 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2322 > > │ 226 / 638612294402178099 / Changed │ 00:01:38 verbose #2323 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2324 > > │ 201 / 638612294402178300 / Changed │ 00:01:38 verbose #2325 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2326 > > │ 174 / 638612294402178474 / Changed │ 00:01:38 verbose #2327 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2328 > > │ 157 / 638612294402178631 / Changed │ 00:01:38 verbose #2329 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2330 > > │ 186 / 638612294402178817 / Changed │ 00:01:38 verbose #2331 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2332 > > │ 172 / 638612294402178989 / Changed │ 00:01:38 verbose #2333 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2334 > > │ 161 / 638612294402179150 / Changed │ 00:01:38 verbose #2335 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2336 > > │ 202 / 638612294402179352 / Changed │ 00:01:38 verbose #2337 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2338 > > │ 155 / 638612294402179507 / Changed │ 00:01:38 verbose #2339 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2340 > > │ 160 / 638612294402179667 / Changed │ 00:01:38 verbose #2341 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2342 > > │ 167 / 638612294402179834 / Changed │ 00:01:38 verbose #2343 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2344 > > │ 165 / 638612294402179999 / Changed │ 00:01:38 verbose #2345 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2346 > > │ 169 / 638612294402180168 / Changed │ 00:01:38 verbose #2347 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2348 > > │ 169 / 638612294402180337 / Changed │ 00:01:38 verbose #2349 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2350 > > │ 173 / 638612294402180510 / Changed │ 00:01:38 verbose #2351 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2352 > > │ 206 / 638612294402180716 / Changed │ 00:01:38 verbose #2353 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2354 > > │ 180 / 638612294402180896 / Changed │ 00:01:38 verbose #2355 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2356 > > │ 166 / 638612294402181062 / Changed │ 00:01:38 verbose #2357 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2358 > > │ 160 / 638612294402181222 / Changed │ 00:01:38 verbose #2359 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2360 > > │ 163 / 638612294402181385 / Changed │ 00:01:38 verbose #2361 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2362 > > │ 167 / 638612294402181552 / Changed │ 00:01:38 verbose #2363 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2364 > > │ 173 / 638612294402181725 / Changed │ 00:01:38 verbose #2365 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2366 > > │ 254 / 638612294402181979 / Changed │ 00:01:38 verbose #2367 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2368 > > │ 157 / 638612294402182136 / Changed │ 00:01:38 verbose #2369 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2370 > > │ 165 / 638612294402182301 / Changed │ 00:01:38 verbose #2371 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2372 > > │ 396 / 638612294402182697 / Changed │ 00:01:38 verbose #2373 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2374 > > │ 1847 / 638612294402184544 / Changed │ 00:01:38 verbose #2375 > > │ ("file_1.txt...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2376 > > │ 122 / 638612294402184666 / Changed │ 00:01:38 verbose #2377 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2378 > > │ 219 / 638612294402184885 / Changed │ 00:01:38 verbose #2379 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2380 > > │ 258 / 638612294402185143 / Changed │ 00:01:38 verbose #2381 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2382 > > │ 497 / 638612294402185640 / Changed │ 00:01:38 verbose #2383 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2384 > > │ 243 / 638612294402185883 / Changed │ 00:01:38 verbose #2385 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2386 > > │ 202 / 638612294402186085 / Changed │ 00:01:38 verbose #2387 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2388 > > │ 178 / 638612294402186263 / Changed │ 00:01:38 verbose #2389 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2390 > > │ 170 / 638612294402186433 / Changed │ 00:01:38 verbose #2391 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2392 > > │ 131 / 638612294402186564 / Changed │ 00:01:38 verbose #2393 > > │ ("file_1.txt"...11111111111111111111111111111111111111111111111c") │ 00:01:38 verbose #2394 > > │ 49015 / 638612294402235579 / Changed │ 00:01:38 verbose #2395 > > │ ("file_2.tx...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2396 > > │ 158 / 638612294402235737 / Changed │ 00:01:38 verbose #2397 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2398 > > │ 515 / 638612294402236252 / Changed │ 00:01:38 verbose #2399 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2400 > > │ 114 / 638612294402236366 / Changed │ 00:01:38 verbose #2401 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2402 > > │ 347 / 638612294402236713 / Changed │ 00:01:38 verbose #2403 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2404 > > │ 193 / 638612294402236906 / Changed │ 00:01:38 verbose #2405 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2406 > > │ 174 / 638612294402237080 / Changed │ 00:01:38 verbose #2407 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2408 > > │ 218 / 638612294402237298 / Changed │ 00:01:38 verbose #2409 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2410 > > │ 56 / 638612294402237354 / Changed │ 00:01:38 verbose #2411 > > │ ("file_2.txt",...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2412 > > │ 242 / 638612294402237596 / Changed │ 00:01:38 verbose #2413 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2414 > > │ 197 / 638612294402237793 / Changed │ 00:01:38 verbose #2415 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2416 > > │ 216 / 638612294402238009 / Changed │ 00:01:38 verbose #2417 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2418 > > │ 185 / 638612294402238194 / Changed │ 00:01:38 verbose #2419 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2420 > > │ 195 / 638612294402238389 / Changed │ 00:01:38 verbose #2421 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2422 > > │ 193 / 638612294402238582 / Changed │ 00:01:38 verbose #2423 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2424 > > │ 200 / 638612294402238782 / Changed │ 00:01:38 verbose #2425 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2426 > > │ 553 / 638612294402239335 / Changed │ 00:01:38 verbose #2427 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2428 > > │ 198 / 638612294402239533 / Changed │ 00:01:38 verbose #2429 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2430 > > │ 200 / 638612294402239733 / Changed │ 00:01:38 verbose #2431 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2432 > > │ 275 / 638612294402240008 / Changed │ 00:01:38 verbose #2433 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2434 > > │ 256 / 638612294402240264 / Changed │ 00:01:38 verbose #2435 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2436 > > │ 341 / 638612294402240605 / Changed │ 00:01:38 verbose #2437 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2438 > > │ 327 / 638612294402240932 / Changed │ 00:01:38 verbose #2439 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2440 > > │ 348 / 638612294402241280 / Changed │ 00:01:38 verbose #2441 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2442 > > │ 316 / 638612294402241596 / Changed │ 00:01:38 verbose #2443 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2444 > > │ 253 / 638612294402241849 / Changed │ 00:01:38 verbose #2445 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2446 > > │ 573 / 638612294402242422 / Changed │ 00:01:38 verbose #2447 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2448 > > │ 217 / 638612294402242639 / Changed │ 00:01:38 verbose #2449 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2450 > > │ 210 / 638612294402242849 / Changed │ 00:01:38 verbose #2451 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2452 > > │ 198 / 638612294402243047 / Changed │ 00:01:38 verbose #2453 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2454 > > │ 182 / 638612294402243229 / Changed │ 00:01:38 verbose #2455 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2456 > > │ 204 / 638612294402243433 / Changed │ 00:01:38 verbose #2457 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2458 > > │ 208 / 638612294402243641 / Changed │ 00:01:38 verbose #2459 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2460 > > │ 200 / 638612294402243841 / Changed │ 00:01:38 verbose #2461 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2462 > > │ 230 / 638612294402244071 / Changed │ 00:01:38 verbose #2463 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2464 > > │ 240 / 638612294402244311 / Changed │ 00:01:38 verbose #2465 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2466 > > │ 207 / 638612294402244518 / Changed │ 00:01:38 verbose #2467 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2468 > > │ 209 / 638612294402244727 / Changed │ 00:01:38 verbose #2469 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2470 > > │ 210 / 638612294402244937 / Changed │ 00:01:38 verbose #2471 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2472 > > │ 213 / 638612294402245150 / Changed │ 00:01:38 verbose #2473 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2474 > > │ 196 / 638612294402245346 / Changed │ 00:01:38 verbose #2475 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2476 > > │ 219 / 638612294402245565 / Changed │ 00:01:38 verbose #2477 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2478 > > │ 219 / 638612294402245784 / Changed │ 00:01:38 verbose #2479 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2480 > > │ 204 / 638612294402245988 / Changed │ 00:01:38 verbose #2481 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2482 > > │ 212 / 638612294402246200 / Changed │ 00:01:38 verbose #2483 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2484 > > │ 213 / 638612294402246413 / Changed │ 00:01:38 verbose #2485 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2486 > > │ 200 / 638612294402246613 / Changed │ 00:01:38 verbose #2487 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2488 > > │ 203 / 638612294402246816 / Changed │ 00:01:38 verbose #2489 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2490 > > │ 206 / 638612294402247022 / Changed │ 00:01:38 verbose #2491 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2492 > > │ 213 / 638612294402247235 / Changed │ 00:01:38 verbose #2493 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2494 > > │ 242 / 638612294402247477 / Changed │ 00:01:38 verbose #2495 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2496 > > │ 204 / 638612294402247681 / Changed │ 00:01:38 verbose #2497 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2498 > > │ 214 / 638612294402247895 / Changed │ 00:01:38 verbose #2499 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2500 > > │ 200 / 638612294402248095 / Changed │ 00:01:38 verbose #2501 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2502 > > │ 216 / 638612294402248311 / Changed │ 00:01:38 verbose #2503 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2504 > > │ 215 / 638612294402248526 / Changed │ 00:01:38 verbose #2505 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2506 > > │ 234 / 638612294402248760 / Changed │ 00:01:38 verbose #2507 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2508 > > │ 191 / 638612294402248951 / Changed │ 00:01:38 verbose #2509 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2510 > > │ 214 / 638612294402249165 / Changed │ 00:01:38 verbose #2511 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2512 > > │ 203 / 638612294402249368 / Changed │ 00:01:38 verbose #2513 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2514 > > │ 211 / 638612294402249579 / Changed │ 00:01:38 verbose #2515 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2516 > > │ 206 / 638612294402249785 / Changed │ 00:01:38 verbose #2517 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2518 > > │ 200 / 638612294402249985 / Changed │ 00:01:38 verbose #2519 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2520 > > │ 201 / 638612294402250186 / Changed │ 00:01:38 verbose #2521 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2522 > > │ 206 / 638612294402250392 / Changed │ 00:01:38 verbose #2523 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2524 > > │ 223 / 638612294402250615 / Changed │ 00:01:38 verbose #2525 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2526 > > │ 227 / 638612294402250842 / Changed │ 00:01:38 verbose #2527 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2528 > > │ 208 / 638612294402251050 / Changed │ 00:01:38 verbose #2529 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2530 > > │ 196 / 638612294402251246 / Changed │ 00:01:38 verbose #2531 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2532 > > │ 205 / 638612294402251451 / Changed │ 00:01:38 verbose #2533 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2534 > > │ 217 / 638612294402251668 / Changed │ 00:01:38 verbose #2535 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2536 > > │ 202 / 638612294402251870 / Changed │ 00:01:38 verbose #2537 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2538 > > │ 233 / 638612294402252103 / Changed │ 00:01:38 verbose #2539 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2540 > > │ 200 / 638612294402252303 / Changed │ 00:01:38 verbose #2541 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2542 > > │ 206 / 638612294402252509 / Changed │ 00:01:38 verbose #2543 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2544 > > │ 214 / 638612294402252723 / Changed │ 00:01:38 verbose #2545 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2546 > > │ 201 / 638612294402252924 / Changed │ 00:01:38 verbose #2547 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2548 > > │ 224 / 638612294402253148 / Changed │ 00:01:38 verbose #2549 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2550 > > │ 221 / 638612294402253369 / Changed │ 00:01:38 verbose #2551 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2552 > > │ 288 / 638612294402253657 / Changed │ 00:01:38 verbose #2553 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2554 > > │ 259 / 638612294402253916 / Changed │ 00:01:38 verbose #2555 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2556 > > │ 59 / 638612294402253975 / Changed │ 00:01:38 verbose #2557 > > │ ("file_2.txt",...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2558 > > │ 184 / 638612294402254159 / Changed │ 00:01:38 verbose #2559 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2560 > > │ 214 / 638612294402254373 / Changed │ 00:01:38 verbose #2561 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2562 > > │ 201 / 638612294402254574 / Changed │ 00:01:38 verbose #2563 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2564 > > │ 198 / 638612294402254772 / Changed │ 00:01:38 verbose #2565 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2566 > > │ 214 / 638612294402254986 / Changed │ 00:01:38 verbose #2567 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2568 > > │ 231 / 638612294402255217 / Changed │ 00:01:38 verbose #2569 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2570 > > │ 209 / 638612294402255426 / Changed │ 00:01:38 verbose #2571 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2572 > > │ 209 / 638612294402255635 / Changed │ 00:01:38 verbose #2573 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2574 > > │ 215 / 638612294402255850 / Changed │ 00:01:38 verbose #2575 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2576 > > │ 242 / 638612294402256092 / Changed │ 00:01:38 verbose #2577 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2578 > > │ 210 / 638612294402256302 / Changed │ 00:01:38 verbose #2579 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2580 > > │ 218 / 638612294402256520 / Changed │ 00:01:38 verbose #2581 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2582 > > │ 199 / 638612294402256719 / Changed │ 00:01:38 verbose #2583 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2584 > > │ 234 / 638612294402256953 / Changed │ 00:01:38 verbose #2585 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2586 > > │ 200 / 638612294402257153 / Changed │ 00:01:38 verbose #2587 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2588 > > │ 183 / 638612294402257336 / Changed │ 00:01:38 verbose #2589 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2590 > > │ 219 / 638612294402257555 / Changed │ 00:01:38 verbose #2591 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2592 > > │ 193 / 638612294402257748 / Changed │ 00:01:38 verbose #2593 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2594 > > │ 188 / 638612294402257936 / Changed │ 00:01:38 verbose #2595 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2596 > > │ 186 / 638612294402258122 / Changed │ 00:01:38 verbose #2597 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2598 > > │ 209 / 638612294402258331 / Changed │ 00:01:38 verbose #2599 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2600 > > │ 186 / 638612294402258517 / Changed │ 00:01:38 verbose #2601 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2602 > > │ 180 / 638612294402258697 / Changed │ 00:01:38 verbose #2603 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2604 > > │ 191 / 638612294402258888 / Changed │ 00:01:38 verbose #2605 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2606 > > │ 174 / 638612294402259062 / Changed │ 00:01:38 verbose #2607 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2608 > > │ 188 / 638612294402259250 / Changed │ 00:01:38 verbose #2609 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2610 > > │ 220 / 638612294402259470 / Changed │ 00:01:38 verbose #2611 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2612 > > │ 178 / 638612294402259648 / Changed │ 00:01:38 verbose #2613 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2614 > > │ 218 / 638612294402259866 / Changed │ 00:01:38 verbose #2615 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2616 > > │ 196 / 638612294402260062 / Changed │ 00:01:38 verbose #2617 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2618 > > │ 185 / 638612294402260247 / Changed │ 00:01:38 verbose #2619 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2620 > > │ 178 / 638612294402260425 / Changed │ 00:01:38 verbose #2621 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2622 > > │ 197 / 638612294402260622 / Changed │ 00:01:38 verbose #2623 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2624 > > │ 193 / 638612294402260815 / Changed │ 00:01:38 verbose #2625 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2626 > > │ 186 / 638612294402261001 / Changed │ 00:01:38 verbose #2627 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2628 > > │ 230 / 638612294402261231 / Changed │ 00:01:38 verbose #2629 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2630 > > │ 181 / 638612294402261412 / Changed │ 00:01:38 verbose #2631 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2632 > > │ 177 / 638612294402261589 / Changed │ 00:01:38 verbose #2633 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2634 > > │ 190 / 638612294402261779 / Changed │ 00:01:38 verbose #2635 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2636 > > │ 180 / 638612294402261959 / Changed │ 00:01:38 verbose #2637 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2638 > > │ 195 / 638612294402262154 / Changed │ 00:01:38 verbose #2639 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2640 > > │ 191 / 638612294402262345 / Changed │ 00:01:38 verbose #2641 > > │ ("file_2.txt"...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2642 > > │ 52 / 638612294402262397 / Changed │ 00:01:38 verbose #2643 > > │ ("file_2.txt",...22222222222222222222222222222222222222222222222c") │ 00:01:38 verbose #2644 > > │ 14969198 / 638612294417231595 / Deleted "file_1.txt" │ 00:01:38 verbose #2645 > > │ 3156 / 638612294417234751 / Deleted "file_2.txt" │ 00:01:38 verbose #2646 > > │ [Created ("file1.txt", Some "1a"); Changed ("file1.txt", Some "1a"); Created │ 00:01:38 verbose #2647 > > │ ("file2.txt", Some "2a"); │ 00:01:38 verbose #2648 > > │ Changed ("file2.txt", Some "2a"); Changed ("file1.txt", Some "1b"); Changed │ 00:01:38 verbose #2649 > > │ ("file2.txt", Some "2b"); │ 00:01:38 verbose #2650 > > │ Renamed ("file1.txt", ("file_1.txt", Some "1b")); Renamed ("file2.txt", │ 00:01:38 verbose #2651 > > │ ("file_2.txt", Some "2b")); │ 00:01:38 verbose #2652 > > │ Changed ("file_1.txt", Some "1c"); Changed ("file_2.txt", Some "2c"); │ 00:01:38 verbose #2653 > > │ Deleted "file_1.txt"; Deleted "file_2.txt"] │ 00:01:38 verbose #2654 > > │ │ 00:01:38 verbose #2655 > > │ Some () │ 00:01:38 verbose #2656 > > │ │ 00:01:38 verbose #2657 > > │ │ 00:01:38 verbose #2658 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:38 verbose #2659 > > 00:01:38 verbose #2660 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:38 verbose #2661 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:38 verbose #2662 > > │ ### testEventsSorted (test) │ 00:01:38 verbose #2663 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:38 verbose #2664 > > 00:01:38 verbose #2665 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:38 verbose #2666 > > //// test 00:01:38 verbose #2667 > > 00:01:38 verbose #2668 > > let inline sortEvent event = 00:01:38 verbose #2669 > > match event with 00:01:38 verbose #2670 > > | FileSystemChange.Failure _ -> 0 00:01:38 verbose #2671 > > | FileSystemChange.Created _ -> 1 00:01:38 verbose #2672 > > | FileSystemChange.Changed _ -> 2 00:01:38 verbose #2673 > > | FileSystemChange.Renamed (_oldPath, _) -> 3 00:01:38 verbose #2674 > > | FileSystemChange.Deleted _ -> 4 00:01:38 verbose #2675 > > 00:01:38 verbose #2676 > > let inline formatEvents events = 00:01:38 verbose #2677 > > events 00:01:38 verbose #2678 > > |> Seq.toList 00:01:38 verbose #2679 > > |> List.sortBy (snd >> sortEvent) 00:01:38 verbose #2680 > > |> List.choose (fun (ticks, event) -> 00:01:38 verbose #2681 > > match event with 00:01:38 verbose #2682 > > | FileSystemChange.Failure _ -> 00:01:38 verbose #2683 > > None 00:01:38 verbose #2684 > > | FileSystemChange.Changed (path, _) -> 00:01:38 verbose #2685 > > Some (ticks, System.IO.Path.GetFileName path, nameof 00:01:38 verbose #2686 > > FileSystemChangeType.Changed) 00:01:38 verbose #2687 > > | FileSystemChange.Created (path, _) -> 00:01:38 verbose #2688 > > Some (ticks, System.IO.Path.GetFileName path, nameof 00:01:38 verbose #2689 > > FileSystemChangeType.Created) 00:01:38 verbose #2690 > > | FileSystemChange.Deleted path -> 00:01:38 verbose #2691 > > Some (ticks, System.IO.Path.GetFileName path, nameof 00:01:38 verbose #2692 > > FileSystemChangeType.Deleted) 00:01:38 verbose #2693 > > | FileSystemChange.Renamed (_oldPath, (path, _)) -> 00:01:38 verbose #2694 > > Some (ticks, System.IO.Path.GetFileName path, nameof 00:01:38 verbose #2695 > > FileSystemChangeType.Renamed) 00:01:38 verbose #2696 > > ) 00:01:38 verbose #2697 > > |> List.sortBy (fun (_, path, _) -> path) 00:01:38 verbose #2698 > > |> List.distinctBy (fun (_, path, event) -> path, event) 00:01:38 verbose #2699 > > 00:01:38 verbose #2700 > > let inline testEventsSorted 00:01:38 verbose #2701 > > (watchFn : string -> FSharp.Control.AsyncSeq<int64 * FileSystemChange> * 00:01:38 verbose #2702 > > IDisposable) 00:01:38 verbose #2703 > > write 00:01:38 verbose #2704 > > = 00:01:38 verbose #2705 > > let struct (tempDir, tempDisposable) = 00:01:38 verbose #2706 > > "FileSystem.testEventsSorted" 00:01:38 verbose #2707 > > |> SpiralCrypto.hash_text 00:01:38 verbose #2708 > > |> SpiralFileSystem.create_temp_dir' 00:01:38 verbose #2709 > > let stream, disposable = watchFn tempDir 00:01:38 verbose #2710 > > 00:01:38 verbose #2711 > > let events = System.Collections.Concurrent.ConcurrentBag () 00:01:38 verbose #2712 > > 00:01:38 verbose #2713 > > let inline iter () = 00:01:38 verbose #2714 > > stream 00:01:38 verbose #2715 > > |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun event -> async { 00:01:38 verbose #2716 > > events.Add event }) 00:01:38 verbose #2717 > > 00:01:38 verbose #2718 > > let run = async { 00:01:38 verbose #2719 > > let! _ = iter () |> Async.StartChild 00:01:38 verbose #2720 > > do! Async.Sleep 250 00:01:38 verbose #2721 > > return! write tempDir 00:01:38 verbose #2722 > > } 00:01:38 verbose #2723 > > 00:01:38 verbose #2724 > > try 00:01:38 verbose #2725 > > run 00:01:38 verbose #2726 > > |> Async.runWithTimeout 5000 00:01:38 verbose #2727 > > |> _assertEqual (Some ()) 00:01:38 verbose #2728 > > finally 00:01:38 verbose #2729 > > disposable.Dispose () 00:01:38 verbose #2730 > > tempDisposable.Dispose () 00:01:38 verbose #2731 > > 00:01:38 verbose #2732 > > let events = formatEvents events 00:01:38 verbose #2733 > > 00:01:38 verbose #2734 > > let eventMap = 00:01:38 verbose #2735 > > events 00:01:38 verbose #2736 > > |> List.map (fun (ticks, path, event) -> path, (event, ticks)) 00:01:38 verbose #2737 > > |> List.groupBy fst 00:01:38 verbose #2738 > > |> List.map (fun (path, events) -> 00:01:38 verbose #2739 > > let event, _ticks = 00:01:38 verbose #2740 > > events 00:01:38 verbose #2741 > > |> List.map snd 00:01:38 verbose #2742 > > |> List.sortByDescending snd 00:01:38 verbose #2743 > > |> List.head 00:01:38 verbose #2744 > > 00:01:38 verbose #2745 > > path, event 00:01:38 verbose #2746 > > ) 00:01:38 verbose #2747 > > |> Map.ofList 00:01:38 verbose #2748 > > 00:01:38 verbose #2749 > > let eventList = 00:01:38 verbose #2750 > > events 00:01:38 verbose #2751 > > |> List.map (fun (_ticks, path, event) -> path, event) 00:01:38 verbose #2752 > > 00:01:38 verbose #2753 > > eventMap, eventList 00:01:38 verbose #2754 > > 00:01:38 verbose #2755 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:38 verbose #2756 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:38 verbose #2757 > > │ #### create and delete (test) │ 00:01:38 verbose #2758 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:38 verbose #2759 > > 00:01:38 verbose #2760 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:38 verbose #2761 > > //// test 00:01:38 verbose #2762 > > 00:01:38 verbose #2763 > > let inline write path = async { 00:01:38 verbose #2764 > > let n = 3 00:01:38 verbose #2765 > > 00:01:38 verbose #2766 > > for i = 1 to n do 00:01:38 verbose #2767 > > do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </> 00:01:38 verbose #2768 > > $"file{i}.txt") 00:01:38 verbose #2769 > > 00:01:38 verbose #2770 > > for i = 1 to n do 00:01:38 verbose #2771 > > do! SpiralFileSystem.delete_file_async (path </> $"file{i}.txt") |> 00:01:38 verbose #2772 > > Async.Ignore 00:01:38 verbose #2773 > > 00:01:38 verbose #2774 > > do! Async.Sleep 150 00:01:38 verbose #2775 > > } 00:01:38 verbose #2776 > > 00:01:38 verbose #2777 > > let inline run () = 00:01:38 verbose #2778 > > let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false)) 00:01:38 verbose #2779 > > write 00:01:38 verbose #2780 > > 00:01:38 verbose #2781 > > [[ 00:01:38 verbose #2782 > > "file1.txt", nameof FileSystemChangeType.Created 00:01:38 verbose #2783 > > "file1.txt", nameof FileSystemChangeType.Changed 00:01:38 verbose #2784 > > "file1.txt", nameof FileSystemChangeType.Deleted 00:01:38 verbose #2785 > > 00:01:38 verbose #2786 > > "file2.txt", nameof FileSystemChangeType.Created 00:01:38 verbose #2787 > > "file2.txt", nameof FileSystemChangeType.Changed 00:01:38 verbose #2788 > > "file2.txt", nameof FileSystemChangeType.Deleted 00:01:38 verbose #2789 > > 00:01:38 verbose #2790 > > "file3.txt", nameof FileSystemChangeType.Created 00:01:38 verbose #2791 > > "file3.txt", nameof FileSystemChangeType.Changed 00:01:38 verbose #2792 > > "file3.txt", nameof FileSystemChangeType.Deleted 00:01:38 verbose #2793 > > ]] 00:01:38 verbose #2794 > > |> _sequenceEqual eventList 00:01:38 verbose #2795 > > 00:01:38 verbose #2796 > > [[ 00:01:38 verbose #2797 > > "file1.txt", nameof FileSystemChangeType.Deleted 00:01:38 verbose #2798 > > "file2.txt", nameof FileSystemChangeType.Deleted 00:01:38 verbose #2799 > > "file3.txt", nameof FileSystemChangeType.Deleted 00:01:38 verbose #2800 > > ]] 00:01:38 verbose #2801 > > |> Map.ofList 00:01:38 verbose #2802 > > |> _sequenceEqual eventMap 00:01:38 verbose #2803 > > 00:01:38 verbose #2804 > > run 00:01:38 verbose #2805 > > |> retry_fn 3 00:01:38 verbose #2806 > > |> _assertEqual (Some ()) 00:01:39 verbose #2807 > > 00:01:39 verbose #2808 > > ╭─[ 1.07s - stdout ]───────────────────────────────────────────────────────────╮ 00:01:39 verbose #2809 > > │ Some () │ 00:01:39 verbose #2810 > > │ │ 00:01:39 verbose #2811 > > │ 00:00:17 debug #5 FileSystem.watchWithFilter / Disposing watch stream │ 00:01:39 verbose #2812 > > │ / filter: FileName, LastWrite │ 00:01:39 verbose #2813 > > │ [("file1.txt", "Created"); ("file1.txt", "Changed"); ("file1.txt", │ 00:01:39 verbose #2814 > > │ "Deleted"); ("file2.txt", "Created"); │ 00:01:39 verbose #2815 > > │ ("file2.txt", "Changed"); ("file2.txt", "Deleted"); ("file3.txt", │ 00:01:39 verbose #2816 > > │ "Created"); ("file3.txt", "Changed"); │ 00:01:39 verbose #2817 > > │ ("file3.txt", "Deleted")] │ 00:01:39 verbose #2818 > > │ │ 00:01:39 verbose #2819 > > │ map [("file1.txt", "Deleted"); ("file2.txt", "Deleted"); ("file3.txt", │ 00:01:39 verbose #2820 > > │ "Deleted")] │ 00:01:39 verbose #2821 > > │ │ 00:01:39 verbose #2822 > > │ Some () │ 00:01:39 verbose #2823 > > │ │ 00:01:39 verbose #2824 > > │ │ 00:01:39 verbose #2825 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:39 verbose #2826 > > 00:01:39 verbose #2827 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:39 verbose #2828 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:39 verbose #2829 > > │ #### change (test) │ 00:01:39 verbose #2830 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:39 verbose #2831 > > 00:01:39 verbose #2832 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:39 verbose #2833 > > //// test 00:01:39 verbose #2834 > > 00:01:39 verbose #2835 > > let inline write path = async { 00:01:39 verbose #2836 > > let n = 2 00:01:39 verbose #2837 > > 00:01:39 verbose #2838 > > for i = 1 to n do 00:01:39 verbose #2839 > > do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </> 00:01:39 verbose #2840 > > $"file{i}.txt") 00:01:39 verbose #2841 > > 00:01:39 verbose #2842 > > for i = 1 to n do 00:01:39 verbose #2843 > > do! "" |> SpiralFileSystem.write_all_text_async (path </> 00:01:39 verbose #2844 > > $"file{i}.txt") 00:01:39 verbose #2845 > > 00:01:39 verbose #2846 > > for i = 1 to n do 00:01:39 verbose #2847 > > do! SpiralFileSystem.delete_file_async (path </> $"file{i}.txt") |> 00:01:39 verbose #2848 > > Async.Ignore 00:01:39 verbose #2849 > > 00:01:39 verbose #2850 > > do! Async.Sleep 150 00:01:39 verbose #2851 > > } 00:01:39 verbose #2852 > > 00:01:39 verbose #2853 > > let inline run () = 00:01:39 verbose #2854 > > let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false)) 00:01:39 verbose #2855 > > write 00:01:39 verbose #2856 > > 00:01:39 verbose #2857 > > [[ 00:01:39 verbose #2858 > > "file1.txt", nameof FileSystemChangeType.Created 00:01:39 verbose #2859 > > "file1.txt", nameof FileSystemChangeType.Changed 00:01:39 verbose #2860 > > "file1.txt", nameof FileSystemChangeType.Deleted 00:01:39 verbose #2861 > > 00:01:39 verbose #2862 > > "file2.txt", nameof FileSystemChangeType.Created 00:01:39 verbose #2863 > > "file2.txt", nameof FileSystemChangeType.Changed 00:01:39 verbose #2864 > > "file2.txt", nameof FileSystemChangeType.Deleted 00:01:39 verbose #2865 > > ]] 00:01:39 verbose #2866 > > |> _sequenceEqual eventList 00:01:39 verbose #2867 > > 00:01:39 verbose #2868 > > [[ 00:01:39 verbose #2869 > > "file1.txt", nameof FileSystemChangeType.Deleted 00:01:39 verbose #2870 > > "file2.txt", nameof FileSystemChangeType.Deleted 00:01:39 verbose #2871 > > ]] 00:01:39 verbose #2872 > > |> Map.ofList 00:01:39 verbose #2873 > > |> _sequenceEqual eventMap 00:01:39 verbose #2874 > > 00:01:39 verbose #2875 > > run 00:01:39 verbose #2876 > > |> retry_fn 3 00:01:39 verbose #2877 > > |> _assertEqual (Some ()) 00:01:40 verbose #2878 > > 00:01:40 verbose #2879 > > ╭─[ 1.06s - stdout ]───────────────────────────────────────────────────────────╮ 00:01:40 verbose #2880 > > │ Some () │ 00:01:40 verbose #2881 > > │ │ 00:01:40 verbose #2882 > > │ 00:00:18 debug #6 FileSystem.watchWithFilter / Disposing watch stream │ 00:01:40 verbose #2883 > > │ / filter: FileName, LastWrite │ 00:01:40 verbose #2884 > > │ [("file1.txt", "Created"); ("file1.txt", "Changed"); ("file1.txt", │ 00:01:40 verbose #2885 > > │ "Deleted"); ("file2.txt", "Created"); │ 00:01:40 verbose #2886 > > │ ("file2.txt", "Changed"); ("file2.txt", "Deleted")] │ 00:01:40 verbose #2887 > > │ │ 00:01:40 verbose #2888 > > │ map [("file1.txt", "Deleted"); ("file2.txt", "Deleted")] │ 00:01:40 verbose #2889 > > │ │ 00:01:40 verbose #2890 > > │ Some () │ 00:01:40 verbose #2891 > > │ │ 00:01:40 verbose #2892 > > │ │ 00:01:40 verbose #2893 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:40 verbose #2894 > > 00:01:40 verbose #2895 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:40 verbose #2896 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:40 verbose #2897 > > │ #### rename (test) │ 00:01:40 verbose #2898 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:40 verbose #2899 > > 00:01:40 verbose #2900 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:40 verbose #2901 > > //// test 00:01:40 verbose #2902 > > 00:01:40 verbose #2903 > > let inline write path = async { 00:01:40 verbose #2904 > > let n = 2 00:01:40 verbose #2905 > > 00:01:40 verbose #2906 > > for i = 1 to n do 00:01:40 verbose #2907 > > do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </> 00:01:40 verbose #2908 > > $"file{i}.txt") 00:01:40 verbose #2909 > > 00:01:40 verbose #2910 > > for i = 1 to n do 00:01:40 verbose #2911 > > do! path </> $"file{i}.txt" |> SpiralFileSystem.move_file_async (path 00:01:40 verbose #2912 > > </> $"file_{i}.txt") |> Async.Ignore 00:01:40 verbose #2913 > > 00:01:40 verbose #2914 > > for i = 1 to n do 00:01:40 verbose #2915 > > do! SpiralFileSystem.delete_file_async (path </> $"file_{i}.txt") |> 00:01:40 verbose #2916 > > Async.Ignore 00:01:40 verbose #2917 > > 00:01:40 verbose #2918 > > do! Async.Sleep 150 00:01:40 verbose #2919 > > } 00:01:40 verbose #2920 > > 00:01:40 verbose #2921 > > let inline run () = 00:01:40 verbose #2922 > > let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false)) 00:01:40 verbose #2923 > > write 00:01:40 verbose #2924 > > 00:01:40 verbose #2925 > > [[ 00:01:40 verbose #2926 > > "file1.txt", nameof FileSystemChangeType.Created 00:01:40 verbose #2927 > > "file1.txt", nameof FileSystemChangeType.Changed 00:01:40 verbose #2928 > > "file2.txt", nameof FileSystemChangeType.Created 00:01:40 verbose #2929 > > "file2.txt", nameof FileSystemChangeType.Changed 00:01:40 verbose #2930 > > 00:01:40 verbose #2931 > > "file_1.txt", nameof FileSystemChangeType.Renamed 00:01:40 verbose #2932 > > "file_1.txt", nameof FileSystemChangeType.Deleted 00:01:40 verbose #2933 > > 00:01:40 verbose #2934 > > "file_2.txt", nameof FileSystemChangeType.Renamed 00:01:40 verbose #2935 > > "file_2.txt", nameof FileSystemChangeType.Deleted 00:01:40 verbose #2936 > > ]] 00:01:40 verbose #2937 > > |> _sequenceEqual eventList 00:01:40 verbose #2938 > > 00:01:40 verbose #2939 > > [[ 00:01:40 verbose #2940 > > "file1.txt", nameof FileSystemChangeType.Changed 00:01:40 verbose #2941 > > "file2.txt", nameof FileSystemChangeType.Changed 00:01:40 verbose #2942 > > "file_1.txt", nameof FileSystemChangeType.Deleted 00:01:40 verbose #2943 > > "file_2.txt", nameof FileSystemChangeType.Deleted 00:01:40 verbose #2944 > > ]] 00:01:40 verbose #2945 > > |> Map.ofList 00:01:40 verbose #2946 > > |> _sequenceEqual eventMap 00:01:40 verbose #2947 > > 00:01:40 verbose #2948 > > run 00:01:40 verbose #2949 > > |> retry_fn 3 00:01:40 verbose #2950 > > |> _assertEqual (Some ()) 00:01:42 verbose #2951 > > 00:01:42 verbose #2952 > > ╭─[ 1.11s - stdout ]───────────────────────────────────────────────────────────╮ 00:01:42 verbose #2953 > > │ Some () │ 00:01:42 verbose #2954 > > │ │ 00:01:42 verbose #2955 > > │ 00:00:19 debug #7 FileSystem.watchWithFilter / Disposing watch stream │ 00:01:42 verbose #2956 > > │ / filter: FileName, LastWrite │ 00:01:42 verbose #2957 > > │ [("file1.txt", "Created"); ("file1.txt", "Changed"); ("file2.txt", │ 00:01:42 verbose #2958 > > │ "Created"); ("file2.txt", "Changed"); │ 00:01:42 verbose #2959 > > │ ("file_1.txt", "Renamed"); ("file_1.txt", "Deleted"); ("file_2.txt", │ 00:01:42 verbose #2960 > > │ "Renamed"); ("file_2.txt", "Deleted")] │ 00:01:42 verbose #2961 > > │ │ 00:01:42 verbose #2962 > > │ map [("file1.txt", "Changed"); ("file2.txt", "Changed"); ("file_1.txt", │ 00:01:42 verbose #2963 > > │ "Deleted"); ("file_2.txt", "Deleted")] │ 00:01:42 verbose #2964 > > │ │ 00:01:42 verbose #2965 > > │ Some () │ 00:01:42 verbose #2966 > > │ │ 00:01:42 verbose #2967 > > │ │ 00:01:42 verbose #2968 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:42 verbose #2969 > > 00:01:42 verbose #2970 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:42 verbose #2971 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:42 verbose #2972 > > │ #### full (test) │ 00:01:42 verbose #2973 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:42 verbose #2974 > > 00:01:42 verbose #2975 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:42 verbose #2976 > > //// test 00:01:42 verbose #2977 > > 00:01:42 verbose #2978 > > let inline write path = async { 00:01:42 verbose #2979 > > let n = 2 00:01:42 verbose #2980 > > 00:01:42 verbose #2981 > > for i = 1 to n do 00:01:42 verbose #2982 > > do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </> 00:01:42 verbose #2983 > > $"file{i}.txt") 00:01:42 verbose #2984 > > 00:01:42 verbose #2985 > > for i = 1 to n do 00:01:42 verbose #2986 > > do! "" |> SpiralFileSystem.write_all_text_async (path </> 00:01:42 verbose #2987 > > $"file{i}.txt") 00:01:42 verbose #2988 > > 00:01:42 verbose #2989 > > for i = 1 to n do 00:01:42 verbose #2990 > > do! path </> $"file{i}.txt" |> SpiralFileSystem.move_file_async (path 00:01:42 verbose #2991 > > </> $"file_{i}.txt") |> Async.Ignore 00:01:42 verbose #2992 > > 00:01:42 verbose #2993 > > for i = 1 to n do 00:01:42 verbose #2994 > > do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </> 00:01:42 verbose #2995 > > $"file_{i}.txt") 00:01:42 verbose #2996 > > 00:01:42 verbose #2997 > > for i = 1 to n do 00:01:42 verbose #2998 > > do! SpiralFileSystem.delete_file_async (path </> $"file_{i}.txt") |> 00:01:42 verbose #2999 > > Async.Ignore 00:01:42 verbose #3000 > > 00:01:42 verbose #3001 > > do! Async.Sleep 150 00:01:42 verbose #3002 > > } 00:01:42 verbose #3003 > > 00:01:42 verbose #3004 > > let inline run () = 00:01:42 verbose #3005 > > let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false)) 00:01:42 verbose #3006 > > write 00:01:42 verbose #3007 > > 00:01:42 verbose #3008 > > [[ 00:01:42 verbose #3009 > > "file1.txt", nameof FileSystemChangeType.Created 00:01:42 verbose #3010 > > "file1.txt", nameof FileSystemChangeType.Changed 00:01:42 verbose #3011 > > "file2.txt", nameof FileSystemChangeType.Created 00:01:42 verbose #3012 > > "file2.txt", nameof FileSystemChangeType.Changed 00:01:42 verbose #3013 > > 00:01:42 verbose #3014 > > "file_1.txt", nameof FileSystemChangeType.Changed 00:01:42 verbose #3015 > > "file_1.txt", nameof FileSystemChangeType.Renamed 00:01:42 verbose #3016 > > "file_1.txt", nameof FileSystemChangeType.Deleted 00:01:42 verbose #3017 > > 00:01:42 verbose #3018 > > "file_2.txt", nameof FileSystemChangeType.Changed 00:01:42 verbose #3019 > > "file_2.txt", nameof FileSystemChangeType.Renamed 00:01:42 verbose #3020 > > "file_2.txt", nameof FileSystemChangeType.Deleted 00:01:42 verbose #3021 > > ]] 00:01:42 verbose #3022 > > |> _sequenceEqual eventList 00:01:42 verbose #3023 > > 00:01:42 verbose #3024 > > [[ 00:01:42 verbose #3025 > > "file1.txt", nameof FileSystemChangeType.Changed 00:01:42 verbose #3026 > > "file2.txt", nameof FileSystemChangeType.Changed 00:01:42 verbose #3027 > > "file_1.txt", nameof FileSystemChangeType.Deleted 00:01:42 verbose #3028 > > "file_2.txt", nameof FileSystemChangeType.Deleted 00:01:42 verbose #3029 > > ]] 00:01:42 verbose #3030 > > |> Map.ofList 00:01:42 verbose #3031 > > |> _sequenceEqual eventMap 00:01:42 verbose #3032 > > 00:01:42 verbose #3033 > > run 00:01:42 verbose #3034 > > |> retry_fn 3 00:01:42 verbose #3035 > > |> _assertEqual (Some ()) 00:01:43 verbose #3036 > > 00:01:43 verbose #3037 > > ╭─[ 1.22s - stdout ]───────────────────────────────────────────────────────────╮ 00:01:43 verbose #3038 > > │ Some () │ 00:01:43 verbose #3039 > > │ │ 00:01:43 verbose #3040 > > │ 00:00:20 debug #8 FileSystem.watchWithFilter / Disposing watch stream │ 00:01:43 verbose #3041 > > │ / filter: FileName, LastWrite │ 00:01:43 verbose #3042 > > │ [("file1.txt", "Created"); ("file1.txt", "Changed"); ("file2.txt", │ 00:01:43 verbose #3043 > > │ "Created"); ("file2.txt", "Changed"); │ 00:01:43 verbose #3044 > > │ ("file_1.txt", "Changed"); ("file_1.txt", "Renamed"); ("file_1.txt", │ 00:01:43 verbose #3045 > > │ "Deleted"); ("file_2.txt", "Changed"); │ 00:01:43 verbose #3046 > > │ ("file_2.txt", "Renamed"); ("file_2.txt", "Deleted")] │ 00:01:43 verbose #3047 > > │ │ 00:01:43 verbose #3048 > > │ map [("file1.txt", "Changed"); ("file2.txt", "Changed"); ("file_1.txt", │ 00:01:43 verbose #3049 > > │ "Deleted"); ("file_2.txt", "Deleted")] │ 00:01:43 verbose #3050 > > │ │ 00:01:43 verbose #3051 > > │ Some () │ 00:01:43 verbose #3052 > > │ │ 00:01:43 verbose #3053 > > │ │ 00:01:43 verbose #3054 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:43 verbose #3055 > 00:00:35 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 164934 } 00:01:43 verbose #3056 > 00:00:35 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:01:43 verbose #3057 > "nbconvert", 00:01:43 verbose #3058 > "/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.ipynb", 00:01:43 verbose #3059 > "--to", 00:01:43 verbose #3060 > "html", 00:01:43 verbose #3061 > "--HTMLExporter.theme=dark", 00:01:43 verbose #3062 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:44 verbose #3063 > 00:00:36 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.ipynb to html 00:01:44 verbose #3064 > 00:00:36 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:01:44 verbose #3065 > 00:00:36 verbose #7 ! validate(nb) 00:01:44 verbose #3066 > 00:00:36 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:01:44 verbose #3067 > 00:00:36 verbose #9 ! return _pygments_highlight( 00:01:45 verbose #3068 > 00:00:37 verbose #10 ! [NbConvertApp] Writing 441354 bytes to /home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.html 00:01:45 verbose #3069 > 00:00:37 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 904 } 00:01:45 verbose #3070 > 00:00:37 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 904 } 00:01:45 verbose #3071 > 00:00:37 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:01:45 verbose #3072 > "-c", 00:01:45 verbose #3073 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:01:45 verbose #3074 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:45 verbose #3075 > 00:00:37 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:01:45 verbose #3076 > 00:00:37 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:01:45 verbose #3077 > 00:00:37 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 165897 } 00:01:45 debug #3078 runtime.execute_with_options_async / { exit_code = 0; output_length = 172889 } 00:01:45 debug #5 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path FileSystem.dib --retries 3 00:01:45 debug #3079 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path Runtime.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:45 verbose #3080 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Runtime.dib", "--retries", "3"])) } 00:01:45 verbose #3081 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:01:45 verbose #3082 > "repl", 00:01:45 verbose #3083 > "--exit-after-run", 00:01:45 verbose #3084 > "--run", 00:01:45 verbose #3085 > "/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib", 00:01:45 verbose #3086 > "--output-path", 00:01:45 verbose #3087 > "/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.ipynb", 00:01:45 verbose #3088 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:01:46 verbose #3089 > > 00:01:46 verbose #3090 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:46 verbose #3091 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:46 verbose #3092 > > │ # Runtime (Polyglot) │ 00:01:46 verbose #3093 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:49 verbose #3094 > > 00:01:49 verbose #3095 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:49 verbose #3096 > > #r 00:01:49 verbose #3097 > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan 00:01:49 verbose #3098 > > dard2.1/FSharp.Control.AsyncSeq.dll" 00:01:49 verbose #3099 > > #r 00:01:49 verbose #3100 > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. 00:01:49 verbose #3101 > > 0/System.Reactive.dll" 00:01:49 verbose #3102 > > #r 00:01:49 verbose #3103 > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib 00:01:49 verbose #3104 > > netstandard2.0/System.Reactive.Linq.dll" 00:01:49 verbose #3105 > > #r 00:01:49 verbose #3106 > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" 00:02:01 verbose #3107 > > 00:02:01 verbose #3108 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:02:01 verbose #3109 > > #if !INTERACTIVE 00:02:01 verbose #3110 > > open Lib 00:02:01 verbose #3111 > > #endif 00:02:01 verbose #3112 > > 00:02:01 verbose #3113 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:02:01 verbose #3114 > > open Common 00:02:01 verbose #3115 > > 00:02:01 verbose #3116 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:02:01 verbose #3117 > > //// test 00:02:01 verbose #3118 > > 00:02:01 verbose #3119 > > open SpiralFileSystem.Operators 00:02:01 verbose #3120 > > 00:02:01 verbose #3121 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:01 verbose #3122 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:01 verbose #3123 > > │ ## parseArgs │ 00:02:01 verbose #3124 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:01 verbose #3125 > > 00:02:01 verbose #3126 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:02:01 verbose #3127 > > let inline parseArgs<'T when 'T :> Argu.IArgParserTemplate> args = 00:02:01 verbose #3128 > > let assemblyName = 00:02:01 verbose #3129 > > System.Reflection.Assembly.GetEntryAssembly().GetName().Name 00:02:01 verbose #3130 > > let errorHandler : Argu.IExiter = 00:02:01 verbose #3131 > > if [[ "Microsoft.DotNet.Interactive.App"; "dotnet-repl" ]] |> 00:02:01 verbose #3132 > > List.contains assemblyName 00:02:01 verbose #3133 > > then Argu.ExceptionExiter () 00:02:01 verbose #3134 > > else Argu.ProcessExiter (function Argu.ErrorCode.HelpText -> None | _ -> 00:02:01 verbose #3135 > > Some System.ConsoleColor.Red) 00:02:01 verbose #3136 > > 00:02:01 verbose #3137 > > let parser = 00:02:01 verbose #3138 > > Argu.ArgumentParser.Create<'T> ( 00:02:01 verbose #3139 > > programName = $"{assemblyName}{SpiralPlatform.get_executable_suffix 00:02:01 verbose #3140 > > ()}", 00:02:01 verbose #3141 > > errorHandler = errorHandler 00:02:01 verbose #3142 > > ) 00:02:01 verbose #3143 > > 00:02:01 verbose #3144 > > parser.ParseCommandLine args 00:02:01 verbose #3145 > > 00:02:01 verbose #3146 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:02:01 verbose #3147 > > //// test 00:02:01 verbose #3148 > > 00:02:01 verbose #3149 > > [[<RequireQualifiedAccess>]] 00:02:01 verbose #3150 > > type Arguments = 00:02:01 verbose #3151 > > | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.ExactlyOnce; 00:02:01 verbose #3152 > > Argu.ArguAttributes.Last>]] 00:02:01 verbose #3153 > > Paths of paths : string list 00:02:01 verbose #3154 > > 00:02:01 verbose #3155 > > interface Argu.IArgParserTemplate with 00:02:01 verbose #3156 > > member s.Usage = 00:02:01 verbose #3157 > > match s with 00:02:01 verbose #3158 > > | Paths _ -> nameof Paths 00:02:01 verbose #3159 > > 00:02:01 verbose #3160 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:02:01 verbose #3161 > > //// test 00:02:01 verbose #3162 > > 00:02:01 verbose #3163 > > Argu.ArgumentParser.Create<Arguments>().PrintUsage () 00:02:01 verbose #3164 > > 00:02:01 verbose #3165 > > ╭─[ 90.81ms - return value ]───────────────────────────────────────────────────╮ 00:02:01 verbose #3166 > > │ "USAGE: dotnet-repl [--help] <paths>... │ 00:02:01 verbose #3167 > > │ │ 00:02:01 verbose #3168 > > │ PATHS: │ 00:02:01 verbose #3169 > > │ │ 00:02:01 verbose #3170 > > │ <paths>... Paths │ 00:02:01 verbose #3171 > > │ │ 00:02:01 verbose #3172 > > │ OPTIONS: │ 00:02:01 verbose #3173 > > │ │ 00:02:01 verbose #3174 > > │ --help display this list of options. │ 00:02:01 verbose #3175 > > │ " │ 00:02:01 verbose #3176 > > │ │ 00:02:01 verbose #3177 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:01 verbose #3178 > > 00:02:01 verbose #3179 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:02:01 verbose #3180 > > //// test 00:02:01 verbose #3181 > > 00:02:01 verbose #3182 > > fun () -> parseArgs<Arguments> [[||]] |> ignore 00:02:01 verbose #3183 > > |> _throwsC (fun ex _ -> 00:02:01 verbose #3184 > > SpiralSm.format_exception ex 00:02:01 verbose #3185 > > |> _stringContains "Argu.ArguParseException: ERROR: missing parameter 00:02:01 verbose #3186 > > '<paths>...'." 00:02:01 verbose #3187 > > ) 00:02:01 verbose #3188 > > 00:02:01 verbose #3189 > > ╭─[ 65.64ms - stdout ]─────────────────────────────────────────────────────────╮ 00:02:01 verbose #3190 > > │ <fun:it@3-3> │ 00:02:01 verbose #3191 > > │ │ 00:02:01 verbose #3192 > > │ "Argu.ArguParseException: ERROR: missing parameter '<paths>...'. │ 00:02:01 verbose #3193 > > │ USAGE: dotnet-repl [--help] <paths>... │ 00:02:01 verbose #3194 > > │ │ 00:02:01 verbose #3195 > > │ PATHS: │ 00:02:01 verbose #3196 > > │ │ 00:02:01 verbose #3197 > > │ <paths>... Paths │ 00:02:01 verbose #3198 > > │ │ 00:02:01 verbose #3199 > > │ OPTIONS: │ 00:02:01 verbose #3200 > > │ │ 00:02:01 verbose #3201 > > │ --help display this list of options. │ 00:02:01 verbose #3202 > > │ " │ 00:02:01 verbose #3203 > > │ │ 00:02:01 verbose #3204 > > │ │ 00:02:01 verbose #3205 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:01 verbose #3206 > > 00:02:01 verbose #3207 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:02:01 verbose #3208 > > let inline parseAllArgs<'T when 'T :> Argu.IArgParserTemplate> args = 00:02:01 verbose #3209 > > args 00:02:01 verbose #3210 > > |> parseArgs<'T> 00:02:01 verbose #3211 > > |> fun results -> results.GetAllResults () 00:02:01 verbose #3212 > > 00:02:01 verbose #3213 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:02:01 verbose #3214 > > //// test 00:02:01 verbose #3215 > > 00:02:01 verbose #3216 > > [[<RequireQualifiedAccess>]] 00:02:01 verbose #3217 > > type Arguments = 00:02:01 verbose #3218 > > | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.ExactlyOnce; 00:02:01 verbose #3219 > > Argu.ArguAttributes.Last>]] 00:02:01 verbose #3220 > > Paths of paths : string list 00:02:01 verbose #3221 > > 00:02:01 verbose #3222 > > interface Argu.IArgParserTemplate with 00:02:01 verbose #3223 > > member s.Usage = 00:02:01 verbose #3224 > > match s with 00:02:01 verbose #3225 > > | Paths _ -> nameof Paths 00:02:01 verbose #3226 > > 00:02:01 verbose #3227 > > parseAllArgs<Arguments> [[| "a b"; "c" |]] 00:02:01 verbose #3228 > > |> _assertEqual [[ Arguments.Paths [[ "a b"; "c" ]] ]] 00:02:01 verbose #3229 > > 00:02:01 verbose #3230 > > ╭─[ 57.29ms - stdout ]─────────────────────────────────────────────────────────╮ 00:02:01 verbose #3231 > > │ [Paths ["a b"; "c"]] │ 00:02:01 verbose #3232 > > │ │ 00:02:01 verbose #3233 > > │ │ 00:02:01 verbose #3234 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:01 verbose #3235 > > 00:02:01 verbose #3236 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:02:01 verbose #3237 > > let inline parseArgsMap<'T when 'T :> Argu.IArgParserTemplate> args = 00:02:01 verbose #3238 > > args 00:02:01 verbose #3239 > > |> parseAllArgs<'T> 00:02:01 verbose #3240 > > |> List.groupBy CommonFSharp.getUnionCaseName<'T> 00:02:01 verbose #3241 > > |> Map.ofList 00:02:01 verbose #3242 > > 00:02:01 verbose #3243 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:02:01 verbose #3244 > > //// test 00:02:01 verbose #3245 > > 00:02:01 verbose #3246 > > parseArgsMap<Arguments> [[| "a b"; "c" |]] 00:02:01 verbose #3247 > > |> _assertEqual ( 00:02:01 verbose #3248 > > [[ nameof Arguments.Paths, [[ Arguments.Paths [[ "a b"; "c" ]] ]] ]] 00:02:01 verbose #3249 > > |> Map.ofList 00:02:01 verbose #3250 > > ) 00:02:01 verbose #3251 > > 00:02:01 verbose #3252 > > ╭─[ 29.92ms - stdout ]─────────────────────────────────────────────────────────╮ 00:02:01 verbose #3253 > > │ map [("Paths", [Paths ["a b"; "c"]])] │ 00:02:01 verbose #3254 > > │ │ 00:02:01 verbose #3255 > > │ │ 00:02:01 verbose #3256 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:01 verbose #3257 > 00:00:16 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 8856 } 00:02:01 verbose #3258 > 00:00:16 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:02:01 verbose #3259 > "nbconvert", 00:02:01 verbose #3260 > "/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.ipynb", 00:02:01 verbose #3261 > "--to", 00:02:01 verbose #3262 > "html", 00:02:01 verbose #3263 > "--HTMLExporter.theme=dark", 00:02:01 verbose #3264 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:02 verbose #3265 > 00:00:16 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.ipynb to html 00:02:02 verbose #3266 > 00:00:16 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:02:02 verbose #3267 > 00:00:16 verbose #7 ! validate(nb) 00:02:02 verbose #3268 > 00:00:17 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:02:02 verbose #3269 > 00:00:17 verbose #9 ! return _pygments_highlight( 00:02:02 verbose #3270 > 00:00:17 verbose #10 ! [NbConvertApp] Writing 292914 bytes to /home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.html 00:02:02 verbose #3271 > 00:00:17 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 } 00:02:02 verbose #3272 > 00:00:17 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 } 00:02:02 verbose #3273 > 00:00:17 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:02:02 verbose #3274 > "-c", 00:02:02 verbose #3275 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:02:02 verbose #3276 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:03 verbose #3277 > 00:00:17 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:02:03 verbose #3278 > 00:00:17 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:02:03 verbose #3279 > 00:00:17 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 9813 } 00:02:03 debug #3280 runtime.execute_with_options_async / { exit_code = 0; output_length = 13000 } 00:02:03 debug #6 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path Runtime.dib --retries 3 00:00:00 debug #1 writeDibCode / output: Fs / path: Common.dib 00:00:00 debug #1 writeDibCode / output: Fs / path: CommonFSharp.dib 00:00:00 debug #1 writeDibCode / output: Fs / path: Async.dib 00:00:00 debug #1 writeDibCode / output: Fs / path: AsyncSeq.dib 00:00:00 debug #3 parseDibCode / output: Fs / file: CommonFSharp.dib 00:00:00 debug #5 parseDibCode / output: Fs / file: Async.dib 00:00:00 debug #3 parseDibCode / output: Fs / file: Common.dib 00:00:00 debug #5 parseDibCode / output: Fs / file: AsyncSeq.dib 00:00:00 debug #7 writeDibCode / output: Fs / path: Runtime.dib 00:00:00 debug #7 writeDibCode / output: Fs / path: FileSystem.dib 00:00:00 debug #9 parseDibCode / output: Fs / file: FileSystem.dib 00:00:00 debug #9 parseDibCode / output: Fs / file: Runtime.dib
In [ ]:
{ pwsh ../apps/spiral/builder/build.ps1 } | Invoke-Block
00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 debug #1 runtime.execute_with_options_async / { options = { command = ../../../workspace/target/release/spiral_builder dib --path spiral_builder.dib; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:00 verbose #2 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "spiral_builder.dib"])) } 00:00:00 verbose #3 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:00:00 verbose #4 > "repl", 00:00:00 verbose #5 > "--exit-after-run", 00:00:00 verbose #6 > "--run", 00:00:00 verbose #7 > "/home/runner/work/polyglot/polyglot/apps/spiral/builder/spiral_builder.dib", 00:00:00 verbose #8 > "--output-path", 00:00:00 verbose #9 > "/home/runner/work/polyglot/polyglot/apps/spiral/builder/spiral_builder.dib.ipynb", 00:00:00 verbose #10 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/builder/spiral_builder.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/builder/spiral_builder.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:01 verbose #11 > > 00:00:01 verbose #12 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:01 verbose #13 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:01 verbose #14 > > │ # spiral_builder │ 00:00:01 verbose #15 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:04 verbose #16 > > 00:00:04 verbose #17 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:04 verbose #18 > > open file_system_operators 00:00:04 verbose #19 > > open rust.rust_operators 00:00:04 verbose #20 > > open rust 00:00:04 verbose #21 > > open sm'_operators 00:00:05 verbose #22 > > 00:00:05 verbose #23 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #24 > > //// test 00:00:05 verbose #25 > > 00:00:05 verbose #26 > > open testing 00:00:05 verbose #27 > > 00:00:05 verbose #28 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:05 verbose #29 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:05 verbose #30 > > │ ## get_args │ 00:00:05 verbose #31 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 verbose #32 > > 00:00:05 verbose #33 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #34 > > inl get_args () = 00:00:05 verbose #35 > > { 00:00:05 verbose #36 > > fsharp = "fsharp", { 00:00:05 verbose #37 > > spi_path = "spi-path", 's' 00:00:05 verbose #38 > > } 00:00:05 verbose #39 > > cuda = "cuda", { 00:00:05 verbose #40 > > py_path = "py-path", 'p' 00:00:05 verbose #41 > > env = "env", 'e' 00:00:05 verbose #42 > > deps = "deps", 'd' 00:00:05 verbose #43 > > } 00:00:05 verbose #44 > > fable = "fable", { 00:00:05 verbose #45 > > fs_path = "fs-path", 'f' 00:00:05 verbose #46 > > command = "command", 'c' 00:00:05 verbose #47 > > } 00:00:05 verbose #48 > > rust = "rust", { 00:00:05 verbose #49 > > fs_path = "fs-path", 'f' 00:00:05 verbose #50 > > deps = "deps", 'd' 00:00:05 verbose #51 > > wasm = "wasm", 'w' 00:00:05 verbose #52 > > contract = "contract", 'c' 00:00:05 verbose #53 > > } 00:00:05 verbose #54 > > typescript = "typescript", { 00:00:05 verbose #55 > > fs_path = "fs-path", 'f' 00:00:05 verbose #56 > > deps = "deps", 'd' 00:00:05 verbose #57 > > } 00:00:05 verbose #58 > > python = "python", { 00:00:05 verbose #59 > > fs_path = "fs-path", 'f' 00:00:05 verbose #60 > > deps = "deps", 'd' 00:00:05 verbose #61 > > } 00:00:05 verbose #62 > > dib = "dib", { 00:00:05 verbose #63 > > path = "path", 'p' 00:00:05 verbose #64 > > retries = "retries", 'r' 00:00:05 verbose #65 > > working_directory = "working-directory", 'w' 00:00:05 verbose #66 > > } 00:00:05 verbose #67 > > } 00:00:05 verbose #68 > > 00:00:05 verbose #69 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:05 verbose #70 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:05 verbose #71 > > │ ## cuda_env │ 00:00:05 verbose #72 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 verbose #73 > > 00:00:05 verbose #74 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #75 > > union cuda_env = 00:00:05 verbose #76 > > | Pip 00:00:05 verbose #77 > > | Poetry 00:00:05 verbose #78 > > 00:00:05 verbose #79 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:05 verbose #80 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:05 verbose #81 > > │ ## get_command │ 00:00:05 verbose #82 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 verbose #83 > > 00:00:05 verbose #84 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #85 > > let get_command () = 00:00:05 verbose #86 > > ##"command" 00:00:05 verbose #87 > > |> runtime.new_command 00:00:05 verbose #88 > > |> runtime.command_subcommand_required true 00:00:05 verbose #89 > > |> runtime.command_subcommand ( 00:00:05 verbose #90 > > ##(get_args () .fsharp |> fst) 00:00:05 verbose #91 > > |> runtime.new_command 00:00:05 verbose #92 > > |> runtime.command_init_arg ((get_args () .fsharp |> snd).spi_path) ( 00:00:05 verbose #93 > > runtime.arg_required true 00:00:05 verbose #94 > > ) 00:00:05 verbose #95 > > ) 00:00:05 verbose #96 > > |> runtime.command_subcommand ( 00:00:05 verbose #97 > > ##(get_args () .cuda |> fst) 00:00:05 verbose #98 > > |> runtime.new_command 00:00:05 verbose #99 > > |> runtime.command_init_arg ((get_args () .cuda |> snd).py_path) ( 00:00:05 verbose #100 > > runtime.arg_required true 00:00:05 verbose #101 > > ) 00:00:05 verbose #102 > > |> runtime.command_init_arg ((get_args () .cuda |> snd).env) ( 00:00:05 verbose #103 > > real runtime.arg_union `cuda_env ignore 00:00:05 verbose #104 > > ) 00:00:05 verbose #105 > > |> runtime.command_init_arg ((get_args () .cuda |> snd).deps) ( 00:00:05 verbose #106 > > runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]] 00:00:05 verbose #107 > > >> runtime.arg_num_args_range ( 00:00:05 verbose #108 > > runtime.new_value_range 00:00:05 verbose #109 > > false 00:00:05 verbose #110 > > (am'.Start (1i32 |> convert : unativeint)) 00:00:05 verbose #111 > > (am'.End id) 00:00:05 verbose #112 > > ) 00:00:05 verbose #113 > > >> runtime.arg_action runtime.Append 00:00:05 verbose #114 > > ) 00:00:05 verbose #115 > > ) 00:00:05 verbose #116 > > |> runtime.command_subcommand ( 00:00:05 verbose #117 > > ##(get_args () .fable |> fst) 00:00:05 verbose #118 > > |> runtime.new_command 00:00:05 verbose #119 > > |> runtime.command_init_arg ((get_args () .fable |> snd).fs_path) ( 00:00:05 verbose #120 > > runtime.arg_required true 00:00:05 verbose #121 > > ) 00:00:05 verbose #122 > > |> runtime.command_init_arg ((get_args () .fable |> snd).command) ( 00:00:05 verbose #123 > > id 00:00:05 verbose #124 > > ) 00:00:05 verbose #125 > > ) 00:00:05 verbose #126 > > |> runtime.command_subcommand ( 00:00:05 verbose #127 > > ##(get_args () .rust |> fst) 00:00:05 verbose #128 > > |> runtime.new_command 00:00:05 verbose #129 > > |> runtime.command_init_arg ((get_args () .rust |> snd).fs_path) ( 00:00:05 verbose #130 > > runtime.arg_required true 00:00:05 verbose #131 > > ) 00:00:05 verbose #132 > > |> runtime.command_init_arg ((get_args () .rust |> snd).deps) ( 00:00:05 verbose #133 > > runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]] 00:00:05 verbose #134 > > >> runtime.arg_num_args_range ( 00:00:05 verbose #135 > > runtime.new_value_range 00:00:05 verbose #136 > > false 00:00:05 verbose #137 > > (am'.Start (1i32 |> convert : unativeint)) 00:00:05 verbose #138 > > (am'.End id) 00:00:05 verbose #139 > > ) 00:00:05 verbose #140 > > >> runtime.arg_action runtime.Append 00:00:05 verbose #141 > > ) 00:00:05 verbose #142 > > |> runtime.command_init_arg ((get_args () .rust |> snd).wasm) ( 00:00:05 verbose #143 > > runtime.arg_num_args_range ( 00:00:05 verbose #144 > > runtime.new_value_range 00:00:05 verbose #145 > > true 00:00:05 verbose #146 > > (am'.End id) 00:00:05 verbose #147 > > (am'.End fun _ => (1i32 |> convert : unativeint)) 00:00:05 verbose #148 > > ) 00:00:05 verbose #149 > > >> runtime.arg_require_equals true 00:00:05 verbose #150 > > >> runtime.arg_default_missing_value "" 00:00:05 verbose #151 > > ) 00:00:05 verbose #152 > > |> runtime.command_init_arg ((get_args () .rust |> snd).contract) ( 00:00:05 verbose #153 > > runtime.arg_num_args_range ( 00:00:05 verbose #154 > > runtime.new_value_range 00:00:05 verbose #155 > > true 00:00:05 verbose #156 > > (am'.End id) 00:00:05 verbose #157 > > (am'.End fun _ => (1i32 |> convert : unativeint)) 00:00:05 verbose #158 > > ) 00:00:05 verbose #159 > > >> runtime.arg_require_equals true 00:00:05 verbose #160 > > >> runtime.arg_default_missing_value "" 00:00:05 verbose #161 > > ) 00:00:05 verbose #162 > > ) 00:00:05 verbose #163 > > |> runtime.command_subcommand ( 00:00:05 verbose #164 > > ##(get_args () .typescript |> fst) 00:00:05 verbose #165 > > |> runtime.new_command 00:00:05 verbose #166 > > |> runtime.command_init_arg ((get_args () .typescript |> snd).fs_path) ( 00:00:05 verbose #167 > > runtime.arg_required true 00:00:05 verbose #168 > > ) 00:00:05 verbose #169 > > |> runtime.command_init_arg ((get_args () .typescript |> snd).deps) ( 00:00:05 verbose #170 > > runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]] 00:00:05 verbose #171 > > >> runtime.arg_num_args_range ( 00:00:05 verbose #172 > > runtime.new_value_range 00:00:05 verbose #173 > > false 00:00:05 verbose #174 > > (am'.Start (1i32 |> convert : unativeint)) 00:00:05 verbose #175 > > (am'.End id) 00:00:05 verbose #176 > > ) 00:00:05 verbose #177 > > >> runtime.arg_action runtime.Append 00:00:05 verbose #178 > > ) 00:00:05 verbose #179 > > ) 00:00:05 verbose #180 > > |> runtime.command_subcommand ( 00:00:05 verbose #181 > > ##(get_args () .python |> fst) 00:00:05 verbose #182 > > |> runtime.new_command 00:00:05 verbose #183 > > |> runtime.command_init_arg ((get_args () .python |> snd).fs_path) ( 00:00:05 verbose #184 > > runtime.arg_required true 00:00:05 verbose #185 > > ) 00:00:05 verbose #186 > > |> runtime.command_init_arg ((get_args () .python |> snd).deps) ( 00:00:05 verbose #187 > > runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]] 00:00:05 verbose #188 > > >> runtime.arg_num_args_range ( 00:00:05 verbose #189 > > runtime.new_value_range 00:00:05 verbose #190 > > false 00:00:05 verbose #191 > > (am'.Start (1i32 |> convert : unativeint)) 00:00:05 verbose #192 > > (am'.End id) 00:00:05 verbose #193 > > ) 00:00:05 verbose #194 > > >> runtime.arg_action runtime.Append 00:00:05 verbose #195 > > ) 00:00:05 verbose #196 > > ) 00:00:05 verbose #197 > > |> runtime.command_subcommand ( 00:00:05 verbose #198 > > ##(get_args () .dib |> fst) 00:00:05 verbose #199 > > |> runtime.new_command 00:00:05 verbose #200 > > |> runtime.command_init_arg ((get_args () .dib |> snd).path) ( 00:00:05 verbose #201 > > runtime.arg_required true 00:00:05 verbose #202 > > // >> runtime.arg_value_parser (runtime.value_parser_path_buf ()) 00:00:05 verbose #203 > > ) 00:00:05 verbose #204 > > |> runtime.command_init_arg ((get_args () .dib |> snd).retries) ( 00:00:05 verbose #205 > > runtime.arg_value_parser (runtime.value_parser_expr "u8") 00:00:05 verbose #206 > > ) 00:00:05 verbose #207 > > |> runtime.command_init_arg ((get_args () .dib |> 00:00:05 verbose #208 > > snd).working_directory) ( 00:00:05 verbose #209 > > id 00:00:05 verbose #210 > > ) 00:00:05 verbose #211 > > ) 00:00:06 verbose #212 > > 00:00:06 verbose #213 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:06 verbose #214 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:06 verbose #215 > > │ ## fable │ 00:00:06 verbose #216 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 verbose #217 > > 00:00:06 verbose #218 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:06 verbose #219 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:06 verbose #220 > > │ ### fable_target │ 00:00:06 verbose #221 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 verbose #222 > > 00:00:06 verbose #223 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 verbose #224 > > union fable_target = 00:00:06 verbose #225 > > | Rust 00:00:06 verbose #226 > > | TypeScript 00:00:06 verbose #227 > > | Python 00:00:06 verbose #228 > > 00:00:06 verbose #229 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:06 verbose #230 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:06 verbose #231 > > │ ### fable_runtime │ 00:00:06 verbose #232 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 verbose #233 > > 00:00:06 verbose #234 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 verbose #235 > > union fable_runtime = 00:00:06 verbose #236 > > | Wasm : string 00:00:06 verbose #237 > > | Contract : string 00:00:06 verbose #238 > > 00:00:06 verbose #239 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:06 verbose #240 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:06 verbose #241 > > │ ### execute_dotnet_fable │ 00:00:06 verbose #242 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 verbose #243 > > 00:00:06 verbose #244 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 verbose #245 > > let execute_dotnet_fable { workspace_root_external fsproj_path extension 00:00:06 verbose #246 > > package_dir runtime } = 00:00:06 verbose #247 > > open runtime 00:00:06 verbose #248 > > execution_options fun x => { x with 00:00:06 verbose #249 > > command = 00:00:06 verbose #250 > > inl platform = 00:00:06 verbose #251 > > if platform.is_windows () 00:00:06 verbose #252 > > then "_WINDOWS" 00:00:06 verbose #253 > > else "_LINUX" 00:00:06 verbose #254 > > inl platform : string = $'$" --define {!platform}"' 00:00:06 verbose #255 > > inl runtime = 00:00:06 verbose #256 > > match runtime with 00:00:06 verbose #257 > > | Some (runtime : fable_runtime) => 00:00:06 verbose #258 > > inl runtime = runtime |> reflection.union_to_string |> 00:00:06 verbose #259 > > sm'.to_upper 00:00:06 verbose #260 > > $'$" --define {!runtime}"' 00:00:06 verbose #261 > > | None => "" 00:00:06 verbose #262 > > $'$"dotnet fable \\\"{!fsproj_path}\\\" --optimize --lang 00:00:06 verbose #263 > > {!extension} --extension .{!extension} --outDir 00:00:06 verbose #264 > > \\\"{!package_dir}\\\"{!platform}{!runtime}"' 00:00:06 verbose #265 > > working_directory = workspace_root_external |> resultm.box |> 00:00:06 verbose #266 > > resultm.ok' 00:00:06 verbose #267 > > } 00:00:06 verbose #268 > > |> execute_retry 3u8 00:00:06 verbose #269 > > 00:00:06 verbose #270 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:06 verbose #271 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:06 verbose #272 > > │ ### get_package_dir │ 00:00:06 verbose #273 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 verbose #274 > > 00:00:06 verbose #275 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 verbose #276 > > inl get_package_dir { workspace_root target name hash } = 00:00:06 verbose #277 > > inl dir = workspace_root </> "target/spiral_builder" </> name 00:00:06 verbose #278 > > match hash, (target : option fable_target) with 00:00:06 verbose #279 > > | Some hash, Some target => dir </> "packages" </> (target |> 00:00:06 verbose #280 > > reflection.union_to_string) </> hash 00:00:06 verbose #281 > > | _ => dir 00:00:06 verbose #282 > > 00:00:06 verbose #283 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:06 verbose #284 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:06 verbose #285 > > │ ### persist_code_project │ 00:00:06 verbose #286 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 verbose #287 > > 00:00:06 verbose #288 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 verbose #289 > > inl persist_code_project { workspace_root package_dir packages modules name code 00:00:06 verbose #290 > > } = 00:00:06 verbose #291 > > package_dir |> file_system.create_dir |> ignore 00:00:06 verbose #292 > > 00:00:06 verbose #293 > > inl fs_path = package_dir </> $'$"{!name}.fs"' |> file_system.normalize_path 00:00:06 verbose #294 > > code |> file_system.write_all_text_exists fs_path 00:00:06 verbose #295 > > 00:00:06 verbose #296 > > inl modules_code = 00:00:06 verbose #297 > > modules 00:00:06 verbose #298 > > |> listm.map fun path => 00:00:06 verbose #299 > > inl path = workspace_root </> path 00:00:06 verbose #300 > > $'$"<Compile Include=\\\"{!path}\\\" />"' : string 00:00:06 verbose #301 > > |> listm'.box 00:00:06 verbose #302 > > |> seq.of_list' 00:00:06 verbose #303 > > |> sm'.concat "\\n " 00:00:06 verbose #304 > > 00:00:06 verbose #305 > > inl packages_code = 00:00:06 verbose #306 > > packages 00:00:06 verbose #307 > > |> listm.map fun (package : string) => 00:00:06 verbose #308 > > $'$"<PackageReference Include=\\\"{!package}\\\" Version=\\\"*\\\" 00:00:06 verbose #309 > > />"' : string 00:00:06 verbose #310 > > |> listm'.box 00:00:06 verbose #311 > > |> seq.of_list' 00:00:06 verbose #312 > > |> sm'.concat "\\n " 00:00:06 verbose #313 > > 00:00:06 verbose #314 > > inl fsproj_path = package_dir </> $'$"{!name}.fsproj"' |> 00:00:06 verbose #315 > > file_system.normalize_path 00:00:06 verbose #316 > > inl fsproj_code : string = 00:00:06 verbose #317 > > $'$"<Project Sdk=\\\"Microsoft.NET.Sdk\\\">"' 00:00:06 verbose #318 > > +#. $'$"<PropertyGroup>"' 00:00:06 verbose #319 > > +#. $'$" <TargetFramework>net9.0</TargetFramework>"' 00:00:06 verbose #320 > > +#. $'$" <LangVersion>preview</LangVersion>"' 00:00:06 verbose #321 > > +#. $'$" <RollForward>Major</RollForward>"' 00:00:06 verbose #322 > > +#. $'$" <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>"' 00:00:06 verbose #323 > > +#. $'$" <PublishAot>false</PublishAot>"' 00:00:06 verbose #324 > > +#. $'$" <PublishTrimmed>false</PublishTrimmed>"' 00:00:06 verbose #325 > > +#. $'$" <PublishSingleFile>true</PublishSingleFile>"' 00:00:06 verbose #326 > > +#. $'$" <SelfContained>true</SelfContained>"' 00:00:06 verbose #327 > > +#. $'$" <Version>0.0.1-alpha.1</Version>"' 00:00:06 verbose #328 > > +#. $'$" <OutputType>Exe</OutputType>"' 00:00:06 verbose #329 > > +#. $'$"</PropertyGroup>"' 00:00:06 verbose #330 > > 00:00:06 verbose #331 > > +#. $'$"<PropertyGroup 00:00:06 verbose #332 > > Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'FreeBSD\'))\\\">"' 00:00:06 verbose #333 > > +#. $'$" <DefineConstants>_FREEBSD</DefineConstants>"' 00:00:06 verbose #334 > > +#. $'$"</PropertyGroup>"' 00:00:06 verbose #335 > > 00:00:06 verbose #336 > > +#. $'$"<PropertyGroup 00:00:06 verbose #337 > > Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'Linux\'))\\\">"' 00:00:06 verbose #338 > > +#. $'$" <DefineConstants>_LINUX</DefineConstants>"' 00:00:06 verbose #339 > > +#. $'$"</PropertyGroup>"' 00:00:06 verbose #340 > > 00:00:06 verbose #341 > > +#. $'$"<PropertyGroup 00:00:06 verbose #342 > > Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'OSX\'))\\\">"' 00:00:06 verbose #343 > > +#. $'$" <DefineConstants>_OSX</DefineConstants>"' 00:00:06 verbose #344 > > +#. $'$"</PropertyGroup>"' 00:00:06 verbose #345 > > 00:00:06 verbose #346 > > +#. $'$"<PropertyGroup 00:00:06 verbose #347 > > Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'Windows\'))\\\">"' 00:00:06 verbose #348 > > +#. $'$" <DefineConstants>_WINDOWS</DefineConstants>"' 00:00:06 verbose #349 > > +#. $'$"</PropertyGroup>"' 00:00:06 verbose #350 > > 00:00:06 verbose #351 > > +#. $'$"<ItemGroup>"' 00:00:06 verbose #352 > > +#. $'$" {!modules_code}"' 00:00:06 verbose #353 > > +#. $'$" <Compile Include=\\\"{!fs_path}\\\" />"' 00:00:06 verbose #354 > > +#. $'$"</ItemGroup>"' 00:00:06 verbose #355 > > 00:00:06 verbose #356 > > +#. $'$"<ItemGroup>"' 00:00:06 verbose #357 > > +#. $'$" {!packages_code}"' 00:00:06 verbose #358 > > +#. $'$"</ItemGroup>"' 00:00:06 verbose #359 > > 00:00:06 verbose #360 > > +#. $'$"</Project>"' 00:00:06 verbose #361 > > 00:00:06 verbose #362 > > fsproj_code |> file_system.write_all_text_exists fsproj_path 00:00:06 verbose #363 > > 00:00:06 verbose #364 > > fsproj_path 00:00:07 verbose #365 > > 00:00:07 verbose #366 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:07 verbose #367 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 verbose #368 > > │ ### build_project │ 00:00:07 verbose #369 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 verbose #370 > > 00:00:07 verbose #371 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 verbose #372 > > inl build_project runtime' output_dir path = 00:00:07 verbose #373 > > inl full_path = path |> file_system.get_full_path 00:00:07 verbose #374 > > inl file_dir = full_path |> file_system.get_directory_name 00:00:07 verbose #375 > > inl extension = full_path |> file_system.get_extension 00:00:07 verbose #376 > > 00:00:07 verbose #377 > > trace Debug 00:00:07 verbose #378 > > fun () => "build_project" 00:00:07 verbose #379 > > fun () => { full_path } 00:00:07 verbose #380 > > 00:00:07 verbose #381 > > match extension with 00:00:07 verbose #382 > > | "fsproj" => () 00:00:07 verbose #383 > > | _ => failwith $'$"spiral_builder.build_project / Invalid project file 00:00:07 verbose #384 > > extension: {!extension}"' 00:00:07 verbose #385 > > 00:00:07 verbose #386 > > inl runtimes = 00:00:07 verbose #387 > > runtime' 00:00:07 verbose #388 > > |> optionm.map listm.singleton 00:00:07 verbose #389 > > |> optionm'.default_value [[ "linux-x64"; "win-x64" ]] 00:00:07 verbose #390 > > 00:00:07 verbose #391 > > inl output_dir = output_dir |> optionm'.default_value "dist" 00:00:07 verbose #392 > > 00:00:07 verbose #393 > > runtimes 00:00:07 verbose #394 > > |> listm.map fun runtime' => 00:00:07 verbose #395 > > runtime.execution_options fun x => { x with 00:00:07 verbose #396 > > command = $'$@@"dotnet publish \"\"{!path}\"\" --configuration 00:00:07 verbose #397 > > Release --output \"\"{!output_dir}\"\" --runtime {!runtime'}"' 00:00:07 verbose #398 > > working_directory = file_dir |> Some |> optionm'.box 00:00:07 verbose #399 > > } 00:00:07 verbose #400 > > |> runtime.execute_with_options 00:00:07 verbose #401 > > |> fst 00:00:07 verbose #402 > > |> listm'.sum 00:00:07 verbose #403 > > 00:00:07 verbose #404 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:07 verbose #405 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 verbose #406 > > │ ### build_code │ 00:00:07 verbose #407 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 verbose #408 > > 00:00:07 verbose #409 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 verbose #410 > > inl build_code { workspace_root runtime packages modules output_dir name code } 00:00:07 verbose #411 > > = 00:00:07 verbose #412 > > inl package_dir = get_package_dir { workspace_root name target = None; hash 00:00:07 verbose #413 > > = None } 00:00:07 verbose #414 > > inl fsproj_path = persist_code_project { workspace_root package_dir packages 00:00:07 verbose #415 > > modules name code } 00:00:07 verbose #416 > > inl exit_code = fsproj_path |> build_project runtime output_dir 00:00:07 verbose #417 > > if exit_code <>. 0 then 00:00:07 verbose #418 > > inl fsproj_text = fsproj_path |> file_system.read_all_text 00:00:07 verbose #419 > > trace Critical 00:00:07 verbose #420 > > fun () => "build_code" 00:00:07 verbose #421 > > fun () => { code = code |> sm'.ellipsis_end 400; fsproj_text } 00:00:07 verbose #422 > > exit_code 00:00:07 verbose #423 > > 00:00:07 verbose #424 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 verbose #425 > > //// test 00:00:07 verbose #426 > > ///! rust -d encoding_rs encoding_rs_io regex 00:00:07 verbose #427 > > 00:00:07 verbose #428 > > build_code 00:00:07 verbose #429 > > { 00:00:07 verbose #430 > > workspace_root = file_system.get_workspace_root () 00:00:07 verbose #431 > > runtime = None 00:00:07 verbose #432 > > packages = [[]] 00:00:07 verbose #433 > > modules = [[]] 00:00:07 verbose #434 > > output_dir = None 00:00:07 verbose #435 > > name = "test1" 00:00:07 verbose #436 > > code = "1 + 1 |> ignore" 00:00:07 verbose #437 > > } 00:00:07 verbose #438 > > |> _assert_eq 0 00:00:44 verbose #439 > > 00:00:44 verbose #440 > > ╭─[ 36.99s - return value ]────────────────────────────────────────────────────╮ 00:00:44 verbose #441 > > │ 00:00:00 verbose #1 file_system.create_dir / { dir = │ 00:00:44 verbose #442 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/test1 } │ 00:00:44 verbose #443 > > │ 00:00:00 debug #2 build_project / { full_path = │ 00:00:44 verbose #444 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/test1/test1.fsproj │ 00:00:44 verbose #445 > > │ } │ 00:00:44 verbose #446 > > │ 00:00:00 debug #3 runtime.execute_with_options / { file_name = │ 00:00:44 verbose #447 > > │ dotnet; arguments = [ │ 00:00:44 verbose #448 > > │ "publish", │ 00:00:44 verbose #449 > > │ │ 00:00:44 verbose #450 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/test1/test1.fspro │ 00:00:44 verbose #451 > > │ j", │ 00:00:44 verbose #452 > > │ "--configuration", │ 00:00:44 verbose #453 > > │ "Release", │ 00:00:44 verbose #454 > > │ "--output", │ 00:00:44 verbose #455 > > │ "dist", │ 00:00:44 verbose #456 > > │ "--runtime", │ 00:00:44 verbose #457 > > │ "win-x64", │ 00:00:44 verbose #458 > > │ ]; options = { command = dotnet publish │ 00:00:44 verbose #459 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/test1/test1.fspro │ 00:00:44 verbose #460 > > │ j" --configuration Release --output "dist" --runtime win-x64; │ 00:00:44 verbose #461 > > │ cancellation_token = None; environment_variables = Array(MutCell([])); │ 00:00:44 verbose #462 > > │ on_line = None; stdin = None; trace = true; working_directory = Some( │ 00:00:44 verbose #463 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/test1", │ 00:00:44 verbose #464 > > │ ) } } │ 00:00:44 verbose #465 > > │ 00:00:00 verbose #4 > MSBuild version │ 00:00:44 verbose #466 > > │ 17.10.0-preview-24101-01+07fd5d51f for .NET │ 00:00:44 verbose #467 > > │ 00:00:00 verbose #5 > Determining projects to restore... │ 00:00:44 verbose #468 > > │ 00:00:01 verbose #6 > Restored │ 00:00:44 verbose #469 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/test1/test1.fsproj │ 00:00:44 verbose #470 > > │ (in 271 ms). │ 00:00:44 verbose #471 > > │ 00:00:01 verbose #7 > │ 00:00:44 verbose #472 > > │ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │ 00:00:44 verbose #473 > > │ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message │ 00:00:44 verbose #474 > > │ NETSDK1057: You are using a preview version of .NET. See: │ 00:00:44 verbose #475 > > │ https://aka.m...ray(MutCell([])); on_line = None; stdin = None; trace = │ 00:00:44 verbose #476 > > │ true; working_directory = Some( │ 00:00:44 verbose #477 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/test1", │ 00:00:44 verbose #478 > > │ ) } } │ 00:00:44 verbose #479 > > │ 00:00:03 verbose #13 > MSBuild version │ 00:00:44 verbose #480 > > │ 17.10.0-preview-24101-01+07fd5d51f for .NET │ 00:00:44 verbose #481 > > │ 00:00:03 verbose #14 > Determining projects to restore... │ 00:00:44 verbose #482 > > │ 00:00:04 verbose #15 > Restored │ 00:00:44 verbose #483 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/test1/test1.fsproj │ 00:00:44 verbose #484 > > │ (in 273 ms). │ 00:00:44 verbose #485 > > │ 00:00:04 verbose #16 > │ 00:00:44 verbose #486 > > │ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │ 00:00:44 verbose #487 > > │ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message │ 00:00:44 verbose #488 > > │ NETSDK1057: You are using a preview version of .NET. See: │ 00:00:44 verbose #489 > > │ https://aka.ms/dotnet-support-policy [ │ 00:00:44 verbose #490 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/test1/test1.fsproj │ 00:00:44 verbose #491 > > │ ] │ 00:00:44 verbose #492 > > │ 00:00:05 verbose #17 > │ 00:00:44 verbose #493 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/test1/test1.fs(1,1 │ 00:00:44 verbose #494 > > │ 6): warning FS0988: Main module of program is empty: nothing will happen │ 00:00:44 verbose #495 > > │ when it is run [ │ 00:00:44 verbose #496 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/test1/test1.fsproj │ 00:00:44 verbose #497 > > │ ] │ 00:00:44 verbose #498 > > │ 00:00:05 verbose #18 > test1 -> │ 00:00:44 verbose #499 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/test1/bin/Release/ │ 00:00:44 verbose #500 > > │ net9.0/linux-x64/test1.dll │ 00:00:44 verbose #501 > > │ 00:00:06 verbose #19 > test1 -> │ 00:00:44 verbose #502 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/test1/dist │ 00:00:44 verbose #503 > > │ 00:00:06 verbose #20 runtime.execute_with_options / result / { │ 00:00:44 verbose #504 > > │ exit_code = 0; std_trace_length = 953 } │ 00:00:44 verbose #505 > > │ __assert_eq / actual: 0 / expected: 0 │ 00:00:44 verbose #506 > > │ │ 00:00:44 verbose #507 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:44 verbose #508 > > 00:00:44 verbose #509 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:44 verbose #510 > > //// test 00:00:44 verbose #511 > > ///! rust -d encoding_rs encoding_rs_io regex 00:00:44 verbose #512 > > 00:00:44 verbose #513 > > build_code 00:00:44 verbose #514 > > { 00:00:44 verbose #515 > > workspace_root = file_system.get_workspace_root () 00:00:44 verbose #516 > > runtime = None 00:00:44 verbose #517 > > packages = [[]] 00:00:44 verbose #518 > > modules = [[]] 00:00:44 verbose #519 > > output_dir = None 00:00:44 verbose #520 > > name = "test2" 00:00:44 verbose #521 > > code = "1 + a |> ignore" 00:00:44 verbose #522 > > } 00:00:44 verbose #523 > > |> _assert_eq 2 00:01:07 verbose #524 > > 00:01:07 verbose #525 > > ╭─[ 22.68s - return value ]────────────────────────────────────────────────────╮ 00:01:07 verbose #526 > > │ 00:00:00 verbose #1 file_system.create_dir / { dir = │ 00:01:07 verbose #527 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/test2 } │ 00:01:07 verbose #528 > > │ 00:00:00 debug #2 build_project / { full_path = │ 00:01:07 verbose #529 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/test2/test2.fsproj │ 00:01:07 verbose #530 > > │ } │ 00:01:07 verbose #531 > > │ 00:00:00 debug #3 runtime.execute_with_options / { file_name = │ 00:01:07 verbose #532 > > │ dotnet; arguments = [ │ 00:01:07 verbose #533 > > │ "publish", │ 00:01:07 verbose #534 > > │ │ 00:01:07 verbose #535 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/test2/test2.fspro │ 00:01:07 verbose #536 > > │ j", │ 00:01:07 verbose #537 > > │ "--configuration", │ 00:01:07 verbose #538 > > │ "Release", │ 00:01:07 verbose #539 > > │ "--output", │ 00:01:07 verbose #540 > > │ "dist", │ 00:01:07 verbose #541 > > │ "--runtime", │ 00:01:07 verbose #542 > > │ "win-x64", │ 00:01:07 verbose #543 > > │ ]; options = { command = dotnet publish │ 00:01:07 verbose #544 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/test2/test2.fspro │ 00:01:07 verbose #545 > > │ j" --configuration Release --output "dist" --runtime win-x64; │ 00:01:07 verbose #546 > > │ cancellation_token = None; environment_variables = Array(MutCell([])); │ 00:01:07 verbose #547 > > │ on_line = None; stdin = None; trace = true; working_directory = Some( │ 00:01:07 verbose #548 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/test2", │ 00:01:07 verbose #549 > > │ ) } } │ 00:01:07 verbose #550 > > │ 00:00:00 verbose #4 > MSBuild version │ 00:01:07 verbose #551 > > │ 17.10.0-preview-24101-01+07fd5d51f for .NET │ 00:01:07 verbose #552 > > │ 00:00:00 verbose #5 > Determining projects to restore... │ 00:01:07 verbose #553 > > │ 00:00:01 verbose #6 > Restored │ 00:01:07 verbose #554 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/test2/test2.fsproj │ 00:01:07 verbose #555 > > │ (in 265 ms). │ 00:01:07 verbose #556 > > │ 00:00:01 verbose #7 > │ 00:01:07 verbose #557 > > │ /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targe │ 00:01:07 verbose #558 > > │ ts/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message │ 00:01:07 verbose #559 > > │ NETSDK1057: You are using a preview version of .NET. See: https://aka.m... │ 00:01:07 verbose #560 > > │ not defined. [ │ 00:01:07 verbose #561 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/test2/test2.fsproj │ 00:01:07 verbose #562 > > │ ] │ 00:01:07 verbose #563 > > │ 00:00:04 verbose #16 runtime.execute_with_options / result / { │ 00:01:07 verbose #564 > > │ exit_code = 1; std_trace_length = 732 } │ 00:01:07 verbose #565 > > │ 00:00:04 critical #17 build_code / { code = 1 + a |> ignore; │ 00:01:07 verbose #566 > > │ fsproj_text = <Project Sdk="Microsoft.NET.Sdk"> │ 00:01:07 verbose #567 > > │ <PropertyGroup> │ 00:01:07 verbose #568 > > │ <TargetFramework>net9.0</TargetFramework> │ 00:01:07 verbose #569 > > │ <LangVersion>preview</LangVersion> │ 00:01:07 verbose #570 > > │ <RollForward>Major</RollForward> │ 00:01:07 verbose #571 > > │ <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> │ 00:01:07 verbose #572 > > │ <PublishAot>false</PublishAot> │ 00:01:07 verbose #573 > > │ <PublishTrimmed>false</PublishTrimmed> │ 00:01:07 verbose #574 > > │ <PublishSingleFile>true</PublishSingleFile> │ 00:01:07 verbose #575 > > │ <SelfContained>true</SelfContained> │ 00:01:07 verbose #576 > > │ <Version>0.0.1-alpha.1</Version> │ 00:01:07 verbose #577 > > │ <OutputType>Exe</OutputType> │ 00:01:07 verbose #578 > > │ </PropertyGroup> │ 00:01:07 verbose #579 > > │ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('FreeBSD'))"> │ 00:01:07 verbose #580 > > │ <DefineConstants>_FREEBSD</DefineConstants> │ 00:01:07 verbose #581 > > │ </PropertyGroup> │ 00:01:07 verbose #582 > > │ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Linux'))"> │ 00:01:07 verbose #583 > > │ <DefineConstants>_LINUX</DefineConstants> │ 00:01:07 verbose #584 > > │ </PropertyGroup> │ 00:01:07 verbose #585 > > │ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('OSX'))"> │ 00:01:07 verbose #586 > > │ <DefineConstants>_OSX</DefineConstants> │ 00:01:07 verbose #587 > > │ </PropertyGroup> │ 00:01:07 verbose #588 > > │ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Windows'))"> │ 00:01:07 verbose #589 > > │ <DefineConstants>_WINDOWS</DefineConstants> │ 00:01:07 verbose #590 > > │ </PropertyGroup> │ 00:01:07 verbose #591 > > │ <ItemGroup> │ 00:01:07 verbose #592 > > │ │ 00:01:07 verbose #593 > > │ <Compile │ 00:01:07 verbose #594 > > │ Include="/home/runner/work/polyglot/polyglot/target/spiral_builder/test2/tes │ 00:01:07 verbose #595 > > │ t2.fs" /> │ 00:01:07 verbose #596 > > │ </ItemGroup> │ 00:01:07 verbose #597 > > │ <ItemGroup> │ 00:01:07 verbose #598 > > │ │ 00:01:07 verbose #599 > > │ </ItemGroup> │ 00:01:07 verbose #600 > > │ </Project> } │ 00:01:07 verbose #601 > > │ __assert_eq / actual: 2 / expected: 2 │ 00:01:07 verbose #602 > > │ │ 00:01:07 verbose #603 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:07 verbose #604 > > 00:01:07 verbose #605 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:07 verbose #606 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:07 verbose #607 > > │ ### read_file │ 00:01:07 verbose #608 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:07 verbose #609 > > 00:01:07 verbose #610 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:07 verbose #611 > > inl read_file path = 00:01:07 verbose #612 > > inl code = 00:01:07 verbose #613 > > path 00:01:07 verbose #614 > > |> file_system.read_all_text 00:01:07 verbose #615 > > |> sm'.replace_regex $'@@"(?P<a> *)(?P<b>let\\s+main\\s+.*?\\s*=)"' 00:01:07 verbose #616 > > "$a[[<EntryPoint>]]\n$a$b" 00:01:07 verbose #617 > > 00:01:07 verbose #618 > > inl code_trim = code |> sm'.trim_end [[]] 00:01:07 verbose #619 > > if code_trim |> sm'.ends_with "\\n()" 00:01:07 verbose #620 > > then code_trim |> sm'.slice 0i64 ((code_trim |> sm'.length) - 3) 00:01:07 verbose #621 > > else code 00:01:07 verbose #622 > > 00:01:07 verbose #623 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:07 verbose #624 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:07 verbose #625 > > │ ### persist_file │ 00:01:07 verbose #626 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:07 verbose #627 > > 00:01:07 verbose #628 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:07 verbose #629 > > inl persist_file { workspace_root package_dir packages modules path } = 00:01:07 verbose #630 > > inl full_path = path |> file_system.get_full_path 00:01:07 verbose #631 > > inl name = full_path |> file_system.get_file_name_without_extension 00:01:07 verbose #632 > > inl code = full_path |> read_file 00:01:07 verbose #633 > > persist_code_project { workspace_root package_dir packages modules name code 00:01:07 verbose #634 > > } 00:01:07 verbose #635 > > 00:01:07 verbose #636 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:07 verbose #637 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:07 verbose #638 > > │ ### build_file │ 00:01:07 verbose #639 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:07 verbose #640 > > 00:01:07 verbose #641 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:07 verbose #642 > > inl build_file { workspace_root runtime packages modules path } = 00:01:07 verbose #643 > > inl full_path = path |> file_system.get_full_path 00:01:07 verbose #644 > > inl dir = full_path |> file_system.get_directory_name 00:01:07 verbose #645 > > build_code 00:01:07 verbose #646 > > { 00:01:07 verbose #647 > > workspace_root 00:01:07 verbose #648 > > runtime 00:01:07 verbose #649 > > packages 00:01:07 verbose #650 > > modules 00:01:07 verbose #651 > > output_dir = dir </> "dist" |> Some 00:01:07 verbose #652 > > name = full_path |> file_system.get_file_name_without_extension 00:01:07 verbose #653 > > code = full_path |> read_file 00:01:07 verbose #654 > > } 00:01:07 verbose #655 > > 00:01:07 verbose #656 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:07 verbose #657 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:07 verbose #658 > > │ ## rust │ 00:01:07 verbose #659 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:07 verbose #660 > > 00:01:07 verbose #661 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:07 verbose #662 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:07 verbose #663 > > │ ### get_workspace_cargo_toml_content │ 00:01:07 verbose #664 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:07 verbose #665 > > 00:01:07 verbose #666 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:07 verbose #667 > > inl get_workspace_cargo_toml_content { workspace_root } : string = 00:01:07 verbose #668 > > inl workspace_root = workspace_root |> file_system.normalize_path 00:01:07 verbose #669 > > $'$"cargo-features = [[\\\"profile-rustflags\\\"]]"' 00:01:07 verbose #670 > > +#. $'$""' 00:01:07 verbose #671 > > +#. $'$"[[workspace]]"' 00:01:07 verbose #672 > > +#. $'$"resolver = \\\"2\\\""' 00:01:07 verbose #673 > > +#. $'$"members = [[\\\"packages/Rust/*\\\"]]"' 00:01:07 verbose #674 > > +#. $'$""' 00:01:07 verbose #675 > > +#. $'$"[[workspace.dependencies.fable_library_rust]]"' 00:01:07 verbose #676 > > +#. $'$"path = 00:01:07 verbose #677 > > \\\"{!workspace_root}/lib/rust/fable/fable_modules/fable-library-rust\\\""' 00:01:07 verbose #678 > > +#. $'$"default-features = false"' 00:01:07 verbose #679 > > +#. $'$"features = [[]]"' 00:01:07 verbose #680 > > +#. $'$""' 00:01:07 verbose #681 > > +#. $'$"[[workspace.dependencies]]"' 00:01:07 verbose #682 > > +#. $'$"inline_colorization = \\\"~0.1\\\""' 00:01:07 verbose #683 > > +#. $'$""' 00:01:07 verbose #684 > > +#. $'$"[[profile.release]]"' 00:01:07 verbose #685 > > +#. $'$"codegen-units = 1"' 00:01:07 verbose #686 > > +#. $'$"opt-level = \\\"z\\\""' 00:01:07 verbose #687 > > +#. $'$"lto = true"' 00:01:07 verbose #688 > > +#. $'$"debug = false"' 00:01:07 verbose #689 > > +#. $'$"panic = \\\"abort\\\""' 00:01:07 verbose #690 > > +#. $'$"overflow-checks = true"' 00:01:07 verbose #691 > > +#. $'$"rustflags = [[\\\"-C\\\", \\\"link-arg=-s\\\"]]"' 00:01:07 verbose #692 > > 00:01:07 verbose #693 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:07 verbose #694 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:07 verbose #695 > > │ ### get_cargo_toml_content │ 00:01:07 verbose #696 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:07 verbose #697 > > 00:01:07 verbose #698 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:07 verbose #699 > > inl get_cargo_toml_content { hash_hex runtime deps } : string = 00:01:07 verbose #700 > > $'$"[[package]]"' 00:01:07 verbose #701 > > +#. $'$"name = \\\"spiral_builder_{!hash_hex}\\\""' 00:01:07 verbose #702 > > +#. $'$"version = \\\"0.0.1\\\""' 00:01:07 verbose #703 > > +#. $'$"edition = \\\"2021\\\""' 00:01:07 verbose #704 > > +#. $'$""' 00:01:07 verbose #705 > > +#. $'$"[[dependencies]]"' 00:01:07 verbose #706 > > +#. ( 00:01:07 verbose #707 > > if runtime = None then 00:01:07 verbose #708 > > $'$"fable_library_rust = {{ workspace = true, features = 00:01:07 verbose #709 > > [[\\\"static_do_bindings\\\", \\\"datetime\\\", \\\"guid\\\", \\\"threaded\\\"]] 00:01:07 verbose #710 > > }}"' 00:01:07 verbose #711 > > else 00:01:07 verbose #712 > > $'$"fable_library_rust = {{ workspace = true }}"' 00:01:07 verbose #713 > > ) 00:01:07 verbose #714 > > +#. $'$"inline_colorization = {{ workspace = true }}"' 00:01:07 verbose #715 > > +#. $'$"{!deps}"' 00:01:07 verbose #716 > > +#. $'$""' 00:01:07 verbose #717 > > +#. ( 00:01:07 verbose #718 > > if runtime = None then 00:01:07 verbose #719 > > $'$"[[[[bin]]]]"' 00:01:07 verbose #720 > > +#. $'$"name = \\\"spiral_builder_{!hash_hex}\\\""' 00:01:07 verbose #721 > > else 00:01:07 verbose #722 > > $'$"[[lib]]"' 00:01:07 verbose #723 > > +#. $'$"crate-type = [[\\\"cdylib\\\"]]"' 00:01:07 verbose #724 > > ) 00:01:07 verbose #725 > > +#. $'$"path = \\\"spiral_builder.rs\\\" "' 00:01:07 verbose #726 > > 00:01:07 verbose #727 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:07 verbose #728 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:07 verbose #729 > > │ ### get_empty_cargo_toml_content │ 00:01:07 verbose #730 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:07 verbose #731 > > 00:01:07 verbose #732 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:07 verbose #733 > > inl get_empty_cargo_toml_content () = 00:01:07 verbose #734 > > inl guid = date_time.now () |> date_time.new_guid_from_date_time |> 00:01:07 verbose #735 > > sm'.obj_to_string 00:01:07 verbose #736 > > $'$"[[package]]"' 00:01:07 verbose #737 > > +#. $'$"name = \\\"spiral_builder_{!guid}\\\""' 00:01:07 verbose #738 > > +#. $'$"version = \\\"0.0.1\\\""' 00:01:07 verbose #739 > > +#. $'$"edition = \\\"2021\\\""' 00:01:07 verbose #740 > > +#. $'$""' 00:01:07 verbose #741 > > +#. $'$"[[[[bin]]]]"' 00:01:07 verbose #742 > > +#. $'$"name = \\\"spiral_builder_{!guid}\\\""' 00:01:07 verbose #743 > > +#. $'$"path = \\\"spiral_builder.rs\\\""' 00:01:07 verbose #744 > > 00:01:07 verbose #745 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:07 verbose #746 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:07 verbose #747 > > │ ### process_rust │ 00:01:07 verbose #748 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:07 verbose #749 > > 00:01:07 verbose #750 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:07 verbose #751 > > inl process_rust { fs_path deps trace_level runtime } = 00:01:07 verbose #752 > > open runtime 00:01:07 verbose #753 > > inl is_trace = trace_level = Verbose 00:01:07 verbose #754 > > inl _trace (fn : () -> string) = 00:01:07 verbose #755 > > if is_trace 00:01:07 verbose #756 > > then trace Info (fun () => $'$"spiral_builder.process_rust / {!fn ()}"') 00:01:07 verbose #757 > > id 00:01:07 verbose #758 > > else fn () |> console.write_line 00:01:07 verbose #759 > > 00:01:07 verbose #760 > > inl extension = "rs" 00:01:07 verbose #761 > > inl code = fs_path |> file_system.read_all_text 00:01:07 verbose #762 > > 00:01:07 verbose #763 > > inl hash_hex = { extension code runtime } |> sm'.format |> crypto.hash_text 00:01:07 verbose #764 > > 00:01:07 verbose #765 > > inl workspace_name = "spiral_builder" 00:01:07 verbose #766 > > 00:01:07 verbose #767 > > inl workspace_root_external = file_system.get_workspace_root_external () 00:01:07 verbose #768 > > inl workspace_root = workspace_root_external |> resultm.box |> 00:01:07 verbose #769 > > resultm.unwrap_or_else id 00:01:07 verbose #770 > > 00:01:07 verbose #771 > > inl package_dir = 00:01:07 verbose #772 > > get_package_dir { workspace_root name = workspace_name; target = Some 00:01:07 verbose #773 > > Rust; hash = Some hash_hex } 00:01:07 verbose #774 > > 00:01:07 verbose #775 > > inl fsproj_path = 00:01:07 verbose #776 > > persist_code_project 00:01:07 verbose #777 > > { 00:01:07 verbose #778 > > workspace_root 00:01:07 verbose #779 > > package_dir 00:01:07 verbose #780 > > packages = [[ "Fable.Core" ]] 00:01:07 verbose #781 > > modules = [[]] 00:01:07 verbose #782 > > name = workspace_name 00:01:07 verbose #783 > > code 00:01:07 verbose #784 > > } 00:01:07 verbose #785 > > 00:01:07 verbose #786 > > inl workspace_dir = package_dir </> "../../.." 00:01:07 verbose #787 > > inl workspace_cargo_toml_path = workspace_dir </> "Cargo.toml" 00:01:07 verbose #788 > > 00:01:07 verbose #789 > > if workspace_cargo_toml_path |> file_system.file_exists |> not 00:01:07 verbose #790 > > then get_empty_cargo_toml_content () |> file_system.write_all_text 00:01:07 verbose #791 > > workspace_cargo_toml_path 00:01:07 verbose #792 > > 00:01:07 verbose #793 > > inl cargo_toml_path = package_dir </> "Cargo.toml" 00:01:07 verbose #794 > > 00:01:07 verbose #795 > > if cargo_toml_path |> file_system.file_exists |> not 00:01:07 verbose #796 > > then get_empty_cargo_toml_content () |> file_system.write_all_text 00:01:07 verbose #797 > > cargo_toml_path 00:01:07 verbose #798 > > 00:01:07 verbose #799 > > inl lib_link_target_path = workspace_root </> 00:01:07 verbose #800 > > "lib/rust/fable/fable_modules/fable-library-rust" 00:01:07 verbose #801 > > inl lib_link_path = package_dir </> "fable_modules/fable-library-rust" 00:01:07 verbose #802 > > 00:01:07 verbose #803 > > lib_link_path |> file_system.link_directory lib_link_target_path 00:01:07 verbose #804 > > 00:01:07 verbose #805 > > inl exit_code, dotnet_fable_result = 00:01:07 verbose #806 > > execute_dotnet_fable { workspace_root_external fsproj_path extension 00:01:07 verbose #807 > > package_dir runtime } 00:01:07 verbose #808 > > 00:01:07 verbose #809 > > if exit_code <>. 0 then 00:01:07 verbose #810 > > trace Critical 00:01:07 verbose #811 > > fun () => "spiral_builder.process_rust / dotnet fable error" 00:01:07 verbose #812 > > fun () => { exit_code dotnet_fable_result } 00:01:07 verbose #813 > > { extension = Some extension; code = None; output = Some 00:01:07 verbose #814 > > dotnet_fable_result } 00:01:07 verbose #815 > > else 00:01:07 verbose #816 > > inl deps = 00:01:07 verbose #817 > > inl deps = 00:01:07 verbose #818 > > if runtime = None 00:01:07 verbose #819 > > then deps 00:01:07 verbose #820 > > else 00:01:07 verbose #821 > > // TODO: simplify 00:01:07 verbose #822 > > inl has_near_sdk = 00:01:07 verbose #823 > > deps 00:01:07 verbose #824 > > |> am'.vec_filter (sm'.from_std_string >> sm'.contains 00:01:07 verbose #825 > > "near-sdk") 00:01:07 verbose #826 > > |> am'.vec_len 00:01:07 verbose #827 > > |> i32 00:01:07 verbose #828 > > |> fun n => n > 0 00:01:07 verbose #829 > > // TODO: simplify with ++ 00:01:07 verbose #830 > > if has_near_sdk 00:01:07 verbose #831 > > then deps 00:01:07 verbose #832 > > else deps |> am'.vec_extend (;[[ "near-sdk" |> 00:01:07 verbose #833 > > sm'.to_std_string ]] |> am'.to_vec) 00:01:07 verbose #834 > > deps 00:01:07 verbose #835 > > |> am'.vec_map fun dep => 00:01:07 verbose #836 > > inl dep = dep |> sm'.from_std_string 00:01:07 verbose #837 > > if dep |> sm'.contains "=" 00:01:07 verbose #838 > > then dep 00:01:07 verbose #839 > > elif dep |> sm'.ends_with "]]" 00:01:07 verbose #840 > > then dep |> sm'.replace "[[" $'$"={{version=\'*\',features=[["' 00:01:07 verbose #841 > > |> fun x => $'$"{!x}}}"' 00:01:07 verbose #842 > > else $'$"{!dep}=\'*\'"' 00:01:07 verbose #843 > > |> am'.from_vec 00:01:07 verbose #844 > > |> fun x => x : _ i32 _ 00:01:07 verbose #845 > > |> seq.of_array' 00:01:07 verbose #846 > > |> sm'.concat "\n" 00:01:07 verbose #847 > > 00:01:07 verbose #848 > > inl cargo_toml_content = get_cargo_toml_content { hash_hex runtime deps 00:01:07 verbose #849 > > } 00:01:07 verbose #850 > > inl workspace_cargo_toml_content = get_workspace_cargo_toml_content { 00:01:07 verbose #851 > > workspace_root } 00:01:07 verbose #852 > > 00:01:07 verbose #853 > > cargo_toml_content |> file_system.write_all_text_exists cargo_toml_path 00:01:07 verbose #854 > > 00:01:07 verbose #855 > > workspace_cargo_toml_content |> file_system.write_all_text_exists 00:01:07 verbose #856 > > workspace_cargo_toml_path 00:01:07 verbose #857 > > 00:01:07 verbose #858 > > inl range_rs_path = lib_link_path </> "src/Range.rs" 00:01:07 verbose #859 > > if range_rs_path |> file_system.file_exists then 00:01:07 verbose #860 > > inl text = range_rs_path |> file_system.read_all_text 00:01:07 verbose #861 > > text 00:01:07 verbose #862 > > |> sm'.replace "use crate::String_::fromCharCode;" "use 00:01:07 verbose #863 > > crate::String_::fromChar;" 00:01:07 verbose #864 > > |> sm'.replace "fromCharCode(c)" "std::char::from_u32(c).unwrap()" 00:01:07 verbose #865 > > |> file_system.write_all_text_exists range_rs_path 00:01:07 verbose #866 > > 00:01:07 verbose #867 > > inl exit_code, cargo_fmt_result = 00:01:07 verbose #868 > > fun () => 00:01:07 verbose #869 > > inl exit_code, result = 00:01:07 verbose #870 > > execution_options fun x => { x with 00:01:07 verbose #871 > > command = $'$"cargo fmt --manifest-path 00:01:07 verbose #872 > > \\\"{!cargo_toml_path}\\\" --"' 00:01:07 verbose #873 > > working_directory = workspace_root_external |> 00:01:07 verbose #874 > > resultm.box |> resultm.ok' 00:01:07 verbose #875 > > } 00:01:07 verbose #876 > > |> execute_with_options 00:01:07 verbose #877 > > 00:01:07 verbose #878 > > inl return () = 00:01:07 verbose #879 > > if exit_code = 0 00:01:07 verbose #880 > > then Ok (exit_code, result) 00:01:07 verbose #881 > > else Error (exit_code, result) 00:01:07 verbose #882 > > 00:01:07 verbose #883 > > if result |> sm'.contains "failed to load manifest for workspace 00:01:07 verbose #884 > > member" |> not 00:01:07 verbose #885 > > then return () 00:01:07 verbose #886 > > else 00:01:07 verbose #887 > > inl missing_toml_path = 00:01:07 verbose #888 > > "failed to read `(?<a>.*?Cargo.toml)`" 00:01:07 verbose #889 > > |> sm'.new_regex 00:01:07 verbose #890 > > |> resultm.unwrap' 00:01:07 verbose #891 > > |> sm'.regex_captures result 00:01:07 verbose #892 > > |> am'.from_vec 00:01:07 verbose #893 > > |> fun x => x : _ i32 _ 00:01:07 verbose #894 > > |> am'.try_item 0 00:01:07 verbose #895 > > |> optionm.map (mapm.get "a" >> optionm'.unbox) 00:01:07 verbose #896 > > |> optionm'.flatten 00:01:07 verbose #897 > > 00:01:07 verbose #898 > > match missing_toml_path with 00:01:07 verbose #899 > > | None => Error (exit_code, result) 00:01:07 verbose #900 > > | Some missing_toml_path => 00:01:07 verbose #901 > > if missing_toml_path |> file_system.file_exists |> not 00:01:07 verbose #902 > > then 00:01:07 verbose #903 > > missing_toml_path 00:01:07 verbose #904 > > |> file_system.get_directory_name 00:01:07 verbose #905 > > |> file_system.create_dir 00:01:07 verbose #906 > > |> ignore 00:01:07 verbose #907 > > 00:01:07 verbose #908 > > get_empty_cargo_toml_content () 00:01:07 verbose #909 > > |> file_system.write_all_text missing_toml_path 00:01:07 verbose #910 > > return () 00:01:07 verbose #911 > > |> retry_fn' 3u8 00:01:07 verbose #912 > > 00:01:07 verbose #913 > > if exit_code <>. 0 then 00:01:07 verbose #914 > > trace Critical 00:01:07 verbose #915 > > fun () => "spiral_builder.process_rust / cargo fmt error" 00:01:07 verbose #916 > > fun () => { exit_code cargo_fmt_result } 00:01:07 verbose #917 > > 00:01:07 verbose #918 > > inl new_code_path = package_dir </> $'$"{!workspace_name}.{!extension}"' 00:01:07 verbose #919 > > inl new_code = new_code_path |> file_system.read_all_text 00:01:07 verbose #920 > > 00:01:07 verbose #921 > > inl main_code_header = 00:01:07 verbose #922 > > "pub fn main() -> Result<(), String> " +. !\($'"\\\"{\\\".into()"') 00:01:07 verbose #923 > > inl main_code : string = 00:01:07 verbose #924 > > ( 00:01:07 verbose #925 > > if runtime = None 00:01:07 verbose #926 > > then "" 00:01:07 verbose #927 > > else 00:01:07 verbose #928 > > $'$"#[[near_sdk::near_bindgen]]"' 00:01:07 verbose #929 > > +#. $'$"#[[derive(near_sdk::PanicOnDefault)]]"' 00:01:07 verbose #930 > > +#. $'$"pub struct MainState {{"' 00:01:07 verbose #931 > > +#. $'$"}}"' 00:01:07 verbose #932 > > +#. $'$""' 00:01:07 verbose #933 > > +#. $'$"#[[near_sdk::near_bindgen]]"' 00:01:07 verbose #934 > > +#. $'$"impl MainState {{"' 00:01:07 verbose #935 > > +#. $'$" pub fn state_main() {{"' 00:01:07 verbose #936 > > +#. $'$" Spiral_builder::method0();"' 00:01:07 verbose #937 > > +#. $'$" }}"' 00:01:07 verbose #938 > > +#. $'$"}}"' 00:01:07 verbose #939 > > ) 00:01:07 verbose #940 > > +#. $'$"{!main_code_header} Ok(()) }}"' 00:01:07 verbose #941 > > 00:01:07 verbose #942 > > inl cached = new_code |> sm'.contains main_code_header 00:01:07 verbose #943 > > 00:01:07 verbose #944 > > inl new_code = 00:01:07 verbose #945 > > if cached 00:01:07 verbose #946 > > then new_code 00:01:07 verbose #947 > > else 00:01:07 verbose #948 > > new_code 00:01:07 verbose #949 > > |> sm'.replace 00:01:07 verbose #950 > > ("),)" +. !\($'"\\\";\\\".into()"')) 00:01:07 verbose #951 > > "));" 00:01:07 verbose #952 > > |> sm'.replace 00:01:07 verbose #953 > > ("},)" +. !\($'"\\\";\\\".into()"')) 00:01:07 verbose #954 > > "});" 00:01:07 verbose #955 > > |> sm'.replace_regex 00:01:07 verbose #956 > > "\\s\\sdefaultOf\\(\\);" 00:01:07 verbose #957 > > " defaultOf::<()>();" 00:01:07 verbose #958 > > |> sm'.replace 00:01:07 verbose #959 > > "::Slice'_" 00:01:07 verbose #960 > > "::Slice__" 00:01:07 verbose #961 > > |> sm'.replace 00:01:07 verbose #962 > > ("defaultOf()" +. !\($'"\\\",\\\".into()"')) 00:01:07 verbose #963 > > "defaultOf::<std::sync::Arc<dyn IDisposable>>()," 00:01:07 verbose #964 > > |> sm'.replace 00:01:07 verbose #965 > > ("_self" +. !\($'"\\\"_.\\\".into()"')) 00:01:07 verbose #966 > > "self." 00:01:07 verbose #967 > > |> sm'.replace 00:01:07 verbose #968 > > ("get_or_insert_wit" +. !\($'"\\\"h\\\".into()"')) 00:01:07 verbose #969 > > "get_or_init" 00:01:07 verbose #970 > > |> sm'.replace 00:01:07 verbose #971 > > ("use 00:01:07 verbose #972 > > fable_library_rust::System::Collections::Concurrent::ConcurrentStack_1" +. 00:01:07 verbose #973 > > !\($'"\\\";\\\".into()"')) 00:01:07 verbose #974 > > "type ConcurrentStack_1<T> = T;" 00:01:07 verbose #975 > > |> sm'.replace 00:01:07 verbose #976 > > ("use 00:01:07 verbose #977 > > fable_library_rust::System::Threading::CancellationToken" +. 00:01:07 verbose #978 > > !\($'"\\\";\\\".into()"')) 00:01:07 verbose #979 > > "type CancellationToken = ();" 00:01:07 verbose #980 > > |> sm'.replace 00:01:07 verbose #981 > > ("use fable_library_rust::System::TimeZoneInfo" +. 00:01:07 verbose #982 > > !\($'"\\\";\\\".into()"')) 00:01:07 verbose #983 > > "type TimeZoneInfo = i64;" 00:01:07 verbose #984 > > |> sm'.replace 00:01:07 verbose #985 > > ("use 00:01:07 verbose #986 > > fable_library_rust::System::Threading::Tasks::TaskCanceledException" +. 00:01:07 verbose #987 > > !\($'"\\\";\\\".into()"')) 00:01:07 verbose #988 > > "type TaskCanceledException = ();" 00:01:07 verbose #989 > > 00:01:07 verbose #990 > > if not cached 00:01:07 verbose #991 > > then 00:01:07 verbose #992 > > $'$"{!new_code}\\n\\n{!main_code}\\n"' 00:01:07 verbose #993 > > |> file_system.write_all_text_exists new_code_path 00:01:07 verbose #994 > > 00:01:07 verbose #995 > > inl command = 00:01:07 verbose #996 > > if runtime <> None 00:01:07 verbose #997 > > then $'$"cargo build --release --target wasm32-unknown-unknown 00:01:07 verbose #998 > > --manifest-path \\\"{!cargo_toml_path}\\\""' 00:01:07 verbose #999 > > else $'$"cargo run --manifest-path \\\"{!cargo_toml_path}\\\""' 00:01:07 verbose #1000 > > inl environment_variables = 00:01:07 verbose #1001 > > if runtime <> None 00:01:07 verbose #1002 > > then ;[[]] 00:01:07 verbose #1003 > > else 00:01:07 verbose #1004 > > inl fast = false 00:01:07 verbose #1005 > > ;[[ 00:01:07 verbose #1006 > > "TRACE_LEVEL", "Verbose" 00:01:07 verbose #1007 > > "RUSTC_WRAPPER", "sccache" 00:01:07 verbose #1008 > > "RUSTFLAGS", 00:01:07 verbose #1009 > > if fast 00:01:07 verbose #1010 > > then "-C prefer-dynamic -C strip=symbols -C link-arg=-s -C 00:01:07 verbose #1011 > > debuginfo=0" 00:01:07 verbose #1012 > > else "-C prefer-dynamic" 00:01:07 verbose #1013 > > ]] 00:01:07 verbose #1014 > > inl exit_code, cargo_result = 00:01:07 verbose #1015 > > execution_options fun x => { x with 00:01:07 verbose #1016 > > command 00:01:07 verbose #1017 > > environment_variables 00:01:07 verbose #1018 > > working_directory = workspace_root_external |> resultm.box |> 00:01:07 verbose #1019 > > resultm.ok' 00:01:07 verbose #1020 > > } 00:01:07 verbose #1021 > > |> execute_with_options 00:01:07 verbose #1022 > > 00:01:07 verbose #1023 > > inl result = 00:01:07 verbose #1024 > > if runtime = None then 00:01:07 verbose #1025 > > inl external_command = 00:01:07 verbose #1026 > > inl vars = 00:01:07 verbose #1027 > > a environment_variables 00:01:07 verbose #1028 > > |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : 00:01:07 verbose #1029 > > string 00:01:07 verbose #1030 > > |> fun x => x : _ i32 _ 00:01:07 verbose #1031 > > |> seq.of_array 00:01:07 verbose #1032 > > |> sm'.concat ";" 00:01:07 verbose #1033 > > inl command = 00:01:07 verbose #1034 > > a ;[[ 00:01:07 verbose #1035 > > vars 00:01:07 verbose #1036 > > command 00:01:07 verbose #1037 > > ]] 00:01:07 verbose #1038 > > |> fun x => x : _ i32 _ 00:01:07 verbose #1039 > > |> seq.of_array 00:01:07 verbose #1040 > > |> sm'.concat ";" 00:01:07 verbose #1041 > > $'$"pwsh -c \'{!command}\'"' : string 00:01:07 verbose #1042 > > if exit_code = 0 then 00:01:07 verbose #1043 > > inl output = 00:01:07 verbose #1044 > > try 00:01:07 verbose #1045 > > fun () => 00:01:07 verbose #1046 > > cargo_result 00:01:07 verbose #1047 > > |> sm'.split "\n" 00:01:07 verbose #1048 > > |> fun x => a x : _ i32 _ 00:01:07 verbose #1049 > > |> am'.skip_while fun line => 00:01:07 verbose #1050 > > (line |> sm'.contains "profile [[optimized]] 00:01:07 verbose #1051 > > target" |> not) 00:01:07 verbose #1052 > > && (line |> sm'.contains "profile 00:01:07 verbose #1053 > > [[unoptimized]] target" |> not) 00:01:07 verbose #1054 > > && (line |> sm'.contains "profile 00:01:07 verbose #1055 > > [[unoptimized + debuginfo]] target" |> not) 00:01:07 verbose #1056 > > |> am'.skip 2 00:01:07 verbose #1057 > > |> seq.of_array 00:01:07 verbose #1058 > > |> sm'.concat "\n" 00:01:07 verbose #1059 > > fun ex => 00:01:07 verbose #1060 > > trace Critical 00:01:07 verbose #1061 > > fun () => "spiral_builder.process_rust 00:01:07 verbose #1062 > > Exception" 00:01:07 verbose #1063 > > fun () => { ex cargo_result new_code_path 00:01:07 verbose #1064 > > external_command } 00:01:07 verbose #1065 > > None 00:01:07 verbose #1066 > > |> optionm'.box 00:01:07 verbose #1067 > > |> optionm'.unwrap 00:01:07 verbose #1068 > > 00:01:07 verbose #1069 > > { extension = Some extension; code = Some new_code; output = 00:01:07 verbose #1070 > > Some output } 00:01:07 verbose #1071 > > else 00:01:07 verbose #1072 > > trace Critical 00:01:07 verbose #1073 > > fun () => "spiral_builder.process_rust / error" 00:01:07 verbose #1074 > > fun () => { exit_code cargo_result new_code_path 00:01:07 verbose #1075 > > external_command } 00:01:07 verbose #1076 > > { extension = Some extension; code = None; output = None } 00:01:07 verbose #1077 > > else 00:01:07 verbose #1078 > > inl wasm_path : string = 00:01:07 verbose #1079 > > 00:01:07 verbose #1080 > > $'$"target/spiral_builder/{!workspace_name}/target/wasm32-unknown-unknown/releas 00:01:07 verbose #1081 > > e/spiral_builder_{!hash_hex}.wasm"' 00:01:07 verbose #1082 > > 00:01:07 verbose #1083 > > inl command = 00:01:07 verbose #1084 > > inl invoke_block_path = "scripts/invoke-block.ps1" 00:01:07 verbose #1085 > > inl spiral_wasm_command : string = 00:01:07 verbose #1086 > > inl runtime_cmd = 00:01:07 verbose #1087 > > match runtime with 00:01:07 verbose #1088 > > | Some (Wasm cmd) => cmd 00:01:07 verbose #1089 > > | Some (Contract cmd) => cmd 00:01:07 verbose #1090 > > | _ => "" 00:01:07 verbose #1091 > > $'$"\'workspace/target/release/spiral_wasm -t Debug -w 00:01:07 verbose #1092 > > {!wasm_path} {!runtime_cmd}\'"' 00:01:07 verbose #1093 > > $'$"pwsh -c \\\"pwsh {!invoke_block_path} 00:01:07 verbose #1094 > > {!spiral_wasm_command} -Linux -EnvironmentVariables 00:01:07 verbose #1095 > > NEAR_RPC_TIMEOUT_SECS=100\\\""' 00:01:07 verbose #1096 > > 00:01:07 verbose #1097 > > if exit_code = 0 then 00:01:07 verbose #1098 > > inl exit_code, spiral_wasm_result = 00:01:07 verbose #1099 > > execution_options fun x => { x with 00:01:07 verbose #1100 > > command 00:01:07 verbose #1101 > > working_directory = workspace_root |> optionm'.some' 00:01:07 verbose #1102 > > } 00:01:07 verbose #1103 > > |> execute_with_options 00:01:07 verbose #1104 > > 00:01:07 verbose #1105 > > inl output = spiral_wasm_result 00:01:07 verbose #1106 > > 00:01:07 verbose #1107 > > if exit_code = 0 then 00:01:07 verbose #1108 > > { extension = Some extension; code = Some new_code; 00:01:07 verbose #1109 > > output = Some output } 00:01:07 verbose #1110 > > else 00:01:07 verbose #1111 > > trace Critical 00:01:07 verbose #1112 > > fun () => "spiral_builder.process_rust / wasm error" 00:01:07 verbose #1113 > > fun () => { exit_code spiral_wasm_result 00:01:07 verbose #1114 > > cargo_result new_code_path } 00:01:07 verbose #1115 > > { extension = Some extension; code = None; output = None 00:01:07 verbose #1116 > > } 00:01:07 verbose #1117 > > else 00:01:07 verbose #1118 > > trace Critical 00:01:07 verbose #1119 > > fun () => "spiral_builder.process_rust / error" 00:01:07 verbose #1120 > > fun () => { exit_code cargo_result new_code_path 00:01:07 verbose #1121 > > wasm_path command } 00:01:07 verbose #1122 > > { extension = Some extension; code = None; output = None } 00:01:07 verbose #1123 > > 00:01:07 verbose #1124 > > inl cleanup = 00:01:07 verbose #1125 > > inl build_target = 00:01:07 verbose #1126 > > if runtime <> None 00:01:07 verbose #1127 > > then "wasm32-unknown-unknown/release" 00:01:07 verbose #1128 > > else "debug" 00:01:07 verbose #1129 > > 00:01:07 verbose #1130 > > [[ ".d"; ".exe"; ".pdb"; ".wasm"; "" ]] 00:01:07 verbose #1131 > > |> listm.map fun ext => 00:01:07 verbose #1132 > > workspace_dir </> 00:01:07 verbose #1133 > > $'$"target/{!build_target}/spiral_builder_{!hash_hex}{!ext}"' 00:01:07 verbose #1134 > > |> listm.map fun path => path, path |> file_system.file_exists 00:01:07 verbose #1135 > > 00:01:07 verbose #1136 > > trace Verbose 00:01:07 verbose #1137 > > fun () => "spiral_builder.process_rust / cleanup" 00:01:07 verbose #1138 > > fun () => { new_code_path cleanup } 00:01:07 verbose #1139 > > 00:01:07 verbose #1140 > > cleanup 00:01:07 verbose #1141 > > |> listm'.filter snd 00:01:07 verbose #1142 > > |> listm.iter (fst >> file_system.file_delete) 00:01:07 verbose #1143 > > 00:01:07 verbose #1144 > > result 00:01:08 verbose #1145 > > 00:01:08 verbose #1146 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:08 verbose #1147 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:08 verbose #1148 > > │ ## dib │ 00:01:08 verbose #1149 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:08 verbose #1150 > > 00:01:08 verbose #1151 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:08 verbose #1152 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:08 verbose #1153 > > │ ### process_dib │ 00:01:08 verbose #1154 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:08 verbose #1155 > > 00:01:08 verbose #1156 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:08 verbose #1157 > > inl process_dib { path retries working_directory } = 00:01:08 verbose #1158 > > inl exit_code, repl_result = 00:01:08 verbose #1159 > > let rec loop retry = 00:01:08 verbose #1160 > > inl exit_code, repl_result = 00:01:08 verbose #1161 > > runtime.execution_options fun x => { x with 00:01:08 verbose #1162 > > command = $'$"dotnet repl --exit-after-run --run 00:01:08 verbose #1163 > > \\\"{!path}\\\" --output-path \\\"{!path}.ipynb\\\""' 00:01:08 verbose #1164 > > environment_variables = ;[[ 00:01:08 verbose #1165 > > "TRACE_LEVEL", "Verbose" 00:01:08 verbose #1166 > > "AUTOMATION", "True" 00:01:08 verbose #1167 > > ]] 00:01:08 verbose #1168 > > trace = false 00:01:08 verbose #1169 > > working_directory = working_directory |> optionm'.box 00:01:08 verbose #1170 > > } 00:01:08 verbose #1171 > > |> runtime.execute_with_options 00:01:08 verbose #1172 > > 00:01:08 verbose #1173 > > if exit_code = 0 || retry >= retries 00:01:08 verbose #1174 > > then exit_code, repl_result 00:01:08 verbose #1175 > > else 00:01:08 verbose #1176 > > trace Debug 00:01:08 verbose #1177 > > fun () => $'"spiral_builder.run / repl error"' 00:01:08 verbose #1178 > > fun () => { exit_code repl_result retry = 00:01:08 verbose #1179 > > $'$"{!retry}/{!retries}"' : string } 00:01:08 verbose #1180 > > loop (retry + 1) 00:01:08 verbose #1181 > > loop 1 00:01:08 verbose #1182 > > 00:01:08 verbose #1183 > > inl exit_code, result = 00:01:08 verbose #1184 > > if exit_code <>. 0 00:01:08 verbose #1185 > > then exit_code, repl_result 00:01:08 verbose #1186 > > else 00:01:08 verbose #1187 > > inl exit_code, jupyter_result = 00:01:08 verbose #1188 > > runtime.execution_options fun x => { x with 00:01:08 verbose #1189 > > command = $'$"jupyter nbconvert \\\"{!path}.ipynb\\\" --to 00:01:08 verbose #1190 > > html --HTMLExporter.theme=dark"' 00:01:08 verbose #1191 > > } 00:01:08 verbose #1192 > > |> runtime.execute_with_options 00:01:08 verbose #1193 > > 00:01:08 verbose #1194 > > trace Debug 00:01:08 verbose #1195 > > fun () => $'"spiral_builder.run / dib / jupyter nbconvert"' 00:01:08 verbose #1196 > > fun () => { exit_code jupyter_result_length = jupyter_result |> 00:01:08 verbose #1197 > > sm'.length : i32 } 00:01:08 verbose #1198 > > 00:01:08 verbose #1199 > > if exit_code <>. 0 00:01:08 verbose #1200 > > then exit_code, $'$"repl_result: {!repl_result}\n\njupyter_result: 00:01:08 verbose #1201 > > {!jupyter_result}"' 00:01:08 verbose #1202 > > else 00:01:08 verbose #1203 > > inl exit_code, pwsh_replace_html_result = 00:01:08 verbose #1204 > > inl path = path |> sm'.replace "'" "''" 00:01:08 verbose #1205 > > runtime.execution_options fun x => { x with 00:01:08 verbose #1206 > > command = $'$"pwsh -c \\\"$counter = 1; $path = 00:01:08 verbose #1207 > > \'{!path}.html\'; (Get-Content $path -Raw) -replace 00:01:08 verbose #1208 > > \'(id=\\\\\\"cell-id=)[[a-fA-F0-9]]{{8}}\', {{ $_.Groups[[1]].Value + $counter++ 00:01:08 verbose #1209 > > }} | Set-Content $path\\\""' 00:01:08 verbose #1210 > > } 00:01:08 verbose #1211 > > |> runtime.execute_with_options 00:01:08 verbose #1212 > > 00:01:08 verbose #1213 > > trace Debug 00:01:08 verbose #1214 > > fun () => $'"spiral_builder.run / dib / html cell ids"' 00:01:08 verbose #1215 > > fun () => { exit_code pwsh_replace_html_result_length = 00:01:08 verbose #1216 > > pwsh_replace_html_result |> sm'.length : i32 } 00:01:08 verbose #1217 > > 00:01:08 verbose #1218 > > $'$"{!path}.html"' 00:01:08 verbose #1219 > > |> file_system.read_all_text 00:01:08 verbose #1220 > > |> sm'.replace "\r\n" "\n" 00:01:08 verbose #1221 > > |> file_system.write_all_text $'$"{!path}.html"' 00:01:08 verbose #1222 > > 00:01:08 verbose #1223 > > $'$"{!path}.ipynb"' 00:01:08 verbose #1224 > > |> file_system.read_all_text 00:01:08 verbose #1225 > > |> sm'.replace "\r\n" "\n" 00:01:08 verbose #1226 > > |> sm'.replace "\\r\\n" "\\n" 00:01:08 verbose #1227 > > |> file_system.write_all_text $'$"{!path}.ipynb"' 00:01:08 verbose #1228 > > 00:01:08 verbose #1229 > > exit_code, $'$"repl_result: {!repl_result}\n\njupyter_result: 00:01:08 verbose #1230 > > {!jupyter_result}\n\npwsh_replace_html_result: {!pwsh_replace_html_result}"' 00:01:08 verbose #1231 > > 00:01:08 verbose #1232 > > trace Debug 00:01:08 verbose #1233 > > fun () => $'"spiral_builder.run / dib"' 00:01:08 verbose #1234 > > fun () => { exit_code result_length = result |> sm'.length : i32 } 00:01:08 verbose #1235 > > 00:01:08 verbose #1236 > > if exit_code <>. 0 00:01:08 verbose #1237 > > then failwith $'$"spiral_builder.run / dib / exit_code: {!exit_code} 00:01:08 verbose #1238 > > result: {!result}"' 00:01:08 verbose #1239 > > ;[[ 00:01:08 verbose #1240 > > "stdio", 00:01:08 verbose #1241 > > result 00:01:08 verbose #1242 > > ]] 00:01:08 verbose #1243 > > 00:01:08 verbose #1244 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:08 verbose #1245 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:08 verbose #1246 > > │ ## typescript │ 00:01:08 verbose #1247 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:08 verbose #1248 > > 00:01:08 verbose #1249 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:08 verbose #1250 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:08 verbose #1251 > > │ ### process_typescript │ 00:01:08 verbose #1252 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:08 verbose #1253 > > 00:01:08 verbose #1254 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:08 verbose #1255 > > inl process_typescript { fs_path deps trace_level } = 00:01:08 verbose #1256 > > inl extension = "ts" 00:01:08 verbose #1257 > > inl is_trace = trace_level = Verbose 00:01:08 verbose #1258 > > inl _trace (fn : () -> string) = 00:01:08 verbose #1259 > > if is_trace 00:01:08 verbose #1260 > > then trace Info (fun () => $'$"spiral_builder.process_typescript / {!fn 00:01:08 verbose #1261 > > ()}"') id 00:01:08 verbose #1262 > > else fn () |> console.write_line 00:01:08 verbose #1263 > > 00:01:08 verbose #1264 > > inl code = fs_path |> file_system.read_all_text 00:01:08 verbose #1265 > > 00:01:08 verbose #1266 > > inl hash_hex = (extension, code) |> sm'.format_debug |> crypto.hash_text 00:01:08 verbose #1267 > > 00:01:08 verbose #1268 > > inl workspace_name = "spiral_builder" 00:01:08 verbose #1269 > > 00:01:08 verbose #1270 > > inl workspace_root_external = file_system.get_workspace_root_external () 00:01:08 verbose #1271 > > inl workspace_root = workspace_root_external |> resultm.box |> 00:01:08 verbose #1272 > > resultm.unwrap_or_else id 00:01:08 verbose #1273 > > 00:01:08 verbose #1274 > > inl package_dir = 00:01:08 verbose #1275 > > get_package_dir 00:01:08 verbose #1276 > > { workspace_root name = workspace_name; target = Some TypeScript; 00:01:08 verbose #1277 > > hash = Some hash_hex } 00:01:08 verbose #1278 > > 00:01:08 verbose #1279 > > inl fsproj_path = 00:01:08 verbose #1280 > > persist_code_project 00:01:08 verbose #1281 > > { 00:01:08 verbose #1282 > > workspace_root 00:01:08 verbose #1283 > > package_dir 00:01:08 verbose #1284 > > packages = [[ "Fable.Core" ]] 00:01:08 verbose #1285 > > modules = [[]] 00:01:08 verbose #1286 > > name = workspace_name 00:01:08 verbose #1287 > > code 00:01:08 verbose #1288 > > } 00:01:08 verbose #1289 > > 00:01:08 verbose #1290 > > inl lib_path = workspace_root </> "lib/typescript/fable/fable_modules" 00:01:08 verbose #1291 > > 00:01:08 verbose #1292 > > inl versions : _ (string * string) = 00:01:08 verbose #1293 > > lib_path 00:01:08 verbose #1294 > > |> file_system.new_walk_dir 00:01:08 verbose #1295 > > |> file_system.walk_dir_filter fun entry => async.new_future_move_send 00:01:08 verbose #1296 > > fun () => 00:01:08 verbose #1297 > > entry 00:01:08 verbose #1298 > > |> file_system.dir_entry_file_type 00:01:08 verbose #1299 > > |> async.await_send 00:01:08 verbose #1300 > > |> resultm.map_error' sm'.format' 00:01:08 verbose #1301 > > |> resultm.unbox 00:01:08 verbose #1302 > > |> function 00:01:08 verbose #1303 > > | Ok file_type when file_type |> file_system.file_type_is_dir |> 00:01:08 verbose #1304 > > not => file_system.Ignore 00:01:08 verbose #1305 > > | _ => 00:01:08 verbose #1306 > > inl path = 00:01:08 verbose #1307 > > entry 00:01:08 verbose #1308 > > |> file_system.dir_entry_path 00:01:08 verbose #1309 > > |> file_system.path_buf_display 00:01:08 verbose #1310 > > |> sm'.format' 00:01:08 verbose #1311 > > |> sm'.from_std_string 00:01:08 verbose #1312 > > if path |> file_system.get_directory_name |> sm'.starts_with 00:01:08 verbose #1313 > > "fable-library-ts." 00:01:08 verbose #1314 > > then file_system.Continue 00:01:08 verbose #1315 > > else file_system.IgnoreDir 00:01:08 verbose #1316 > > |> async.stream_filter_map fun (entry : _ _ 00:01:08 verbose #1317 > > file_system.async_walkdir_error) => 00:01:08 verbose #1318 > > inl entry = entry |> resultm.map_error' sm'.format' |> resultm.unbox 00:01:08 verbose #1319 > > match entry with 00:01:08 verbose #1320 > > | Ok entry => 00:01:08 verbose #1321 > > inl path = 00:01:08 verbose #1322 > > entry 00:01:08 verbose #1323 > > |> file_system.dir_entry_path 00:01:08 verbose #1324 > > |> file_system.path_buf_display 00:01:08 verbose #1325 > > |> sm'.format' 00:01:08 verbose #1326 > > |> sm'.from_std_string 00:01:08 verbose #1327 > > inl version = 00:01:08 verbose #1328 > > $'$"fable-library-{!extension}\\.(?<a>[[\\d.]]+)$"' 00:01:08 verbose #1329 > > |> sm'.new_regex 00:01:08 verbose #1330 > > |> resultm.unwrap' 00:01:08 verbose #1331 > > |> sm'.regex_captures path 00:01:08 verbose #1332 > > |> am'.from_vec 00:01:08 verbose #1333 > > |> fun x => x : _ i32 _ 00:01:08 verbose #1334 > > |> am'.try_item 0 00:01:08 verbose #1335 > > |> optionm.map (mapm.get "a" >> optionm'.unbox) 00:01:08 verbose #1336 > > |> optionm'.flatten 00:01:08 verbose #1337 > > match version with 00:01:08 verbose #1338 > > | None => None 00:01:08 verbose #1339 > > | Some version => Some (path, version) 00:01:08 verbose #1340 > > | Error error => 00:01:08 verbose #1341 > > trace Critical 00:01:08 verbose #1342 > > fun () => $'"spiral_builder.process_typescript 00:01:08 verbose #1343 > > stream_filter_map"' 00:01:08 verbose #1344 > > fun () => { error } 00:01:08 verbose #1345 > > None 00:01:08 verbose #1346 > > |> optionm'.box 00:01:08 verbose #1347 > > |> async.stream_collect 00:01:08 verbose #1348 > > |> async.await 00:01:08 verbose #1349 > > |> async.into_par_iter 00:01:08 verbose #1350 > > |> async.par_map id 00:01:08 verbose #1351 > > |> async.par_collect 00:01:08 verbose #1352 > > 00:01:08 verbose #1353 > > inl version = 00:01:08 verbose #1354 > > versions 00:01:08 verbose #1355 > > |> am'.from_vec 00:01:08 verbose #1356 > > |> fun x => x : _ i32 _ 00:01:08 verbose #1357 > > |> am'.try_item 0 00:01:08 verbose #1358 > > 00:01:08 verbose #1359 > > trace Debug 00:01:08 verbose #1360 > > fun () => $'"spiral_builder.process_typescript"' 00:01:08 verbose #1361 > > fun () => { version } 00:01:08 verbose #1362 > > 00:01:08 verbose #1363 > > match version with 00:01:08 verbose #1364 > > | None => () 00:01:08 verbose #1365 > > | Some (_path, version) => 00:01:08 verbose #1366 > > inl lib_link_target_path = lib_path </> 00:01:08 verbose #1367 > > $'$"fable-library-{!extension}.{!version}"' 00:01:08 verbose #1368 > > inl lib_link_path = package_dir </> 00:01:08 verbose #1369 > > $'$"fable_modules/fable-library-{!extension}.{!version}"' 00:01:08 verbose #1370 > > 00:01:08 verbose #1371 > > lib_link_path |> file_system.link_directory lib_link_target_path 00:01:08 verbose #1372 > > 00:01:08 verbose #1373 > > inl exit_code, dotnet_fable_result = 00:01:08 verbose #1374 > > execute_dotnet_fable { workspace_root_external fsproj_path extension 00:01:08 verbose #1375 > > package_dir runtime = None } 00:01:08 verbose #1376 > > 00:01:08 verbose #1377 > > if exit_code <>. 0 then 00:01:08 verbose #1378 > > trace Critical 00:01:08 verbose #1379 > > fun () => $'$"spiral_builder.process_typescript"' 00:01:08 verbose #1380 > > fun () => { exit_code dotnet_fable_result } 00:01:08 verbose #1381 > > { extension = Some extension; code = None; output = Some 00:01:08 verbose #1382 > > dotnet_fable_result } 00:01:08 verbose #1383 > > else 00:01:08 verbose #1384 > > inl deps = 00:01:08 verbose #1385 > > deps 00:01:08 verbose #1386 > > |> am'.vec_map fun dep => 00:01:08 verbose #1387 > > inl dep = dep |> sm'.from_std_string 00:01:08 verbose #1388 > > if dep |> sm'.contains "=" 00:01:08 verbose #1389 > > then dep 00:01:08 verbose #1390 > > else $'$"\\"{!dep}\\":\\"*\\""' 00:01:08 verbose #1391 > > |> am'.from_vec 00:01:08 verbose #1392 > > |> fun x => x : _ i32 _ 00:01:08 verbose #1393 > > |> seq.of_array' 00:01:08 verbose #1394 > > |> sm'.concat ",\n" 00:01:08 verbose #1395 > > 00:01:08 verbose #1396 > > inl package_json_content = 00:01:08 verbose #1397 > > $'$"{{"' 00:01:08 verbose #1398 > > +. $'$" \\\"name\\\": \\\"spiral_builder_{!hash_hex}\\\","' 00:01:08 verbose #1399 > > +. $'$" \\\"dependencies\\\": {{"' 00:01:08 verbose #1400 > > +. deps 00:01:08 verbose #1401 > > +. $'$" }},"' 00:01:08 verbose #1402 > > +. $'$" \\\"devDependencies\\\": {{"' 00:01:08 verbose #1403 > > +. $'$" }},"' 00:01:08 verbose #1404 > > +. $'$"}}"' 00:01:08 verbose #1405 > > 00:01:08 verbose #1406 > > inl workspace_package_json_content = 00:01:08 verbose #1407 > > "" 00:01:08 verbose #1408 > > 00:01:08 verbose #1409 > > inl package_json_path = package_dir </> "package.json" 00:01:08 verbose #1410 > > 00:01:08 verbose #1411 > > inl workspace_dir = package_dir </> "../.." 00:01:08 verbose #1412 > > inl workspace_package_json_path = workspace_dir </> "package.json" 00:01:08 verbose #1413 > > 00:01:08 verbose #1414 > > package_json_content |> file_system.write_all_text_exists 00:01:08 verbose #1415 > > package_json_path 00:01:08 verbose #1416 > > 00:01:08 verbose #1417 > > workspace_package_json_content |> file_system.write_all_text_exists 00:01:08 verbose #1418 > > workspace_package_json_path 00:01:08 verbose #1419 > > 00:01:08 verbose #1420 > > inl new_code_path = package_dir </> $'$"{!workspace_name}.{!extension}"' 00:01:08 verbose #1421 > > trace Debug 00:01:08 verbose #1422 > > fun () => $'"spiral_builder.process_typescript"' 00:01:08 verbose #1423 > > fun () => { new_code_path } 00:01:08 verbose #1424 > > inl new_code = new_code_path |> file_system.read_all_text 00:01:08 verbose #1425 > > 00:01:08 verbose #1426 > > inl main_code_header = 00:01:08 verbose #1427 > > "// spiral_builder.process_typescript" 00:01:08 verbose #1428 > > inl main_code = "// spiral_builder.process_typescript" 00:01:08 verbose #1429 > > 00:01:08 verbose #1430 > > inl cached = new_code |> sm'.contains main_code_header 00:01:08 verbose #1431 > > 00:01:08 verbose #1432 > > inl new_code = 00:01:08 verbose #1433 > > if cached 00:01:08 verbose #1434 > > then new_code 00:01:08 verbose #1435 > > else 00:01:08 verbose #1436 > > new_code 00:01:08 verbose #1437 > > |> sm'.replace 00:01:08 verbose #1438 > > $'$"\\\"./fable_modules/fable-library-ts.{!version}/"' 00:01:08 verbose #1439 > > 00:01:08 verbose #1440 > > $'$"\\\"{!workspace_root}/lib/typescript/fable/fable_modules/fable-library-ts.{! 00:01:08 verbose #1441 > > version}/"' 00:01:08 verbose #1442 > > |> sm'.replace_regex 00:01:08 verbose #1443 > > "\\s\\sdefaultOf\\(\\);" 00:01:08 verbose #1444 > > " defaultOf::<()>();" 00:01:08 verbose #1445 > > 00:01:08 verbose #1446 > > if not cached then 00:01:08 verbose #1447 > > $'$"{!new_code}\\n\\n{!main_code}\\n"' 00:01:08 verbose #1448 > > |> file_system.write_all_text_exists new_code_path 00:01:08 verbose #1449 > > 00:01:08 verbose #1450 > > inl command = $'$"bun run \\\"{!new_code_path}\\\""' 00:01:08 verbose #1451 > > inl environment_variables = 00:01:08 verbose #1452 > > match "~/.bun/bin" |> env.append_path with 00:01:08 verbose #1453 > > | Some path => [[ "PATH", path ]] 00:01:08 verbose #1454 > > | None => [[]] 00:01:08 verbose #1455 > > ++ [[ 00:01:08 verbose #1456 > > "TRACE_LEVEL", "Verbose" 00:01:08 verbose #1457 > > ]] 00:01:08 verbose #1458 > > |> listm'.box 00:01:08 verbose #1459 > > |> listm'.to_array' 00:01:08 verbose #1460 > > inl exit_code, run_result = 00:01:08 verbose #1461 > > runtime.execution_options fun x => { x with 00:01:08 verbose #1462 > > command 00:01:08 verbose #1463 > > environment_variables 00:01:08 verbose #1464 > > working_directory = workspace_root_external |> resultm.box |> 00:01:08 verbose #1465 > > resultm.ok' 00:01:08 verbose #1466 > > } 00:01:08 verbose #1467 > > |> runtime.execute_with_options 00:01:08 verbose #1468 > > 00:01:08 verbose #1469 > > inl external_command = 00:01:08 verbose #1470 > > inl vars = 00:01:08 verbose #1471 > > a environment_variables 00:01:08 verbose #1472 > > |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string 00:01:08 verbose #1473 > > |> fun x => x : _ i32 _ 00:01:08 verbose #1474 > > |> seq.of_array 00:01:08 verbose #1475 > > |> sm'.concat ";" 00:01:08 verbose #1476 > > $'$"pwsh -c \'{!vars}; {!command}\'"' : string 00:01:08 verbose #1477 > > if exit_code = 0 then 00:01:08 verbose #1478 > > inl output = 00:01:08 verbose #1479 > > try 00:01:08 verbose #1480 > > fun () => 00:01:08 verbose #1481 > > run_result 00:01:08 verbose #1482 > > |> sm'.split "\n" 00:01:08 verbose #1483 > > |> fun x => a x : _ i32 _ 00:01:08 verbose #1484 > > |> seq.of_array 00:01:08 verbose #1485 > > |> sm'.concat "\n" 00:01:08 verbose #1486 > > fun ex => 00:01:08 verbose #1487 > > trace Critical 00:01:08 verbose #1488 > > fun () => "spiral_builder.process_typescript 00:01:08 verbose #1489 > > Exception" 00:01:08 verbose #1490 > > fun () => { ex new_code_path external_command 00:01:08 verbose #1491 > > run_result } 00:01:08 verbose #1492 > > None 00:01:08 verbose #1493 > > |> optionm'.box 00:01:08 verbose #1494 > > |> optionm'.unwrap 00:01:08 verbose #1495 > > 00:01:08 verbose #1496 > > { extension = Some extension; code = Some new_code; output = Some 00:01:08 verbose #1497 > > output } 00:01:08 verbose #1498 > > else 00:01:08 verbose #1499 > > trace Critical 00:01:08 verbose #1500 > > fun () => "spiral_builder.process_typescript / error" 00:01:08 verbose #1501 > > fun () => { exit_code run_result new_code_path external_command 00:01:08 verbose #1502 > > } 00:01:08 verbose #1503 > > { extension = Some extension; code = None; output = None } 00:01:08 verbose #1504 > > 00:01:08 verbose #1505 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:08 verbose #1506 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:08 verbose #1507 > > │ ## python │ 00:01:08 verbose #1508 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:08 verbose #1509 > > 00:01:08 verbose #1510 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:08 verbose #1511 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:08 verbose #1512 > > │ ### process_python │ 00:01:08 verbose #1513 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:08 verbose #1514 > > 00:01:08 verbose #1515 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:08 verbose #1516 > > inl process_python { fs_path deps trace_level } = 00:01:08 verbose #1517 > > inl extension = "py" 00:01:08 verbose #1518 > > inl is_trace = trace_level = Verbose 00:01:08 verbose #1519 > > inl _trace (fn : () -> string) = 00:01:08 verbose #1520 > > if is_trace 00:01:08 verbose #1521 > > then trace Info (fun () => $'$"spiral_builder.process_python / {!fn 00:01:08 verbose #1522 > > ()}"') id 00:01:08 verbose #1523 > > else fn () |> console.write_line 00:01:08 verbose #1524 > > 00:01:08 verbose #1525 > > inl code = fs_path |> file_system.read_all_text 00:01:08 verbose #1526 > > 00:01:08 verbose #1527 > > inl hash_hex = (extension, code) |> sm'.format_debug |> crypto.hash_text 00:01:08 verbose #1528 > > 00:01:08 verbose #1529 > > inl workspace_name = "spiral_builder" 00:01:08 verbose #1530 > > 00:01:08 verbose #1531 > > inl workspace_root_external = file_system.get_workspace_root_external () 00:01:08 verbose #1532 > > inl workspace_root = workspace_root_external |> resultm.box |> 00:01:08 verbose #1533 > > resultm.unwrap_or_else id 00:01:08 verbose #1534 > > 00:01:08 verbose #1535 > > inl package_dir = 00:01:08 verbose #1536 > > get_package_dir { workspace_root name = workspace_name; target = Some 00:01:08 verbose #1537 > > Python; hash = Some hash_hex } 00:01:08 verbose #1538 > > 00:01:08 verbose #1539 > > inl fsproj_path = 00:01:08 verbose #1540 > > persist_code_project 00:01:08 verbose #1541 > > { 00:01:08 verbose #1542 > > workspace_root 00:01:08 verbose #1543 > > package_dir 00:01:08 verbose #1544 > > packages = [[ "Fable.Core" ]] 00:01:08 verbose #1545 > > modules = [[]] 00:01:08 verbose #1546 > > name = workspace_name 00:01:08 verbose #1547 > > code 00:01:08 verbose #1548 > > } 00:01:08 verbose #1549 > > 00:01:08 verbose #1550 > > inl lib_path = workspace_root </> "lib/python/fable/fable_modules" 00:01:08 verbose #1551 > > 00:01:08 verbose #1552 > > inl lib_link_target_path = lib_path </> $'$"fable_library"' 00:01:08 verbose #1553 > > inl lib_link_path = package_dir </> $'$"fable_modules/fable_library"' 00:01:08 verbose #1554 > > 00:01:08 verbose #1555 > > lib_link_path |> file_system.link_directory lib_link_target_path 00:01:08 verbose #1556 > > 00:01:08 verbose #1557 > > inl exit_code, dotnet_fable_result = 00:01:08 verbose #1558 > > execute_dotnet_fable { workspace_root_external fsproj_path extension 00:01:08 verbose #1559 > > package_dir runtime = None } 00:01:08 verbose #1560 > > 00:01:08 verbose #1561 > > if exit_code <>. 0 then 00:01:08 verbose #1562 > > trace Critical 00:01:08 verbose #1563 > > fun () => $'$"spiral_builder.process_python"' 00:01:08 verbose #1564 > > fun () => { exit_code dotnet_fable_result } 00:01:08 verbose #1565 > > { extension = Some extension; code = None; output = Some 00:01:08 verbose #1566 > > dotnet_fable_result } 00:01:08 verbose #1567 > > else 00:01:08 verbose #1568 > > inl deps = 00:01:08 verbose #1569 > > deps 00:01:08 verbose #1570 > > |> am'.vec_map fun dep => 00:01:08 verbose #1571 > > inl dep = dep |> sm'.from_std_string 00:01:08 verbose #1572 > > if dep |> sm'.contains "=" 00:01:08 verbose #1573 > > then dep 00:01:08 verbose #1574 > > else $'$"\\"{!dep}\\":\\"*\\""' 00:01:08 verbose #1575 > > |> am'.from_vec 00:01:08 verbose #1576 > > |> fun x => x : _ i32 _ 00:01:08 verbose #1577 > > |> seq.of_array' 00:01:08 verbose #1578 > > |> sm'.concat ",\n" 00:01:08 verbose #1579 > > 00:01:08 verbose #1580 > > inl package_json_content = 00:01:08 verbose #1581 > > $'$"{{"' 00:01:08 verbose #1582 > > +. $'$" \\\"name\\\": \\\"spiral_builder_{!hash_hex}\\\","' 00:01:08 verbose #1583 > > +. $'$" \\\"dependencies\\\": {{"' 00:01:08 verbose #1584 > > +. deps 00:01:08 verbose #1585 > > +. $'$" }},"' 00:01:08 verbose #1586 > > +. $'$" \\\"devDependencies\\\": {{"' 00:01:08 verbose #1587 > > +. $'$" }},"' 00:01:08 verbose #1588 > > +. $'$"}}"' 00:01:08 verbose #1589 > > 00:01:08 verbose #1590 > > inl workspace_package_json_content = 00:01:08 verbose #1591 > > "" 00:01:08 verbose #1592 > > 00:01:08 verbose #1593 > > inl package_json_path = package_dir </> "package.json" 00:01:08 verbose #1594 > > 00:01:08 verbose #1595 > > inl workspace_dir = package_dir </> "../.." 00:01:08 verbose #1596 > > inl workspace_package_json_path = workspace_dir </> "package.json" 00:01:08 verbose #1597 > > 00:01:08 verbose #1598 > > package_json_content |> file_system.write_all_text_exists 00:01:08 verbose #1599 > > package_json_path 00:01:08 verbose #1600 > > 00:01:08 verbose #1601 > > workspace_package_json_content |> file_system.write_all_text_exists 00:01:08 verbose #1602 > > workspace_package_json_path 00:01:08 verbose #1603 > > 00:01:08 verbose #1604 > > inl new_code_path = package_dir </> $'$"{!workspace_name}.{!extension}"' 00:01:08 verbose #1605 > > trace Debug 00:01:08 verbose #1606 > > fun () => $'"spiral_builder.process_python"' 00:01:08 verbose #1607 > > fun () => { new_code_path } 00:01:08 verbose #1608 > > inl new_code = new_code_path |> file_system.read_all_text 00:01:08 verbose #1609 > > 00:01:08 verbose #1610 > > inl main_code_header = 00:01:08 verbose #1611 > > "# spiral_builder.process_python" 00:01:08 verbose #1612 > > inl main_code = "# spiral_builder.process_python" 00:01:08 verbose #1613 > > 00:01:08 verbose #1614 > > inl cached = new_code |> sm'.contains main_code_header 00:01:08 verbose #1615 > > 00:01:08 verbose #1616 > > inl new_code = 00:01:08 verbose #1617 > > if cached 00:01:08 verbose #1618 > > then new_code 00:01:08 verbose #1619 > > else 00:01:08 verbose #1620 > > new_code 00:01:08 verbose #1621 > > |> sm'.replace 00:01:08 verbose #1622 > > ("),)" +. !\($'"\\\";\\\".into()"')) 00:01:08 verbose #1623 > > "));" 00:01:08 verbose #1624 > > |> sm'.replace_regex 00:01:08 verbose #1625 > > "\\s\\sdefaultOf\\(\\);" 00:01:08 verbose #1626 > > " defaultOf::<()>();" 00:01:08 verbose #1627 > > 00:01:08 verbose #1628 > > if not cached 00:01:08 verbose #1629 > > then 00:01:08 verbose #1630 > > $'$"{!new_code}\\n\\n{!main_code}\\n"' 00:01:08 verbose #1631 > > |> file_system.write_all_text_exists new_code_path 00:01:08 verbose #1632 > > 00:01:08 verbose #1633 > > inl command = $'$"python \\\"{!new_code_path}\\\""' 00:01:08 verbose #1634 > > inl environment_variables = 00:01:08 verbose #1635 > > ;[[ 00:01:08 verbose #1636 > > "TRACE_LEVEL", "Verbose" 00:01:08 verbose #1637 > > ]] 00:01:08 verbose #1638 > > inl exit_code, run_result = 00:01:08 verbose #1639 > > runtime.execution_options fun x => { x with 00:01:08 verbose #1640 > > command 00:01:08 verbose #1641 > > environment_variables 00:01:08 verbose #1642 > > working_directory = workspace_root_external |> resultm.box |> 00:01:08 verbose #1643 > > resultm.ok' 00:01:08 verbose #1644 > > } 00:01:08 verbose #1645 > > |> runtime.execute_with_options 00:01:08 verbose #1646 > > 00:01:08 verbose #1647 > > inl external_command = 00:01:08 verbose #1648 > > inl vars = 00:01:08 verbose #1649 > > a environment_variables 00:01:08 verbose #1650 > > |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string 00:01:08 verbose #1651 > > |> fun x => x : _ i32 _ 00:01:08 verbose #1652 > > |> seq.of_array 00:01:08 verbose #1653 > > |> sm'.concat ";" 00:01:08 verbose #1654 > > $'$"pwsh -c \'{!vars}; {!command}\'"' : string 00:01:08 verbose #1655 > > if exit_code = 0 then 00:01:08 verbose #1656 > > inl output = 00:01:08 verbose #1657 > > try 00:01:08 verbose #1658 > > fun () => 00:01:08 verbose #1659 > > run_result 00:01:08 verbose #1660 > > |> sm'.split "\n" 00:01:08 verbose #1661 > > |> fun x => a x : _ i32 _ 00:01:08 verbose #1662 > > |> seq.of_array 00:01:08 verbose #1663 > > |> sm'.concat "\n" 00:01:08 verbose #1664 > > fun ex => 00:01:08 verbose #1665 > > trace Critical 00:01:08 verbose #1666 > > fun () => "spiral_builder.process_python 00:01:08 verbose #1667 > > Exception" 00:01:08 verbose #1668 > > fun () => { ex new_code_path external_command 00:01:08 verbose #1669 > > run_result } 00:01:08 verbose #1670 > > None 00:01:08 verbose #1671 > > |> optionm'.box 00:01:08 verbose #1672 > > |> optionm'.unwrap 00:01:08 verbose #1673 > > 00:01:08 verbose #1674 > > { extension = Some extension; code = Some new_code; output = Some 00:01:08 verbose #1675 > > output } 00:01:08 verbose #1676 > > else 00:01:08 verbose #1677 > > trace Critical 00:01:08 verbose #1678 > > fun () => "spiral_builder.process_python / error" 00:01:08 verbose #1679 > > fun () => { exit_code run_result new_code_path external_command 00:01:08 verbose #1680 > > } 00:01:08 verbose #1681 > > { extension = Some extension; code = None; output = None } 00:01:08 verbose #1682 > > 00:01:08 verbose #1683 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:08 verbose #1684 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:08 verbose #1685 > > │ ## cuda │ 00:01:08 verbose #1686 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:08 verbose #1687 > > 00:01:08 verbose #1688 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:08 verbose #1689 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:08 verbose #1690 > > │ ### process_cuda │ 00:01:08 verbose #1691 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:08 verbose #1692 > > 00:01:08 verbose #1693 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:08 verbose #1694 > > inl process_cuda { py_path env deps } = 00:01:08 verbose #1695 > > inl extension = "py" 00:01:08 verbose #1696 > > 00:01:08 verbose #1697 > > inl new_code_path = py_path 00:01:08 verbose #1698 > > inl new_code = new_code_path |> file_system.read_all_text 00:01:08 verbose #1699 > > 00:01:08 verbose #1700 > > inl workspace_root_external = file_system.get_workspace_root_external () 00:01:08 verbose #1701 > > inl workspace_root = workspace_root_external |> resultm.box |> 00:01:08 verbose #1702 > > resultm.unwrap_or_else id 00:01:08 verbose #1703 > > 00:01:08 verbose #1704 > > inl package_dir = new_code_path |> file_system.get_directory_name 00:01:08 verbose #1705 > > 00:01:08 verbose #1706 > > inl manifest_path = 00:01:08 verbose #1707 > > match env with 00:01:08 verbose #1708 > > | Pip => package_dir </> "requirements.txt" 00:01:08 verbose #1709 > > | Poetry => package_dir </> "pyproject.toml" 00:01:08 verbose #1710 > > 00:01:08 verbose #1711 > > inl deps = 00:01:08 verbose #1712 > > deps 00:01:08 verbose #1713 > > |> am'.vec_map fun dep => 00:01:08 verbose #1714 > > inl dep = dep |> sm'.from_std_string 00:01:08 verbose #1715 > > if dep |> sm'.contains "=" 00:01:08 verbose #1716 > > then dep 00:01:08 verbose #1717 > > elif dep |> sm'.ends_with "]]" 00:01:08 verbose #1718 > > then dep |> sm'.replace "[[" $'$"={{version=\'*\',features=[["' |> 00:01:08 verbose #1719 > > fun x => $'$"{!x}}}"' 00:01:08 verbose #1720 > > else $'$"{!dep}=\'*\'"' 00:01:08 verbose #1721 > > |> am'.from_vec 00:01:08 verbose #1722 > > |> fun x => x : _ i32 _ 00:01:08 verbose #1723 > > |> seq.of_array' 00:01:08 verbose #1724 > > |> sm'.concat "\n" 00:01:08 verbose #1725 > > 00:01:08 verbose #1726 > > inl exit_code, run_result = 00:01:08 verbose #1727 > > if deps = "" 00:01:08 verbose #1728 > > then 0, "" 00:01:08 verbose #1729 > > else 00:01:08 verbose #1730 > > inl manifest = 00:01:08 verbose #1731 > > match env with 00:01:08 verbose #1732 > > | Pip => 00:01:08 verbose #1733 > > deps 00:01:08 verbose #1734 > > | Poetry => 00:01:08 verbose #1735 > > $'$"[[tool.poetry]]"' 00:01:08 verbose #1736 > > +#. $'$"name = \\\"test\\\""' 00:01:08 verbose #1737 > > +#. $'$"version = \\\"0.0.1\\\""' 00:01:08 verbose #1738 > > +#. $'$"description = \\\"\\\""' 00:01:08 verbose #1739 > > +#. $'$"authors = [[]]"' 00:01:08 verbose #1740 > > +#. $'$""' 00:01:08 verbose #1741 > > +#. $'$"[[tool.poetry.dependencies]]"' 00:01:08 verbose #1742 > > +#. $'$"python=\\\"~3.12\\\""' 00:01:08 verbose #1743 > > +#. $'$"{!deps}"' 00:01:08 verbose #1744 > > +#. $'$""' 00:01:08 verbose #1745 > > +#. $'$"[[build-system]]"' 00:01:08 verbose #1746 > > +#. $'$"requires = [[\\\"poetry-core\\\"]]"' 00:01:08 verbose #1747 > > +#. $'$"build-backend = \\\"poetry.core.masonry.api\\\""' 00:01:08 verbose #1748 > > 00:01:08 verbose #1749 > > manifest |> file_system.write_all_text_exists manifest_path 00:01:08 verbose #1750 > > 00:01:08 verbose #1751 > > runtime.execution_options fun x => { x with 00:01:08 verbose #1752 > > command = 00:01:08 verbose #1753 > > match env with 00:01:08 verbose #1754 > > | Pip => $'$"pip install -r requirements.txt"' 00:01:08 verbose #1755 > > | Poetry => $'$"poetry install"' 00:01:08 verbose #1756 > > working_directory = package_dir |> optionm'.some' 00:01:08 verbose #1757 > > } 00:01:08 verbose #1758 > > |> runtime.execute_with_options 00:01:08 verbose #1759 > > 00:01:08 verbose #1760 > > if exit_code <>. 0 then 00:01:08 verbose #1761 > > trace Critical 00:01:08 verbose #1762 > > fun () => "spiral_builder.process_cuda / env install error" 00:01:08 verbose #1763 > > fun () => { env exit_code run_result new_code_path } 00:01:08 verbose #1764 > > { extension = Some extension; code = None; output = None } 00:01:08 verbose #1765 > > else 00:01:08 verbose #1766 > > inl command = 00:01:08 verbose #1767 > > match env with 00:01:08 verbose #1768 > > | Pip => $'$"python \\\"{!new_code_path}\\\""' 00:01:08 verbose #1769 > > | Poetry => $'$"poetry run python \\\"{!new_code_path}\\\""' 00:01:08 verbose #1770 > > inl environment_variables = 00:01:08 verbose #1771 > > ;[[ 00:01:08 verbose #1772 > > "TRACE_LEVEL", "Verbose" 00:01:08 verbose #1773 > > ]] 00:01:08 verbose #1774 > > inl exit_code, run_result = 00:01:08 verbose #1775 > > runtime.execution_options fun x => { x with 00:01:08 verbose #1776 > > command 00:01:08 verbose #1777 > > environment_variables 00:01:08 verbose #1778 > > working_directory = package_dir |> optionm'.some' 00:01:08 verbose #1779 > > } 00:01:08 verbose #1780 > > |> runtime.execute_with_options 00:01:08 verbose #1781 > > 00:01:08 verbose #1782 > > inl external_command = 00:01:08 verbose #1783 > > inl vars = 00:01:08 verbose #1784 > > a environment_variables 00:01:08 verbose #1785 > > |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string 00:01:08 verbose #1786 > > |> fun x => x : _ i32 _ 00:01:08 verbose #1787 > > |> seq.of_array 00:01:08 verbose #1788 > > |> sm'.concat ";" 00:01:08 verbose #1789 > > $'$"pwsh -c \'{!vars}; {!command}\'"' : string 00:01:08 verbose #1790 > > if exit_code = 0 00:01:08 verbose #1791 > > || (run_result |> sm'.contains 00:01:08 verbose #1792 > > "cupy_backends.cuda.api.runtime.CUDARuntimeError: cudaErrorInsufficientDriver") 00:01:08 verbose #1793 > > then 00:01:08 verbose #1794 > > inl output = 00:01:08 verbose #1795 > > try 00:01:08 verbose #1796 > > fun () => 00:01:08 verbose #1797 > > run_result 00:01:08 verbose #1798 > > |> sm'.split "\n" 00:01:08 verbose #1799 > > |> fun x => a x : _ i32 _ 00:01:08 verbose #1800 > > |> seq.of_array 00:01:08 verbose #1801 > > |> sm'.concat "\n" 00:01:08 verbose #1802 > > fun ex => 00:01:08 verbose #1803 > > trace Critical 00:01:08 verbose #1804 > > fun () => "spiral_builder.process_cuda / Exception" 00:01:08 verbose #1805 > > fun () => { ex run_result new_code_path 00:01:08 verbose #1806 > > external_command } 00:01:08 verbose #1807 > > None 00:01:08 verbose #1808 > > |> optionm'.box 00:01:08 verbose #1809 > > |> optionm'.unwrap 00:01:08 verbose #1810 > > 00:01:08 verbose #1811 > > { extension = Some extension; code = Some new_code; output = Some 00:01:08 verbose #1812 > > output } 00:01:08 verbose #1813 > > else 00:01:08 verbose #1814 > > trace Critical 00:01:08 verbose #1815 > > fun () => "spiral_builder.process_cuda / error" 00:01:08 verbose #1816 > > fun () => { exit_code run_result new_code_path external_command 00:01:08 verbose #1817 > > } 00:01:08 verbose #1818 > > { extension = Some extension; code = None; output = None } 00:01:08 verbose #1819 > > 00:01:08 verbose #1820 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:08 verbose #1821 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:08 verbose #1822 > > │ ## fsharp │ 00:01:08 verbose #1823 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:08 verbose #1824 > > 00:01:08 verbose #1825 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:08 verbose #1826 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:08 verbose #1827 > > │ ### process_fsharp │ 00:01:08 verbose #1828 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:08 verbose #1829 > > 00:01:08 verbose #1830 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:08 verbose #1831 > > inl process_fsharp { spi_path } = 00:01:08 verbose #1832 > > inl extension = "fsx" 00:01:08 verbose #1833 > > 00:01:08 verbose #1834 > > inl new_code_path = spi_path 00:01:08 verbose #1835 > > inl new_code = new_code_path |> file_system.read_all_text 00:01:08 verbose #1836 > > 00:01:08 verbose #1837 > > inl workspace_root_external = file_system.get_workspace_root_external () 00:01:08 verbose #1838 > > inl workspace_root = workspace_root_external |> resultm.box |> 00:01:08 verbose #1839 > > resultm.unwrap_or_else id 00:01:08 verbose #1840 > > 00:01:08 verbose #1841 > > inl supervisor_path = workspace_root </> 00:01:08 verbose #1842 > > $"apps/spiral/dist/Supervisor!(platform.get_executable_suffix ())" 00:01:08 verbose #1843 > > inl code_dir = new_code_path |> file_system.get_directory_name 00:01:08 verbose #1844 > > inl file_name = new_code_path |> file_system.get_file_name_without_extension 00:01:08 verbose #1845 > > inl output_path = code_dir </> $'$"{!file_name}.{!extension}"' 00:01:08 verbose #1846 > > inl command = $'$"{!supervisor_path} --build-file \\\"{!new_code_path}\\\" 00:01:08 verbose #1847 > > \\\"{!output_path}\\\""' 00:01:08 verbose #1848 > > inl environment_variables = 00:01:08 verbose #1849 > > ;[[ 00:01:08 verbose #1850 > > "TRACE_LEVEL", "Verbose" 00:01:08 verbose #1851 > > ]] 00:01:08 verbose #1852 > > inl exit_code, run_result = 00:01:08 verbose #1853 > > runtime.execution_options fun x => { x with 00:01:08 verbose #1854 > > command 00:01:08 verbose #1855 > > environment_variables 00:01:08 verbose #1856 > > working_directory = workspace_root_external |> resultm.box |> 00:01:08 verbose #1857 > > resultm.ok' 00:01:08 verbose #1858 > > } 00:01:08 verbose #1859 > > |> runtime.execute_with_options 00:01:08 verbose #1860 > > 00:01:08 verbose #1861 > > inl external_command = 00:01:08 verbose #1862 > > inl vars = 00:01:08 verbose #1863 > > a environment_variables 00:01:08 verbose #1864 > > |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string 00:01:08 verbose #1865 > > |> fun x => x : _ i32 _ 00:01:08 verbose #1866 > > |> seq.of_array 00:01:08 verbose #1867 > > |> sm'.concat ";" 00:01:08 verbose #1868 > > $'$"pwsh -c \'{!vars}; {!command}\'"' : string 00:01:08 verbose #1869 > > if exit_code = 0 then 00:01:08 verbose #1870 > > inl output = 00:01:08 verbose #1871 > > try 00:01:08 verbose #1872 > > fun () => 00:01:08 verbose #1873 > > run_result 00:01:08 verbose #1874 > > |> sm'.split "\n" 00:01:08 verbose #1875 > > |> fun x => a x : _ i32 _ 00:01:08 verbose #1876 > > |> seq.of_array 00:01:08 verbose #1877 > > |> sm'.concat "\n" 00:01:08 verbose #1878 > > fun ex => 00:01:08 verbose #1879 > > trace Critical 00:01:08 verbose #1880 > > fun () => "spiral_builder.process_fsharp / Exception" 00:01:08 verbose #1881 > > fun () => { ex run_result new_code_path external_command 00:01:08 verbose #1882 > > } 00:01:08 verbose #1883 > > None 00:01:08 verbose #1884 > > |> optionm'.box 00:01:08 verbose #1885 > > |> optionm'.unwrap 00:01:08 verbose #1886 > > 00:01:08 verbose #1887 > > { extension = Some extension; code = Some new_code; output = Some output 00:01:08 verbose #1888 > > } 00:01:08 verbose #1889 > > else 00:01:08 verbose #1890 > > trace Critical 00:01:08 verbose #1891 > > fun () => "spiral_builder.process_fsharp / error" 00:01:08 verbose #1892 > > fun () => { exit_code run_result new_code_path external_command } 00:01:08 verbose #1893 > > { extension = Some extension; code = None; output = None } 00:01:08 verbose #1894 > > 00:01:08 verbose #1895 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:08 verbose #1896 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:08 verbose #1897 > > │ ## run │ 00:01:08 verbose #1898 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:08 verbose #1899 > > 00:01:08 verbose #1900 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:08 verbose #1901 > > let rec run trace_level (matches : runtime.arg_matches) : async.future_pin 00:01:08 verbose #1902 > > (resultm.result' string string) = 00:01:08 verbose #1903 > > fun () => 00:01:08 verbose #1904 > > match matches |> runtime.matches_subcommand |> optionm'.unbox with 00:01:08 verbose #1905 > > | Some (subcommand, arg_matches) 00:01:08 verbose #1906 > > when (subcommand |> sm'.from_std_string) = (get_args () .cuda |> 00:01:08 verbose #1907 > > fst) => 00:01:08 verbose #1908 > > 00:01:08 verbose #1909 > > inl py_path = 00:01:08 verbose #1910 > > arg_matches 00:01:08 verbose #1911 > > |> runtime.matches_get_one ((get_args () .cuda |> snd).py_path 00:01:08 verbose #1912 > > |> fst) 00:01:08 verbose #1913 > > |> optionm'.unbox 00:01:08 verbose #1914 > > |> optionm.value 00:01:08 verbose #1915 > > |> sm'.from_std_string 00:01:08 verbose #1916 > > 00:01:08 verbose #1917 > > inl env = 00:01:08 verbose #1918 > > arg_matches 00:01:08 verbose #1919 > > |> runtime.matches_get_one ((get_args () .cuda |> snd).env |> 00:01:08 verbose #1920 > > fst) 00:01:08 verbose #1921 > > |> optionm'.unbox 00:01:08 verbose #1922 > > |> optionm.map ( 00:01:08 verbose #1923 > > sm'.from_std_string 00:01:08 verbose #1924 > > >> reflection.union_try_pick 00:01:08 verbose #1925 > > ) 00:01:08 verbose #1926 > > |> optionm'.flatten 00:01:08 verbose #1927 > > |> optionm'.default_value Pip 00:01:08 verbose #1928 > > 00:01:08 verbose #1929 > > inl deps : am'.vec sm'.std_string = 00:01:08 verbose #1930 > > arg_matches 00:01:08 verbose #1931 > > |> runtime.matches_get_many ((get_args () .cuda |> snd).deps |> 00:01:08 verbose #1932 > > fst) 00:01:08 verbose #1933 > > |> optionm'.unbox 00:01:08 verbose #1934 > > |> optionm'.default_value (;[[]] |> am'.to_vec) 00:01:08 verbose #1935 > > 00:01:08 verbose #1936 > > inl command_result = 00:01:08 verbose #1937 > > process_cuda { py_path env deps } 00:01:08 verbose #1938 > > |> fun { extension code output } => 00:01:08 verbose #1939 > > ;[[ 00:01:08 verbose #1940 > > "extension", extension |> optionm'.default_value "" 00:01:08 verbose #1941 > > "code", code |> optionm'.default_value "" 00:01:08 verbose #1942 > > "output", output |> optionm'.default_value "" 00:01:08 verbose #1943 > > ]] 00:01:08 verbose #1944 > > 00:01:08 verbose #1945 > > ;[[ 00:01:08 verbose #1946 > > "command_result", 00:01:08 verbose #1947 > > command_result 00:01:08 verbose #1948 > > |> am'.to_vec 00:01:08 verbose #1949 > > |> am'.vec_map' fun k, v => 00:01:08 verbose #1950 > > new_pair (sm'.to_std_string k) (sm'.to_std_string v) 00:01:08 verbose #1951 > > |> mapm.b_tree_map_from_vec_pairs 00:01:08 verbose #1952 > > |> sm'.serialize 00:01:08 verbose #1953 > > |> resultm.unwrap' 00:01:08 verbose #1954 > > |> sm'.from_std_string 00:01:08 verbose #1955 > > ]] 00:01:08 verbose #1956 > > 00:01:08 verbose #1957 > > | Some (subcommand, arg_matches) 00:01:08 verbose #1958 > > when (subcommand |> sm'.from_std_string) = (get_args () .fable 00:01:08 verbose #1959 > > |> fst) => 00:01:08 verbose #1960 > > 00:01:08 verbose #1961 > > inl fs_path = 00:01:08 verbose #1962 > > arg_matches 00:01:08 verbose #1963 > > |> runtime.matches_get_one ((get_args () .fable |> snd).fs_path 00:01:08 verbose #1964 > > |> fst) 00:01:08 verbose #1965 > > |> optionm'.unbox 00:01:08 verbose #1966 > > |> optionm.value 00:01:08 verbose #1967 > > |> sm'.from_std_string 00:01:08 verbose #1968 > > 00:01:08 verbose #1969 > > inl command = 00:01:08 verbose #1970 > > arg_matches 00:01:08 verbose #1971 > > |> runtime.matches_get_one ((get_args () .fable |> snd).command 00:01:08 verbose #1972 > > |> fst) 00:01:08 verbose #1973 > > |> optionm'.unbox 00:01:08 verbose #1974 > > |> optionm.map sm'.from_std_string 00:01:08 verbose #1975 > > 00:01:08 verbose #1976 > > inl command_result = 00:01:08 verbose #1977 > > match command with 00:01:08 verbose #1978 > > | Some command => 00:01:08 verbose #1979 > > get_command () 00:01:08 verbose #1980 > > |> runtime.command_get_matches_from ( 00:01:08 verbose #1981 > > $'$"_ {!command} --fs-path \\\"{!fs_path}\\\""' |> 00:01:08 verbose #1982 > > runtime.split_args |> resultm.get 00:01:08 verbose #1983 > > ) 00:01:08 verbose #1984 > > |> run trace_level 00:01:08 verbose #1985 > > |> async.await 00:01:08 verbose #1986 > > |> resultm.unwrap' 00:01:08 verbose #1987 > > | None => "{}" 00:01:08 verbose #1988 > > 00:01:08 verbose #1989 > > ;[[ 00:01:08 verbose #1990 > > "command_result", 00:01:08 verbose #1991 > > command_result 00:01:08 verbose #1992 > > ]] 00:01:08 verbose #1993 > > 00:01:08 verbose #1994 > > | Some (subcommand, arg_matches) 00:01:08 verbose #1995 > > when (subcommand |> sm'.from_std_string) = (get_args () .dib |> fst) 00:01:08 verbose #1996 > > => 00:01:08 verbose #1997 > > 00:01:08 verbose #1998 > > inl path = 00:01:08 verbose #1999 > > arg_matches 00:01:08 verbose #2000 > > |> runtime.matches_get_one ((get_args () .dib |> snd).path |> 00:01:08 verbose #2001 > > fst) 00:01:08 verbose #2002 > > |> optionm'.map'' ( 00:01:08 verbose #2003 > > sm'.from_std_string 00:01:08 verbose #2004 > > >> file_system.absolute_path 00:01:08 verbose #2005 > > ) 00:01:08 verbose #2006 > > |> optionm'.unwrap 00:01:08 verbose #2007 > > 00:01:08 verbose #2008 > > inl retries = 00:01:08 verbose #2009 > > arg_matches 00:01:08 verbose #2010 > > |> runtime.matches_get_one ((get_args () .dib |> snd).retries |> 00:01:08 verbose #2011 > > fst) 00:01:08 verbose #2012 > > |> optionm'.default_value' 1u8 00:01:08 verbose #2013 > > 00:01:08 verbose #2014 > > inl working_directory = 00:01:08 verbose #2015 > > arg_matches 00:01:08 verbose #2016 > > |> runtime.matches_get_one ((get_args () .dib |> 00:01:08 verbose #2017 > > snd).working_directory |> fst) 00:01:08 verbose #2018 > > |> optionm'.unbox 00:01:08 verbose #2019 > > 00:01:08 verbose #2020 > > process_dib { path retries working_directory } 00:01:08 verbose #2021 > > 00:01:08 verbose #2022 > > | matches => 00:01:08 verbose #2023 > > match matches with 00:01:08 verbose #2024 > > | Some (subcommand, arg_matches) 00:01:08 verbose #2025 > > when (subcommand |> sm'.from_std_string) = (get_args () 00:01:08 verbose #2026 > > .rust |> fst) => 00:01:08 verbose #2027 > > 00:01:08 verbose #2028 > > inl fs_path = 00:01:08 verbose #2029 > > arg_matches 00:01:08 verbose #2030 > > |> runtime.matches_get_one ((get_args () .rust |> 00:01:08 verbose #2031 > > snd).fs_path |> fst) 00:01:08 verbose #2032 > > |> optionm'.unbox 00:01:08 verbose #2033 > > |> optionm.value 00:01:08 verbose #2034 > > |> sm'.from_std_string 00:01:08 verbose #2035 > > 00:01:08 verbose #2036 > > inl deps : am'.vec sm'.std_string = 00:01:08 verbose #2037 > > arg_matches 00:01:08 verbose #2038 > > |> runtime.matches_get_many ((get_args () .rust |> snd).deps 00:01:08 verbose #2039 > > |> fst) 00:01:08 verbose #2040 > > |> optionm'.unbox 00:01:08 verbose #2041 > > |> optionm'.default_value (;[[]] |> am'.to_vec) 00:01:08 verbose #2042 > > 00:01:08 verbose #2043 > > inl wasm = 00:01:08 verbose #2044 > > arg_matches 00:01:08 verbose #2045 > > |> runtime.matches_get_one ((get_args () .rust |> snd).wasm 00:01:08 verbose #2046 > > |> fst) 00:01:08 verbose #2047 > > |> optionm'.unbox 00:01:08 verbose #2048 > > |> optionm.map sm'.from_std_string 00:01:08 verbose #2049 > > 00:01:08 verbose #2050 > > inl contract = 00:01:08 verbose #2051 > > arg_matches 00:01:08 verbose #2052 > > |> runtime.matches_get_one ((get_args () .rust |> 00:01:08 verbose #2053 > > snd).contract |> fst) 00:01:08 verbose #2054 > > |> optionm'.unbox 00:01:08 verbose #2055 > > |> optionm.map sm'.from_std_string 00:01:08 verbose #2056 > > 00:01:08 verbose #2057 > > inl runtime = 00:01:08 verbose #2058 > > match wasm, contract with 00:01:08 verbose #2059 > > | Some wasm, _ => Wasm wasm |> Some 00:01:08 verbose #2060 > > | _, Some contract => Contract contract |> Some 00:01:08 verbose #2061 > > | _ => None 00:01:08 verbose #2062 > > 00:01:08 verbose #2063 > > process_rust { fs_path deps trace_level runtime } 00:01:08 verbose #2064 > > 00:01:08 verbose #2065 > > | Some (subcommand, arg_matches) 00:01:08 verbose #2066 > > when (subcommand |> sm'.from_std_string) = (get_args () 00:01:08 verbose #2067 > > .typescript |> fst) => 00:01:08 verbose #2068 > > 00:01:08 verbose #2069 > > inl fs_path = 00:01:08 verbose #2070 > > arg_matches 00:01:08 verbose #2071 > > |> runtime.matches_get_one ((get_args () .typescript |> 00:01:08 verbose #2072 > > snd).fs_path |> fst) 00:01:08 verbose #2073 > > |> optionm'.unbox 00:01:08 verbose #2074 > > |> optionm.value 00:01:08 verbose #2075 > > |> sm'.from_std_string 00:01:08 verbose #2076 > > 00:01:08 verbose #2077 > > inl deps : am'.vec sm'.std_string = 00:01:08 verbose #2078 > > arg_matches 00:01:08 verbose #2079 > > |> runtime.matches_get_many ((get_args () .typescript |> 00:01:08 verbose #2080 > > snd).deps |> fst) 00:01:08 verbose #2081 > > |> optionm'.unbox 00:01:08 verbose #2082 > > |> optionm'.default_value (;[[]] |> am'.to_vec) 00:01:08 verbose #2083 > > 00:01:08 verbose #2084 > > process_typescript { fs_path deps trace_level } 00:01:08 verbose #2085 > > 00:01:08 verbose #2086 > > | Some (subcommand, arg_matches) 00:01:08 verbose #2087 > > when (subcommand |> sm'.from_std_string) = (get_args () 00:01:08 verbose #2088 > > .python |> fst) => 00:01:08 verbose #2089 > > inl fs_path = 00:01:08 verbose #2090 > > arg_matches 00:01:08 verbose #2091 > > |> runtime.matches_get_one ((get_args () .python |> 00:01:08 verbose #2092 > > snd).fs_path |> fst) 00:01:08 verbose #2093 > > |> optionm'.unbox 00:01:08 verbose #2094 > > |> optionm.value 00:01:08 verbose #2095 > > |> sm'.from_std_string 00:01:08 verbose #2096 > > 00:01:08 verbose #2097 > > inl deps : am'.vec sm'.std_string = 00:01:08 verbose #2098 > > arg_matches 00:01:08 verbose #2099 > > |> runtime.matches_get_many ((get_args () .python |> 00:01:08 verbose #2100 > > snd).deps |> fst) 00:01:08 verbose #2101 > > |> optionm'.unbox 00:01:08 verbose #2102 > > |> optionm'.default_value (;[[]] |> am'.to_vec) 00:01:08 verbose #2103 > > 00:01:08 verbose #2104 > > process_python { fs_path deps trace_level } 00:01:08 verbose #2105 > > 00:01:08 verbose #2106 > > | Some (subcommand, arg_matches) => 00:01:08 verbose #2107 > > trace Debug 00:01:08 verbose #2108 > > fun () => $'"spiral_builder.run / invalid subcommand"' 00:01:08 verbose #2109 > > fun () => { subcommand arg_matches } 00:01:08 verbose #2110 > > 00:01:08 verbose #2111 > > { extension = None; code = None; output = None } 00:01:08 verbose #2112 > > | _ => 00:01:08 verbose #2113 > > { extension = None; code = None; output = None } 00:01:08 verbose #2114 > > |> fun { extension code output } => 00:01:08 verbose #2115 > > ;[[ 00:01:08 verbose #2116 > > "extension", extension |> optionm'.default_value "" 00:01:08 verbose #2117 > > "code", code |> optionm'.default_value "" 00:01:08 verbose #2118 > > "output", output |> optionm'.default_value "" 00:01:08 verbose #2119 > > ]] 00:01:08 verbose #2120 > > |> am'.to_vec 00:01:08 verbose #2121 > > |> am'.vec_map' fun k, v => 00:01:08 verbose #2122 > > new_pair (sm'.to_std_string k) (sm'.to_std_string v) 00:01:08 verbose #2123 > > |> mapm.b_tree_map_from_vec_pairs 00:01:08 verbose #2124 > > |> sm'.serialize 00:01:08 verbose #2125 > > |> resultm.map_error' (sm'.format' >> sm'.from_std_string) 00:01:08 verbose #2126 > > |> resultm.map' sm'.from_std_string 00:01:08 verbose #2127 > > |> async.new_future_move 00:01:09 verbose #2128 > > 00:01:09 verbose #2129 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:09 verbose #2130 > > //// test 00:01:09 verbose #2131 > > ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io futures rand 00:01:09 verbose #2132 > > rayon regex serde_json sha2 tokio[['rt-multi-thread']] tokio-stream 00:01:09 verbose #2133 > > 00:01:09 verbose #2134 > > inl file_name = "main.fs" 00:01:09 verbose #2135 > > inl code = "3 - 6 |> System.Console.WriteLine\n" 00:01:09 verbose #2136 > > 00:01:09 verbose #2137 > > inl temp_dir, disposable = 00:01:09 verbose #2138 > > (file_name, code) 00:01:09 verbose #2139 > > |> sm'.format_debug 00:01:09 verbose #2140 > > |> crypto.hash_text 00:01:09 verbose #2141 > > |> file_system.create_temp_dir' 00:01:09 verbose #2142 > > inl fs_path = temp_dir </> file_name 00:01:09 verbose #2143 > > 00:01:09 verbose #2144 > > code |> file_system.write_all_text fs_path 00:01:09 verbose #2145 > > 00:01:09 verbose #2146 > > get_command () 00:01:09 verbose #2147 > > |> runtime.command_get_matches_from ($'$"_ fable -f \\\"{!fs_path}\\\" -c 00:01:09 verbose #2148 > > \\\"rust -d regex=\'*\'\\\""' |> runtime.split_args |> resultm.get) 00:01:09 verbose #2149 > > |> run Verbose 00:01:09 verbose #2150 > > |> async.block_on 00:01:09 verbose #2151 > > |> resultm.unwrap' 00:01:09 verbose #2152 > > |> sm'.deserialize 00:01:09 verbose #2153 > > |> resultm.unwrap' 00:01:09 verbose #2154 > > |> mapm.get ("command_result" |> sm'.to_std_string) 00:01:09 verbose #2155 > > |> optionm'.unwrap 00:01:09 verbose #2156 > > |> sm'.from_std_string 00:01:09 verbose #2157 > > |> sm'.deserialize 00:01:09 verbose #2158 > > |> resultm.unwrap' 00:01:09 verbose #2159 > > |> fun result => 00:01:09 verbose #2160 > > result 00:01:09 verbose #2161 > > |> mapm.get ("extension" |> sm'.to_std_string) 00:01:09 verbose #2162 > > |> optionm'.unwrap 00:01:09 verbose #2163 > > |> sm'.from_std_string 00:01:09 verbose #2164 > > |> _assert_eq "rs" 00:01:09 verbose #2165 > > result 00:01:09 verbose #2166 > > |> mapm.get ("output" |> sm'.to_std_string) 00:01:09 verbose #2167 > > |> optionm'.unwrap 00:01:09 verbose #2168 > > |> sm'.from_std_string 00:01:09 verbose #2169 > > |> _assert_eq "-3" 00:01:09 verbose #2170 > > 00:01:09 verbose #2171 > > disposable |> use |> ignore 00:02:03 verbose #2172 > > 00:02:03 verbose #2173 > > ╭─[ 54.77s - return value ]────────────────────────────────────────────────────╮ 00:02:03 verbose #2174 > > │ 00:00:00 verbose #1 file_system.create_dir / { dir = │ 00:02:03 verbose #2175 > > │ /tmp/!create_temp_path_/spiral_builder_7dec2b5b7d50c4297637cd2f555fffdabf6a2 │ 00:02:03 verbose #2176 > > │ d717858f05e37cfbe5f28747b3f/c6422374-71e4-07d4-0ba4-c3084b24fbba } │ 00:02:03 verbose #2177 > > │ 00:00:00 verbose #2 file_system.create_dir / { dir = │ 00:02:03 verbose #2178 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pac │ 00:02:03 verbose #2179 > > │ kages/Rust/f58a8f60b65e9bacc8229b6e2ae18dba8f9dc103c5ce2ad7e4d7d392fe9ebb1e │ 00:02:03 verbose #2180 > > │ } │ 00:02:03 verbose #2181 > > │ 00:00:00 verbose #3 file_system.create_dir / { dir = │ 00:02:03 verbose #2182 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pac │ 00:02:03 verbose #2183 > > │ kages/Rust/f58a8f60b65e9bacc8229b6e2ae18dba8f9dc103c5ce2ad7e4d7d392fe9ebb1e/ │ 00:02:03 verbose #2184 > > │ fable_modules } │ 00:02:03 verbose #2185 > > │ 00:00:00 debug #4 runtime.execute_with_options / { file_name = │ 00:02:03 verbose #2186 > > │ dotnet; arguments = [ │ 00:02:03 verbose #2187 > > │ "fable", │ 00:02:03 verbose #2188 > > │ │ 00:02:03 verbose #2189 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │ 00:02:03 verbose #2190 > > │ ckages/Rust/f58a8f60b65e9bacc8229b6e2ae18dba8f9dc103c5ce2ad7e4d7d392fe9ebb1e │ 00:02:03 verbose #2191 > > │ /spiral_builder.fsproj", │ 00:02:03 verbose #2192 > > │ "--optimize", │ 00:02:03 verbose #2193 > > │ "--lang", │ 00:02:03 verbose #2194 > > │ "rs", │ 00:02:03 verbose #2195 > > │ "--extension", │ 00:02:03 verbose #2196 > > │ ".rs", │ 00:02:03 verbose #2197 > > │ "--outDir", │ 00:02:03 verbose #2198 > > │ │ 00:02:03 verbose #2199 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │ 00:02:03 verbose #2200 > > │ ckages/Rust/f58a8f60b65e9bacc8229b6e2ae18dba8f9dc103c5ce2ad7e4d7d392fe9ebb1e │ 00:02:03 verbose #2201 > > │ ", │ 00:02:03 verbose #2202 > > │ "--define", │ 00:02:03 verbose #2203 > > │ "_LINUX", │ 00:02:03 verbose #2204 > > │ ]; options = { command = dotnet fable │ 00:02:03 verbose #2205 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │ 00:02:03 verbose #2206 > > │ ckages/Rust/f58a8f60b65e9bacc8229b6e2ae18dba8f9dc103c5ce2ad7e4d7d392fe9ebb1e │ 00:02:03 verbose #2207 > > │ /spiral_builder.fsproj" --optimize --lang rs --extension .rs --outDir │ 00:02:03 verbose #2208 > > │ "/home/runner/wor...9ebb1e/spiral_builder.rs; cleanup = │ 00:02:03 verbose #2209 > > │ UH4_1("/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_buil │ 00:02:03 verbose #2210 > > │ der/packages/Rust/f58a8f60b65e9bacc8229b6e2ae18dba8f9dc103c5ce2ad7e4d7d392fe │ 00:02:03 verbose #2211 > > │ 9ebb1e/../../../target/debug/spiral_builder_f58a8f60b65e9bacc8229b6e2ae18dba │ 00:02:03 verbose #2212 > > │ 8f9dc103c5ce2ad7e4d7d392fe9ebb1e.d", true, │ 00:02:03 verbose #2213 > > │ UH4_1("/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_buil │ 00:02:03 verbose #2214 > > │ der/packages/Rust/f58a8f60b65e9bacc8229b6e2ae18dba8f9dc103c5ce2ad7e4d7d392fe │ 00:02:03 verbose #2215 > > │ 9ebb1e/../../../target/debug/spiral_builder_f58a8f60b65e9bacc8229b6e2ae18dba │ 00:02:03 verbose #2216 > > │ 8f9dc103c5ce2ad7e4d7d392fe9ebb1e.exe", false, │ 00:02:03 verbose #2217 > > │ UH4_1("/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_buil │ 00:02:03 verbose #2218 > > │ der/packages/Rust/f58a8f60b65e9bacc8229b6e2ae18dba8f9dc103c5ce2ad7e4d7d392fe │ 00:02:03 verbose #2219 > > │ 9ebb1e/../../../target/debug/spiral_builder_f58a8f60b65e9bacc8229b6e2ae18dba │ 00:02:03 verbose #2220 > > │ 8f9dc103c5ce2ad7e4d7d392fe9ebb1e.pdb", false, │ 00:02:03 verbose #2221 > > │ UH4_1("/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_buil │ 00:02:03 verbose #2222 > > │ der/packages/Rust/f58a8f60b65e9bacc8229b6e2ae18dba8f9dc103c5ce2ad7e4d7d392fe │ 00:02:03 verbose #2223 > > │ 9ebb1e/../../../target/debug/spiral_builder_f58a8f60b65e9bacc8229b6e2ae18dba │ 00:02:03 verbose #2224 > > │ 8f9dc103c5ce2ad7e4d7d392fe9ebb1e.wasm", false, │ 00:02:03 verbose #2225 > > │ UH4_1("/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_buil │ 00:02:03 verbose #2226 > > │ der/packages/Rust/f58a8f60b65e9bacc8229b6e2ae18dba8f9dc103c5ce2ad7e4d7d392fe │ 00:02:03 verbose #2227 > > │ 9ebb1e/../../../target/debug/spiral_builder_f58a8f60b65e9bacc8229b6e2ae18dba │ 00:02:03 verbose #2228 > > │ 8f9dc103c5ce2ad7e4d7d392fe9ebb1e", true, UH4_0))))) } │ 00:02:03 verbose #2229 > > │ __assert_eq / actual: "rs" / expected: "rs" │ 00:02:03 verbose #2230 > > │ __assert_eq / actual: "-3" / expected: "-3" │ 00:02:03 verbose #2231 > > │ │ 00:02:03 verbose #2232 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:03 verbose #2233 > > 00:02:03 verbose #2234 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:03 verbose #2235 > > //// test 00:02:03 verbose #2236 > > ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io futures rand 00:02:03 verbose #2237 > > rayon regex serde_json sha2 tokio[['rt-multi-thread']] tokio-stream 00:02:03 verbose #2238 > > 00:02:03 verbose #2239 > > inl file_name = "main.fs" 00:02:03 verbose #2240 > > inl code = "3 - 6 |> System.Console.WriteLine\n" 00:02:03 verbose #2241 > > 00:02:03 verbose #2242 > > inl temp_dir, disposable = 00:02:03 verbose #2243 > > (file_name, code) 00:02:03 verbose #2244 > > |> sm'.format_debug 00:02:03 verbose #2245 > > |> crypto.hash_text 00:02:03 verbose #2246 > > |> file_system.create_temp_dir' 00:02:03 verbose #2247 > > inl fs_path = temp_dir </> file_name 00:02:03 verbose #2248 > > 00:02:03 verbose #2249 > > code |> file_system.write_all_text fs_path 00:02:03 verbose #2250 > > 00:02:03 verbose #2251 > > get_command () 00:02:03 verbose #2252 > > |> runtime.command_get_matches_from ($'$"_ fable -f \\\"{!fs_path}\\\" -c 00:02:03 verbose #2253 > > \\\"typescript\\\""' |> runtime.split_args |> resultm.get) 00:02:03 verbose #2254 > > |> run Verbose 00:02:03 verbose #2255 > > |> async.block_on 00:02:03 verbose #2256 > > |> resultm.unwrap' 00:02:03 verbose #2257 > > |> sm'.deserialize 00:02:03 verbose #2258 > > |> resultm.unwrap' 00:02:03 verbose #2259 > > |> mapm.get ("command_result" |> sm'.to_std_string) 00:02:03 verbose #2260 > > |> optionm'.unwrap 00:02:03 verbose #2261 > > |> sm'.from_std_string 00:02:03 verbose #2262 > > |> sm'.deserialize 00:02:03 verbose #2263 > > |> resultm.unwrap' 00:02:03 verbose #2264 > > |> fun result => 00:02:03 verbose #2265 > > result 00:02:03 verbose #2266 > > |> mapm.get ("extension" |> sm'.to_std_string) 00:02:03 verbose #2267 > > |> optionm'.unwrap 00:02:03 verbose #2268 > > |> sm'.from_std_string 00:02:03 verbose #2269 > > |> _assert_eq "ts" 00:02:03 verbose #2270 > > result 00:02:03 verbose #2271 > > |> mapm.get ("output" |> sm'.to_std_string) 00:02:03 verbose #2272 > > |> optionm'.unwrap 00:02:03 verbose #2273 > > |> sm'.from_std_string 00:02:03 verbose #2274 > > |> _assert_eq "-3" 00:02:03 verbose #2275 > > 00:02:03 verbose #2276 > > disposable |> use |> ignore 00:02:45 verbose #2277 > > 00:02:45 verbose #2278 > > ╭─[ 41.89s - return value ]────────────────────────────────────────────────────╮ 00:02:45 verbose #2279 > > │ 00:00:00 verbose #1 file_system.create_dir / { dir = │ 00:02:45 verbose #2280 > > │ /tmp/!create_temp_path_/spiral_builder_2c5443a21ef42014009c2a40842f5b069d5df │ 00:02:45 verbose #2281 > > │ 7eb87f983ba7a395e015d123dd6/c6422374-71e4-07d4-0ba4-c3084b24fbba } │ 00:02:45 verbose #2282 > > │ 00:00:00 verbose #2 file_system.create_dir / { dir = │ 00:02:45 verbose #2283 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pac │ 00:02:45 verbose #2284 > > │ kages/TypeScript/702335b0756baa7db0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aaa │ 00:02:45 verbose #2285 > > │ 8c4a8 } │ 00:02:45 verbose #2286 > > │ 00:00:00 debug #3 spiral_builder.process_typescript / { version = │ 00:02:45 verbose #2287 > > │ US43_1 } │ 00:02:45 verbose #2288 > > │ 00:00:00 debug #4 runtime.execute_with_options / { file_name = │ 00:02:45 verbose #2289 > > │ dotnet; arguments = [ │ 00:02:45 verbose #2290 > > │ "fable", │ 00:02:45 verbose #2291 > > │ │ 00:02:45 verbose #2292 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │ 00:02:45 verbose #2293 > > │ ckages/TypeScript/702335b0756baa7db0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aa │ 00:02:45 verbose #2294 > > │ a8c4a8/spiral_builder.fsproj", │ 00:02:45 verbose #2295 > > │ "--optimize", │ 00:02:45 verbose #2296 > > │ "--lang", │ 00:02:45 verbose #2297 > > │ "ts", │ 00:02:45 verbose #2298 > > │ "--extension", │ 00:02:45 verbose #2299 > > │ ".ts", │ 00:02:45 verbose #2300 > > │ "--outDir", │ 00:02:45 verbose #2301 > > │ │ 00:02:45 verbose #2302 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │ 00:02:45 verbose #2303 > > │ ckages/TypeScript/702335b0756baa7db0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aa │ 00:02:45 verbose #2304 > > │ a8c4a8", │ 00:02:45 verbose #2305 > > │ "--define", │ 00:02:45 verbose #2306 > > │ "_LINUX", │ 00:02:45 verbose #2307 > > │ ]; options = { command = dotnet fable │ 00:02:45 verbose #2308 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │ 00:02:45 verbose #2309 > > │ ckages/TypeScript/702335b0756baa7db0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aa │ 00:02:45 verbose #2310 > > │ a8c4a8/spiral_builder.fsproj" --optimize --lang ts --extension .ts --outDir │ 00:02:45 verbose #2311 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │ 00:02:45 verbose #2312 > > │ ckages/TypeScript/702335b0756baa7db0d02dbbeaf9fc04cf2c3b7dbb4..._with_option │ 00:02:45 verbose #2313 > > │ s / { file_name = bun; arguments = [ │ 00:02:45 verbose #2314 > > │ "run", │ 00:02:45 verbose #2315 > > │ │ 00:02:45 verbose #2316 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │ 00:02:45 verbose #2317 > > │ ckages/TypeScript/702335b0756baa7db0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aa │ 00:02:45 verbose #2318 > > │ a8c4a8/spiral_builder.ts", │ 00:02:45 verbose #2319 > > │ ]; options = { command = bun run │ 00:02:45 verbose #2320 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │ 00:02:45 verbose #2321 > > │ ckages/TypeScript/702335b0756baa7db0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aa │ 00:02:45 verbose #2322 > > │ a8c4a8/spiral_builder.ts"; cancellation_token = None; environment_variables │ 00:02:45 verbose #2323 > > │ = Array(MutCell([("PATH", │ 00:02:45 verbose #2324 > > │ "~/.bun/bin:/opt/microsoft/powershell/7:/home/runner/.local/bin:/opt/hostedt │ 00:02:45 verbose #2325 > > │ oolcache/Python/3.12.5/x64/bin:/opt/hostedtoolcache/Python/3.12.5/x64:/opt/h │ 00:02:45 verbose #2326 > > │ ostedtoolcache/node/21.7.3/x64/bin:/usr/share/dotnet:/home/runner/.cargo/bin │ 00:02:45 verbose #2327 > > │ :/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/ho │ 00:02:45 verbose #2328 > > │ me/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.do │ 00:02:45 verbose #2329 > > │ tnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr │ 00:02:45 verbose #2330 > > │ /games:/usr/local/games:/snap/bin:/home/runner/.cargo/bin:/home/runner/.bun/ │ 00:02:45 verbose #2331 > > │ bin:/home/runner/.cargo/bin:/home/runner/.bun/bin:/home/runner/.cargo/bin:/h │ 00:02:45 verbose #2332 > > │ ome/runner/.bun/bin"), ("TRACE_LEVEL", "Verbose")])); on_line = None; stdin │ 00:02:45 verbose #2333 > > │ = None; trace = true; working_directory = None } } │ 00:02:45 verbose #2334 > > │ 00:00:05 verbose #27 > -3 │ 00:02:45 verbose #2335 > > │ 00:00:05 verbose #28 runtime.execute_with_options / result / { │ 00:02:45 verbose #2336 > > │ exit_code = 0; std_trace_length = 2 } │ 00:02:45 verbose #2337 > > │ __assert_eq / actual: "ts" / expected: "ts" │ 00:02:45 verbose #2338 > > │ __assert_eq / actual: "-3" / expected: "-3" │ 00:02:45 verbose #2339 > > │ │ 00:02:45 verbose #2340 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:45 verbose #2341 > > 00:02:45 verbose #2342 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:45 verbose #2343 > > //// test 00:02:45 verbose #2344 > > ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io futures rand 00:02:45 verbose #2345 > > rayon regex serde_json sha2 tokio[['rt-multi-thread']] tokio-stream 00:02:45 verbose #2346 > > 00:02:45 verbose #2347 > > inl file_name = "main.fs" 00:02:45 verbose #2348 > > inl code = "3 - 6 |> System.Console.WriteLine\n" 00:02:45 verbose #2349 > > 00:02:45 verbose #2350 > > inl temp_dir, disposable = 00:02:45 verbose #2351 > > (file_name, code) 00:02:45 verbose #2352 > > |> sm'.format_debug 00:02:45 verbose #2353 > > |> crypto.hash_text 00:02:45 verbose #2354 > > |> file_system.create_temp_dir' 00:02:45 verbose #2355 > > inl fs_path = temp_dir </> file_name 00:02:45 verbose #2356 > > 00:02:45 verbose #2357 > > code |> file_system.write_all_text fs_path 00:02:45 verbose #2358 > > 00:02:45 verbose #2359 > > get_command () 00:02:45 verbose #2360 > > |> runtime.command_get_matches_from ($'$"_ fable -f \\\"{!fs_path}\\\" -c 00:02:45 verbose #2361 > > \\\"python\\\""' |> runtime.split_args |> resultm.get) 00:02:45 verbose #2362 > > |> run Verbose 00:02:45 verbose #2363 > > |> async.block_on 00:02:45 verbose #2364 > > |> resultm.unwrap' 00:02:45 verbose #2365 > > |> sm'.deserialize 00:02:45 verbose #2366 > > |> resultm.unwrap' 00:02:45 verbose #2367 > > |> mapm.get ("command_result" |> sm'.to_std_string) 00:02:45 verbose #2368 > > |> optionm'.unwrap 00:02:45 verbose #2369 > > |> sm'.from_std_string 00:02:45 verbose #2370 > > |> sm'.deserialize 00:02:45 verbose #2371 > > |> resultm.unwrap' 00:02:45 verbose #2372 > > |> fun result => 00:02:45 verbose #2373 > > result 00:02:45 verbose #2374 > > |> mapm.get ("extension" |> sm'.to_std_string) 00:02:45 verbose #2375 > > |> optionm'.unwrap 00:02:45 verbose #2376 > > |> sm'.from_std_string 00:02:45 verbose #2377 > > |> _assert_eq "py" 00:02:45 verbose #2378 > > result 00:02:45 verbose #2379 > > |> mapm.get ("output" |> sm'.to_std_string) 00:02:45 verbose #2380 > > |> optionm'.unwrap 00:02:45 verbose #2381 > > |> sm'.from_std_string 00:02:45 verbose #2382 > > |> _assert_eq "-3" 00:02:45 verbose #2383 > > 00:02:45 verbose #2384 > > disposable |> use |> ignore 00:03:27 verbose #2385 > > 00:03:27 verbose #2386 > > ╭─[ 41.33s - return value ]────────────────────────────────────────────────────╮ 00:03:27 verbose #2387 > > │ 00:00:00 verbose #1 file_system.create_dir / { dir = │ 00:03:27 verbose #2388 > > │ /tmp/!create_temp_path_/spiral_builder_499b56e6196d8ec052e922be6113256caf6ca │ 00:03:27 verbose #2389 > > │ 2c7abe17bf2050c4c57140d2eec/c6422374-71e4-07d4-0ba4-c3084b24fbba } │ 00:03:27 verbose #2390 > > │ 00:00:00 verbose #2 file_system.create_dir / { dir = │ 00:03:27 verbose #2391 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pac │ 00:03:27 verbose #2392 > > │ kages/Python/cb8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680c │ 00:03:27 verbose #2393 > > │ e } │ 00:03:27 verbose #2394 > > │ 00:00:00 verbose #3 file_system.create_dir / { dir = │ 00:03:27 verbose #2395 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pac │ 00:03:27 verbose #2396 > > │ kages/Python/cb8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680c │ 00:03:27 verbose #2397 > > │ e/fable_modules } │ 00:03:27 verbose #2398 > > │ 00:00:00 debug #4 runtime.execute_with_options / { file_name = │ 00:03:27 verbose #2399 > > │ dotnet; arguments = [ │ 00:03:27 verbose #2400 > > │ "fable", │ 00:03:27 verbose #2401 > > │ │ 00:03:27 verbose #2402 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │ 00:03:27 verbose #2403 > > │ ckages/Python/cb8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680 │ 00:03:27 verbose #2404 > > │ ce/spiral_builder.fsproj", │ 00:03:27 verbose #2405 > > │ "--optimize", │ 00:03:27 verbose #2406 > > │ "--lang", │ 00:03:27 verbose #2407 > > │ "py", │ 00:03:27 verbose #2408 > > │ "--extension", │ 00:03:27 verbose #2409 > > │ ".py", │ 00:03:27 verbose #2410 > > │ "--outDir", │ 00:03:27 verbose #2411 > > │ │ 00:03:27 verbose #2412 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │ 00:03:27 verbose #2413 > > │ ckages/Python/cb8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680 │ 00:03:27 verbose #2414 > > │ ce", │ 00:03:27 verbose #2415 > > │ "--define", │ 00:03:27 verbose #2416 > > │ "_LINUX", │ 00:03:27 verbose #2417 > > │ ]; options = { command = dotnet fable │ 00:03:27 verbose #2418 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │ 00:03:27 verbose #2419 > > │ ckages/Python/cb8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680 │ 00:03:27 verbose #2420 > > │ ce/spiral_builder.fsproj" --optimize --lang py --extension .py --outDir │ 00:03:27 verbose #2421 > > │ "/home/...00:00:04 verbose #18 > │ 00:03:27 verbose #2422 > > │ 00:00:04 verbose #19 > Started Fable compilation... │ 00:03:27 verbose #2423 > > │ 00:00:05 verbose #20 > │ 00:03:27 verbose #2424 > > │ 00:00:05 verbose #21 > Fable compilation finished in 1007ms │ 00:03:27 verbose #2425 > > │ 00:00:05 verbose #22 > │ 00:03:27 verbose #2426 > > │ 00:00:05 verbose #23 runtime.execute_with_options / result / { │ 00:03:27 verbose #2427 > > │ exit_code = 0; std_trace_length = 1555 } │ 00:03:27 verbose #2428 > > │ 00:00:05 debug #24 spiral_builder.process_python / { new_code_path = │ 00:03:27 verbose #2429 > > │ /home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pac │ 00:03:27 verbose #2430 > > │ kages/Python/cb8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680c │ 00:03:27 verbose #2431 > > │ e/spiral_builder.py } │ 00:03:27 verbose #2432 > > │ 00:00:05 debug #25 runtime.execute_with_options / { file_name = │ 00:03:27 verbose #2433 > > │ python; arguments = [ │ 00:03:27 verbose #2434 > > │ │ 00:03:27 verbose #2435 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │ 00:03:27 verbose #2436 > > │ ckages/Python/cb8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680 │ 00:03:27 verbose #2437 > > │ ce/spiral_builder.py", │ 00:03:27 verbose #2438 > > │ ]; options = { command = python │ 00:03:27 verbose #2439 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │ 00:03:27 verbose #2440 > > │ ckages/Python/cb8f3dd33197bb0bc95f09b3f3057a6844a0b70d75477350491883d14d8680 │ 00:03:27 verbose #2441 > > │ ce/spiral_builder.py"; cancellation_token = None; environment_variables = │ 00:03:27 verbose #2442 > > │ Array(MutCell([("TRACE_LEVEL", "Verbose")])); on_line = None; stdin = None; │ 00:03:27 verbose #2443 > > │ trace = true; working_directory = None } } │ 00:03:27 verbose #2444 > > │ 00:00:05 verbose #26 > -3 │ 00:03:27 verbose #2445 > > │ 00:00:05 verbose #27 runtime.execute_with_options / result / { │ 00:03:27 verbose #2446 > > │ exit_code = 0; std_trace_length = 2 } │ 00:03:27 verbose #2447 > > │ __assert_eq / actual: "py" / expected: "py" │ 00:03:27 verbose #2448 > > │ __assert_eq / actual: "-3" / expected: "-3" │ 00:03:27 verbose #2449 > > │ │ 00:03:27 verbose #2450 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:27 verbose #2451 > > 00:03:27 verbose #2452 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:27 verbose #2453 > > //// test 00:03:27 verbose #2454 > > ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io rand rayon 00:03:27 verbose #2455 > > regex serde_json sha2 tokio[['rt-multi-thread']] tokio-stream 00:03:27 verbose #2456 > > 00:03:27 verbose #2457 > > inl file_name = "test.dib" 00:03:27 verbose #2458 > > inl code = 00:03:27 verbose #2459 > > 00:03:27 verbose #2460 > > "#!meta\n\n{\"kernelInfo\":{\"defaultKernelName\":\"fsharp\",\"items\":[[]]}}\n\ 00:03:27 verbose #2461 > > n#!fsharp\n\n3 - 6\n" 00:03:27 verbose #2462 > > 00:03:27 verbose #2463 > > inl temp_dir, disposable = 00:03:27 verbose #2464 > > (file_name, code) 00:03:27 verbose #2465 > > |> sm'.format_debug 00:03:27 verbose #2466 > > |> crypto.hash_text 00:03:27 verbose #2467 > > |> file_system.create_temp_dir' 00:03:27 verbose #2468 > > inl path = temp_dir </> file_name |> file_system.normalize_path 00:03:27 verbose #2469 > > 00:03:27 verbose #2470 > > code 00:03:27 verbose #2471 > > |> file_system.write_all_text path 00:03:27 verbose #2472 > > 00:03:27 verbose #2473 > > get_command () 00:03:27 verbose #2474 > > |> runtime.command_get_matches_from ($'$"_ dib -p {!path}"' |> 00:03:27 verbose #2475 > > runtime.split_args |> resultm.get) 00:03:27 verbose #2476 > > |> run Verbose 00:03:27 verbose #2477 > > |> async.block_on 00:03:27 verbose #2478 > > |> resultm.unwrap' 00:03:27 verbose #2479 > > |> __assert_string_contains Silent "<pre>-3 " 00:03:27 verbose #2480 > > 00:03:27 verbose #2481 > > $'$"{!path}.html"' 00:03:27 verbose #2482 > > |> file_system.read_all_text 00:03:27 verbose #2483 > > |> __assert_string_contains Silent "\"cell-id=1\"" 00:03:27 verbose #2484 > > 00:03:27 verbose #2485 > > disposable |> use |> ignore 00:04:08 verbose #2486 > > 00:04:08 verbose #2487 > > ╭─[ 41.27s - return value ]────────────────────────────────────────────────────╮ 00:04:08 verbose #2488 > > │ 00:00:00 verbose #1 file_system.create_dir / { dir = │ 00:04:08 verbose #2489 > > │ /tmp/!create_temp_path_/spiral_builder_80bfbca42ccbe3b212107cd763a3137e5c8e7 │ 00:04:08 verbose #2490 > > │ b2b057305d1a48e087291b696f1/af524e22-8e9a-5d18-99ed-bd86e1b74623 } │ 00:04:08 verbose #2491 > > │ 00:00:00 debug #2 runtime.execute_with_options / { file_name = │ 00:04:08 verbose #2492 > > │ dotnet; arguments = [ │ 00:04:08 verbose #2493 > > │ "repl", │ 00:04:08 verbose #2494 > > │ "--exit-after-run", │ 00:04:08 verbose #2495 > > │ "--run", │ 00:04:08 verbose #2496 > > │ │ 00:04:08 verbose #2497 > > │ "/tmp/!create_temp_path_/spiral_builder_80bfbca42ccbe3b212107cd763a3137e5c8e │ 00:04:08 verbose #2498 > > │ 7b2b057305d1a48e087291b696f1/af524e22-8e9a-5d18-99ed-bd86e1b74623/test.dib", │ 00:04:08 verbose #2499 > > │ "--output-path", │ 00:04:08 verbose #2500 > > │ │ 00:04:08 verbose #2501 > > │ "/tmp/!create_temp_path_/spiral_builder_80bfbca42ccbe3b212107cd763a3137e5c8e │ 00:04:08 verbose #2502 > > │ 7b2b057305d1a48e087291b696f1/af524e22-8e9a-5d18-99ed-bd86e1b74623/test.dib.i │ 00:04:08 verbose #2503 > > │ pynb", │ 00:04:08 verbose #2504 > > │ ]; options = { command = dotnet repl --exit-after-run --run │ 00:04:08 verbose #2505 > > │ "/tmp/!create_temp_path_/spiral_builder_80bfbca42ccbe3b212107cd763a3137e5c8e │ 00:04:08 verbose #2506 > > │ 7b2b057305d1a48e087291b696f1/af524e22-8e9a-5d18-99ed-bd86e1b74623/test.dib" │ 00:04:08 verbose #2507 > > │ --output-path │ 00:04:08 verbose #2508 > > │ "/tmp/!create_temp_path_/spiral_builder_80bfbca42ccbe3b212107cd763a3137e5c8e │ 00:04:08 verbose #2509 > > │ 7b2b057305d1a48e087291b696f1/af524e22-8e9a-5d18-99ed-bd86e1b74623/test.dib.i │ 00:04:08 verbose #2510 > > │ pynb"; cancellation_token = None; environment_variables = Array(MutCell([ │ 00:04:08 verbose #2511 > > │ ("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin │ 00:04:08 verbose #2512 > > │ = None; trace = false; working_directory = None } } │ 00:04:08 verbose #2513 > > │ > │ 00:04:08 verbose #2514 > > │ > ── fsharp │ 00:04:08 verbose #2515 > > │ ────────────────────────────────────────────────────────────────────── │ 00:04:08 verbose #2516 > > │ > 3 - 6 │ 00:04:08 verbose #2517 > > │ > │ 00:04:08 verbose #2518 > > │ > ╭─[ 2.88s - return value │ 00:04:08 verbose #2519 > > │ ]─────────────────────────────────────────────────────╮ │ 00:04:08 verbose #2520 > > │ > │ <...b74623/test.dib.html │ 00:04:08 verbose #2521 > > │ 00:00:05 verbose #11 runtime.execute_with_options / result / { │ 00:04:08 verbose #2522 > > │ exit_code = 0; std_trace_length = 1080 } │ 00:04:08 verbose #2523 > > │ 00:00:05 debug #12 spiral_builder.run / dib / jupyter nbconvert / { │ 00:04:08 verbose #2524 > > │ exit_code = 0; jupyter_result_length = 1080 } │ 00:04:08 verbose #2525 > > │ 00:00:05 debug #13 runtime.execute_with_options / { file_name = │ 00:04:08 verbose #2526 > > │ pwsh; arguments = [ │ 00:04:08 verbose #2527 > > │ "-c", │ 00:04:08 verbose #2528 > > │ "$counter = 1; $path = │ 00:04:08 verbose #2529 > > │ '/tmp/!create_temp_path_/spiral_builder_80bfbca42ccbe3b212107cd763a3137e5c8e │ 00:04:08 verbose #2530 > > │ 7b2b057305d1a48e087291b696f1/af524e22-8e9a-5d18-99ed-bd86e1b74623/test.dib.h │ 00:04:08 verbose #2531 > > │ tml'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { │ 00:04:08 verbose #2532 > > │ $_.Groups[1].Value + $counter++ } | Set-Content $path", │ 00:04:08 verbose #2533 > > │ ]; options = { command = pwsh -c "$counter = 1; $path = │ 00:04:08 verbose #2534 > > │ '/tmp/!create_temp_path_/spiral_builder_80bfbca42ccbe3b212107cd763a3137e5c8e │ 00:04:08 verbose #2535 > > │ 7b2b057305d1a48e087291b696f1/af524e22-8e9a-5d18-99ed-bd86e1b74623/test.dib.h │ 00:04:08 verbose #2536 > > │ tml'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { │ 00:04:08 verbose #2537 > > │ $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = │ 00:04:08 verbose #2538 > > │ None; environment_variables = Array(MutCell([])); on_line = None; stdin = │ 00:04:08 verbose #2539 > > │ None; trace = true; working_directory = None } } │ 00:04:08 verbose #2540 > > │ 00:00:05 verbose #14 runtime.execute_with_options / result / { │ 00:04:08 verbose #2541 > > │ exit_code = 0; std_trace_length = 0 } │ 00:04:08 verbose #2542 > > │ 00:00:05 debug #15 spiral_builder.run / dib / html cell ids / { │ 00:04:08 verbose #2543 > > │ exit_code = 0; pwsh_replace_html_result_length = 0 } │ 00:04:08 verbose #2544 > > │ 00:00:05 debug #16 spiral_builder.run / dib / { exit_code = 0; │ 00:04:08 verbose #2545 > > │ result_length = 4961 } │ 00:04:08 verbose #2546 > > │ │ 00:04:08 verbose #2547 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:08 verbose #2548 > > 00:04:08 verbose #2549 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:08 verbose #2550 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:08 verbose #2551 > > │ ## tests │ 00:04:08 verbose #2552 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:08 verbose #2553 > > 00:04:08 verbose #2554 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:08 verbose #2555 > > inl tests () = 00:04:08 verbose #2556 > > testing.run_tests { 00:04:08 verbose #2557 > > verify_app = get_command >> runtime.command_debug_assert 00:04:08 verbose #2558 > > } 00:04:08 verbose #2559 > > 00:04:08 verbose #2560 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:08 verbose #2561 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:08 verbose #2562 > > │ ## main │ 00:04:08 verbose #2563 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:08 verbose #2564 > > 00:04:08 verbose #2565 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:08 verbose #2566 > > ///! _ 00:04:08 verbose #2567 > > 00:04:08 verbose #2568 > > inl main (args : array_base string) = 00:04:08 verbose #2569 > > inl trace_state = get_trace_state_or_init None 00:04:08 verbose #2570 > > 00:04:08 verbose #2571 > > trace Debug 00:04:08 verbose #2572 > > fun () => $'$"spiral_builder.main"' 00:04:08 verbose #2573 > > fun () => { args } 00:04:08 verbose #2574 > > 00:04:08 verbose #2575 > > inl command = get_command () 00:04:08 verbose #2576 > > inl arg_matches = command |> runtime.command_get_matches 00:04:08 verbose #2577 > > 00:04:08 verbose #2578 > > inl trace_state_level = trace_state.level 00:04:08 verbose #2579 > > 00:04:08 verbose #2580 > > inl result = 00:04:08 verbose #2581 > > arg_matches 00:04:08 verbose #2582 > > |> run *trace_state_level 00:04:08 verbose #2583 > > |> async.block_on 00:04:08 verbose #2584 > > |> resultm.unwrap' 00:04:08 verbose #2585 > > 00:04:08 verbose #2586 > > if *trace_state_level = Info 00:04:08 verbose #2587 > > then result |> console.write_line 00:04:08 verbose #2588 > > 00:04:08 verbose #2589 > > 0i32 00:04:08 verbose #2590 > > 00:04:08 verbose #2591 > > inl main () = 00:04:08 verbose #2592 > > $'let tests () = !tests ()' : () 00:04:08 verbose #2593 > > $'let main args = !main args' : () 00:04:18 verbose #2594 > 00:04:18 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 127753 } 00:04:18 verbose #2595 > 00:04:18 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:04:18 verbose #2596 > "nbconvert", 00:04:18 verbose #2597 > "/home/runner/work/polyglot/polyglot/apps/spiral/builder/spiral_builder.dib.ipynb", 00:04:18 verbose #2598 > "--to", 00:04:18 verbose #2599 > "html", 00:04:18 verbose #2600 > "--HTMLExporter.theme=dark", 00:04:18 verbose #2601 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/spiral/builder/spiral_builder.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:04:19 verbose #2602 > 00:04:18 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/builder/spiral_builder.dib.ipynb to html 00:04:19 verbose #2603 > 00:04:18 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:04:19 verbose #2604 > 00:04:18 verbose #7 ! validate(nb) 00:04:19 verbose #2605 > 00:04:19 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:04:19 verbose #2606 > 00:04:19 verbose #9 ! return _pygments_highlight( 00:04:20 verbose #2607 > 00:04:20 verbose #10 ! [NbConvertApp] Writing 602389 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/builder/spiral_builder.dib.html 00:04:21 verbose #2608 > 00:04:20 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 930 } 00:04:21 verbose #2609 > 00:04:20 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 930 } 00:04:21 verbose #2610 > 00:04:20 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:04:21 verbose #2611 > "-c", 00:04:21 verbose #2612 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/builder/spiral_builder.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:04:21 verbose #2613 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/builder/spiral_builder.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:04:21 verbose #2614 > 00:04:20 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:04:21 verbose #2615 > 00:04:20 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:04:21 verbose #2616 > 00:04:20 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 128742 } 00:04:21 debug #2617 runtime.execute_with_options_async / { exit_code = 0; output_length = 136880 } 00:04:21 debug #1 main / executeCommand / exitCode: 0 / command: ../../../workspace/target/release/spiral_builder dib --path spiral_builder.dib 00:00:00 debug #1 writeDibCode / output: Spi / path: spiral_builder.dib 00:00:00 debug #2 parseDibCode / output: Spi / file: spiral_builder.dib 00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 verbose #2 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 debug #1 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi 00:00:00 debug #2 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_builder.spi 00:00:00 debug #3 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi 00:00:00 verbose #4 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # spiral_builder\nopen file_system_operators\nopen rust.rust_operators\n... : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/apps/spiral/builder/spiral_builder.spi"}} / result: 00:00:00 verbose #5 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/apps/spiral/builder/spiral_builder.spi"}} / result: 00:00:01 debug #6 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_builder.spi 00:00:01 debug #7 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi 00:00:01 debug #8 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_builder.spi 00:00:01 debug #9 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi 00:00:02 debug #10 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_builder.spi 00:00:02 debug #11 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi 00:00:02 debug #12 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_builder.spi 00:00:02 debug #13 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi 00:00:03 debug #14 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_builder.spi 00:00:03 debug #15 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi 00:00:03 debug #16 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_builder.spi 00:00:03 debug #17 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi 00:00:04 debug #18 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_builder.spi 00:00:04 debug #19 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi 00:00:04 debug #20 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_builder.spi 00:00:04 debug #21 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi 00:00:05 debug #22 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_builder.spi 00:00:05 debug #23 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi 00:00:05 debug #24 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_builder.spi 00:00:05 debug #25 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi 00:00:06 debug #26 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_builder.spi 00:00:06 debug #27 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi 00:00:06 debug #28 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_builder.spi 00:00:06 debug #29 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi 00:00:07 debug #30 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_builder.spi 00:00:07 debug #31 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi 00:00:07 debug #32 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_builder.spi 00:00:07 debug #33 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi 00:00:08 debug #34 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_builder.spi 00:00:08 debug #35 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi 00:00:08 debug #36 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_builder.spi 00:00:08 debug #37 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi 00:00:09 debug #38 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_builder.spi 00:00:09 debug #39 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi 00:00:09 debug #40 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_builder.spi 00:00:09 debug #41 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi 00:00:10 debug #42 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_builder.spi 00:00:10 debug #43 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi 00:00:10 debug #44 Supervisor.buildFile / AsyncSeq.scan / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] #endif type Ref<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit...() () 0 let v0 : (unit -> unit) = closure0() let tests () = v0 () let v1 : ((string []) -> int32) = closure1() let main args = v1 args () / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_builder.spi 00:00:10 debug #45 Supervisor.buildFile / takeWhileInclusive / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] #endif type Ref<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit...() () 0 let v0 : (unit -> unit) = closure0() let tests () = v0 () let v1 : ((string []) -> int32) = closure1() let main args = v1 args () / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_builder.spi 00:00:10 debug #46 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:00 debug #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: spiral_builder / hash: / code.Length: 1771837 targetDir: /home/runner/work/polyglot/polyglot/target/Builder/spiral_builder Fable 4.19.3: F# to Rust compiler (status: alpha) Thanks to the contributor! @valery-vitko Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target/Builder/spiral_builder/spiral_builder.fsproj... target/Builder/spiral_builder> dotnet restore spiral_builder.fable-temp.csproj -p:FABLE_COMPILER=true -p:FABLE_COMPILER_4=true -p:FABLE_COMPILER_RUST=true -p:_LINUX=true Determining projects to restore... Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b The last full restore is still up to date. Nothing left to do. Total time taken: 0 milliseconds Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b Restoring /home/runner/work/polyglot/polyglot/target/Builder/spiral_builder/spiral_builder.fable-temp.csproj Starting restore process. Total time taken: 0 milliseconds Restored /home/runner/work/polyglot/polyglot/target/Builder/spiral_builder/spiral_builder.fable-temp.csproj (in 292 ms). target/Builder/spiral_builder> dotnet restore /home/runner/work/polyglot/polyglot/target/Builder/spiral_builder/spiral_builder.fsproj Determining projects to restore... Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b The last full restore is still up to date. Nothing left to do. Total time taken: 0 milliseconds Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b Restoring /home/runner/work/polyglot/polyglot/target/Builder/spiral_builder/spiral_builder.fsproj Starting restore process. Total time taken: 0 milliseconds Restored /home/runner/work/polyglot/polyglot/target/Builder/spiral_builder/spiral_builder.fsproj (in 284 ms). Project and references (14 source files) parsed in 5917ms Started Fable compilation... Fable compilation finished in 13890ms ./lib/spiral/sm.fsx(414,0): (414,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/common.fsx(1425,0): (1425,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/date_time.fsx(1012,0): (1012,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/async_.fsx(76,0): (76,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/threading.fsx(145,0): (145,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/crypto.fsx(1326,0): (1326,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/platform.fsx(104,0): (104,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/networking.fsx(4626,0): (4626,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/trace.fsx(1524,0): (1524,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/runtime.fsx(7219,0): (7219,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/file_system.fsx(11479,0): (11479,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust) Compiling spiral_builder v0.0.1 (/home/runner/work/polyglot/polyglot/apps/spiral/builder) Finished `release` profile [optimized] target(s) in 11.71s Running unittests spiral_builder.rs (/home/runner/work/polyglot/polyglot/workspace/target/release/deps/spiral_builder-927a7b57474f2564) running 1 test test module_7e2cd9e0::Spiral_builder::verify_app ... ok successes: successes: module_7e2cd9e0::Spiral_builder::verify_app test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust) Compiling spiral_builder v0.0.1 (/home/runner/work/polyglot/polyglot/apps/spiral/builder) Finished `release` profile [optimized] target(s) in 23.07s
In [ ]:
{ pwsh ../apps/spiral/wasm/build.ps1 } | Invoke-Block
00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 debug #1 runtime.execute_with_options_async / { options = { command = ../../../workspace/target/release/spiral_builder dib --path spiral_wasm.dib; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:00 verbose #2 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "spiral_wasm.dib"])) } 00:00:00 verbose #3 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:00:00 verbose #4 > "repl", 00:00:00 verbose #5 > "--exit-after-run", 00:00:00 verbose #6 > "--run", 00:00:00 verbose #7 > "/home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib", 00:00:00 verbose #8 > "--output-path", 00:00:00 verbose #9 > "/home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib.ipynb", 00:00:00 verbose #10 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:01 verbose #11 > > 00:00:01 verbose #12 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:01 verbose #13 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:01 verbose #14 > > │ # spiral_wasm │ 00:00:01 verbose #15 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:04 verbose #16 > > 00:00:04 verbose #17 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:04 verbose #18 > > open rust.rust_operators 00:00:04 verbose #19 > > open rust 00:00:04 verbose #20 > > open sm'_operators 00:00:04 verbose #21 > > 00:00:04 verbose #22 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:04 verbose #23 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:04 verbose #24 > > │ ## spiral_wasm │ 00:00:04 verbose #25 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:04 verbose #26 > > 00:00:04 verbose #27 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:04 verbose #28 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:04 verbose #29 > > │ ### get_args │ 00:00:04 verbose #30 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:04 verbose #31 > > 00:00:04 verbose #32 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:04 verbose #33 > > inl get_args () = 00:00:04 verbose #34 > > { 00:00:04 verbose #35 > > exception = "exception", 'e' 00:00:04 verbose #36 > > trace_level = "trace_level", 't' 00:00:04 verbose #37 > > wasm = "wasm", 'w' 00:00:04 verbose #38 > > } 00:00:05 verbose #39 > > 00:00:05 verbose #40 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:05 verbose #41 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:05 verbose #42 > > │ ### get_command │ 00:00:05 verbose #43 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 verbose #44 > > 00:00:05 verbose #45 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #46 > > let get_command () = 00:00:05 verbose #47 > > ##"command" 00:00:05 verbose #48 > > |> runtime.new_command 00:00:05 verbose #49 > > |> runtime.command_args_override_self true 00:00:05 verbose #50 > > |> runtime.command_init_arg (get_args () .exception) ( 00:00:05 verbose #51 > > runtime.arg_action runtime.SetTrue 00:00:05 verbose #52 > > ) 00:00:05 verbose #53 > > |> runtime.command_init_arg (get_args () .trace_level) ( 00:00:05 verbose #54 > > real runtime.arg_union `trace_level ignore 00:00:05 verbose #55 > > ) 00:00:05 verbose #56 > > |> runtime.command_init_arg (get_args () .wasm) ( 00:00:05 verbose #57 > > runtime.arg_required true 00:00:05 verbose #58 > > ) 00:00:05 verbose #59 > > 00:00:05 verbose #60 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:05 verbose #61 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:05 verbose #62 > > │ ### gas │ 00:00:05 verbose #63 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 verbose #64 > > 00:00:05 verbose #65 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #66 > > nominal gas = 00:00:05 verbose #67 > > `( 00:00:05 verbose #68 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:05 verbose #69 > > Fable.Core.Emit(\"near_workspaces::types::Gas\")>]]\n#endif\ntype 00:00:05 verbose #70 > > near_workspaces_types_Gas = class end" 00:00:05 verbose #71 > > $'' : $'near_workspaces_types_Gas' 00:00:05 verbose #72 > > ) 00:00:05 verbose #73 > > 00:00:05 verbose #74 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:05 verbose #75 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:05 verbose #76 > > │ ### near_token │ 00:00:05 verbose #77 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 verbose #78 > > 00:00:05 verbose #79 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #80 > > nominal near_token = 00:00:05 verbose #81 > > `( 00:00:05 verbose #82 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:05 verbose #83 > > Fable.Core.Emit(\"near_workspaces::types::NearToken\")>]]\n#endif\ntype 00:00:05 verbose #84 > > near_token_NearToken = class end" 00:00:05 verbose #85 > > $'' : $'near_token_NearToken' 00:00:05 verbose #86 > > ) 00:00:05 verbose #87 > > 00:00:05 verbose #88 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:05 verbose #89 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:05 verbose #90 > > │ ### near_workspaces_error │ 00:00:05 verbose #91 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 verbose #92 > > 00:00:05 verbose #93 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #94 > > nominal near_workspaces_error = 00:00:05 verbose #95 > > `( 00:00:05 verbose #96 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:05 verbose #97 > > Fable.Core.Emit(\"near_workspaces::error::Error\")>]]\n#endif\ntype 00:00:05 verbose #98 > > near_workspaces_error_Error = class end" 00:00:05 verbose #99 > > $'' : $'near_workspaces_error_Error' 00:00:05 verbose #100 > > ) 00:00:05 verbose #101 > > 00:00:05 verbose #102 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:05 verbose #103 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:05 verbose #104 > > │ ### sandbox │ 00:00:05 verbose #105 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 verbose #106 > > 00:00:05 verbose #107 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #108 > > nominal sandbox = 00:00:05 verbose #109 > > `( 00:00:05 verbose #110 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:05 verbose #111 > > Fable.Core.Emit(\"near_workspaces::network::Sandbox\")>]]\n#endif\ntype 00:00:05 verbose #112 > > near_workspaces_network_Sandbox = class end" 00:00:05 verbose #113 > > $'' : $'near_workspaces_network_Sandbox' 00:00:05 verbose #114 > > ) 00:00:05 verbose #115 > > 00:00:05 verbose #116 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:05 verbose #117 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:05 verbose #118 > > │ ### worker │ 00:00:05 verbose #119 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 verbose #120 > > 00:00:05 verbose #121 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #122 > > nominal worker t = 00:00:05 verbose #123 > > `( 00:00:05 verbose #124 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:05 verbose #125 > > Fable.Core.Emit(\"near_workspaces::Worker<$0>\")>]]\n#endif\ntype 00:00:05 verbose #126 > > near_workspaces_Worker<'T> = class end" 00:00:05 verbose #127 > > $'' : $'near_workspaces_Worker<`t>' 00:00:05 verbose #128 > > ) 00:00:05 verbose #129 > > 00:00:05 verbose #130 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:05 verbose #131 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:05 verbose #132 > > │ ### contract │ 00:00:05 verbose #133 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 verbose #134 > > 00:00:05 verbose #135 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #136 > > nominal contract = 00:00:05 verbose #137 > > `( 00:00:05 verbose #138 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:05 verbose #139 > > Fable.Core.Emit(\"near_workspaces::Contract\")>]]\n#endif\ntype 00:00:05 verbose #140 > > near_workspaces_Contract = class end" 00:00:05 verbose #141 > > $'' : $'near_workspaces_Contract' 00:00:05 verbose #142 > > ) 00:00:05 verbose #143 > > 00:00:05 verbose #144 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:05 verbose #145 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:05 verbose #146 > > │ ### call_transaction │ 00:00:05 verbose #147 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 verbose #148 > > 00:00:05 verbose #149 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #150 > > nominal call_transaction = 00:00:05 verbose #151 > > `( 00:00:05 verbose #152 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:05 verbose #153 > > Fable.Core.Emit(\"near_workspaces::operations::CallTransaction\")>]]\n#endif\nty 00:00:05 verbose #154 > > pe near_workspaces_operations_CallTransaction = class end" 00:00:05 verbose #155 > > $'' : $'near_workspaces_operations_CallTransaction' 00:00:05 verbose #156 > > ) 00:00:06 verbose #157 > > 00:00:06 verbose #158 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:06 verbose #159 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:06 verbose #160 > > │ ### execution_final_result │ 00:00:06 verbose #161 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 verbose #162 > > 00:00:06 verbose #163 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 verbose #164 > > nominal execution_final_result = 00:00:06 verbose #165 > > `( 00:00:06 verbose #166 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:06 verbose #167 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionFinalResult\")>]]\n#endif\nt 00:00:06 verbose #168 > > ype near_workspaces_result_ExecutionFinalResult = class end" 00:00:06 verbose #169 > > $'' : $'near_workspaces_result_ExecutionFinalResult' 00:00:06 verbose #170 > > ) 00:00:06 verbose #171 > > 00:00:06 verbose #172 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:06 verbose #173 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:06 verbose #174 > > │ ### execution_result │ 00:00:06 verbose #175 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 verbose #176 > > 00:00:06 verbose #177 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 verbose #178 > > nominal execution_result t = 00:00:06 verbose #179 > > `( 00:00:06 verbose #180 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:06 verbose #181 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionResult<$0>\")>]]\n#endif\nty 00:00:06 verbose #182 > > pe near_workspaces_result_ExecutionResult<'T> = class end" 00:00:06 verbose #183 > > $'' : $'near_workspaces_result_ExecutionResult<`t>' 00:00:06 verbose #184 > > ) 00:00:06 verbose #185 > > 00:00:06 verbose #186 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:06 verbose #187 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:06 verbose #188 > > │ ### execution_success │ 00:00:06 verbose #189 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 verbose #190 > > 00:00:06 verbose #191 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 verbose #192 > > nominal execution_success = 00:00:06 verbose #193 > > `( 00:00:06 verbose #194 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:06 verbose #195 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionSuccess\")>]]\n#endif\ntype 00:00:06 verbose #196 > > near_workspaces_result_ExecutionSuccess = class end" 00:00:06 verbose #197 > > $'' : $'near_workspaces_result_ExecutionSuccess' 00:00:06 verbose #198 > > ) 00:00:06 verbose #199 > > 00:00:06 verbose #200 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:06 verbose #201 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:06 verbose #202 > > │ ### execution_failure │ 00:00:06 verbose #203 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 verbose #204 > > 00:00:06 verbose #205 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 verbose #206 > > nominal execution_failure = 00:00:06 verbose #207 > > `( 00:00:06 verbose #208 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:06 verbose #209 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionFailure\")>]]\n#endif\ntype 00:00:06 verbose #210 > > near_workspaces_result_ExecutionFailure = class end" 00:00:06 verbose #211 > > $'' : $'near_workspaces_result_ExecutionFailure' 00:00:06 verbose #212 > > ) 00:00:06 verbose #213 > > 00:00:06 verbose #214 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:06 verbose #215 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:06 verbose #216 > > │ ### execution_outcome │ 00:00:06 verbose #217 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 verbose #218 > > 00:00:06 verbose #219 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 verbose #220 > > nominal execution_outcome = 00:00:06 verbose #221 > > `( 00:00:06 verbose #222 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:06 verbose #223 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionOutcome\")>]]\n#endif\ntype 00:00:06 verbose #224 > > near_workspaces_result_ExecutionOutcome = class end" 00:00:06 verbose #225 > > $'' : $'near_workspaces_result_ExecutionOutcome' 00:00:06 verbose #226 > > ) 00:00:07 verbose #227 > > 00:00:07 verbose #228 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:07 verbose #229 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 verbose #230 > > │ ### sandbox_worker │ 00:00:07 verbose #231 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 verbose #232 > > 00:00:07 verbose #233 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 verbose #234 > > inl sandbox_worker () : resultm.result' (worker sandbox) near_workspaces_error = 00:00:07 verbose #235 > > !\($'"near_workspaces::sandbox().await"') 00:00:07 verbose #236 > > 00:00:07 verbose #237 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:07 verbose #238 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 verbose #239 > > │ ### dev_deploy │ 00:00:07 verbose #240 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 verbose #241 > > 00:00:07 verbose #242 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 verbose #243 > > inl dev_deploy 00:00:07 verbose #244 > > (wasm : am'.vec u8) 00:00:07 verbose #245 > > (worker : worker sandbox) 00:00:07 verbose #246 > > : async.future_pin (resultm.result' contract near_workspaces_error) 00:00:07 verbose #247 > > = 00:00:07 verbose #248 > > !\\((worker, wasm), $'"Box::pin($0.dev_deploy(&$1))"') 00:00:07 verbose #249 > > 00:00:07 verbose #250 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:07 verbose #251 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 verbose #252 > > │ ### call │ 00:00:07 verbose #253 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 verbose #254 > > 00:00:07 verbose #255 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 verbose #256 > > inl call (fn_name : string) (contract : contract) : call_transaction = 00:00:07 verbose #257 > > !\\((contract, fn_name), $'"$0.call(&*$1)"') 00:00:07 verbose #258 > > 00:00:07 verbose #259 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:07 verbose #260 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 verbose #261 > > │ ### transact │ 00:00:07 verbose #262 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 verbose #263 > > 00:00:07 verbose #264 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 verbose #265 > > inl transact 00:00:07 verbose #266 > > (call : call_transaction) 00:00:07 verbose #267 > > : async.future_pin (resultm.result' execution_final_result 00:00:07 verbose #268 > > near_workspaces_error) 00:00:07 verbose #269 > > = 00:00:07 verbose #270 > > !\($'"Box::pin(!call.transact())"') 00:00:07 verbose #271 > > 00:00:07 verbose #272 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:07 verbose #273 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 verbose #274 > > │ ### logs │ 00:00:07 verbose #275 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 verbose #276 > > 00:00:07 verbose #277 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 verbose #278 > > inl logs (result : execution_final_result) : am'.vec (rust.ref sm'.str) = 00:00:07 verbose #279 > > !\($'"!result.logs()"') 00:00:07 verbose #280 > > 00:00:07 verbose #281 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:07 verbose #282 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 verbose #283 > > │ ### into_result │ 00:00:07 verbose #284 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 verbose #285 > > 00:00:07 verbose #286 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 verbose #287 > > inl into_result 00:00:07 verbose #288 > > (result : execution_final_result) 00:00:07 verbose #289 > > : resultm.result' execution_success execution_failure 00:00:07 verbose #290 > > = 00:00:07 verbose #291 > > !\\(result, $'"$0.into_result()"') 00:00:07 verbose #292 > > 00:00:07 verbose #293 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:07 verbose #294 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 verbose #295 > > │ ### receipt_failures │ 00:00:07 verbose #296 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 verbose #297 > > 00:00:07 verbose #298 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 verbose #299 > > inl receipt_failures (result : execution_final_result) : am'.vec (rust.ref 00:00:07 verbose #300 > > execution_outcome) = 00:00:07 verbose #301 > > inl result = join result 00:00:07 verbose #302 > > !\($'"!result.receipt_failures()"') 00:00:07 verbose #303 > > 00:00:07 verbose #304 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:07 verbose #305 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 verbose #306 > > │ ### receipt_outcomes │ 00:00:07 verbose #307 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 verbose #308 > > 00:00:07 verbose #309 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 verbose #310 > > inl receipt_outcomes (result : execution_final_result) : am'.vec 00:00:07 verbose #311 > > execution_outcome = 00:00:07 verbose #312 > > inl result = join result 00:00:07 verbose #313 > > inl result : rust.ref (am'.slice execution_outcome) = 00:00:07 verbose #314 > > !\($'"!result.receipt_outcomes()"') 00:00:07 verbose #315 > > result |> rust.into 00:00:07 verbose #316 > > 00:00:07 verbose #317 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:07 verbose #318 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 verbose #319 > > │ ### json │ 00:00:07 verbose #320 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 verbose #321 > > 00:00:07 verbose #322 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 verbose #323 > > inl json (result : execution_final_result) : resultm.result' sm'.std_string 00:00:07 verbose #324 > > near_workspaces_error = 00:00:07 verbose #325 > > !\\(result, $'"$0.json()"') 00:00:07 verbose #326 > > 00:00:07 verbose #327 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:07 verbose #328 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 verbose #329 > > │ ### borsh │ 00:00:07 verbose #330 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 verbose #331 > > 00:00:07 verbose #332 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 verbose #333 > > inl borsh (result : execution_final_result) : resultm.result' sm'.std_string 00:00:07 verbose #334 > > near_workspaces_error = 00:00:07 verbose #335 > > !\\(result, $'"$0.borsh()"') 00:00:07 verbose #336 > > 00:00:07 verbose #337 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:07 verbose #338 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 verbose #339 > > │ ### near_price_in_usd │ 00:00:07 verbose #340 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 verbose #341 > > 00:00:07 verbose #342 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 verbose #343 > > inl near_price_in_usd () = 00:00:07 verbose #344 > > 6.68f64 00:00:08 verbose #345 > > 00:00:08 verbose #346 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 verbose #347 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:08 verbose #348 > > │ ### gas_to_usd │ 00:00:08 verbose #349 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:08 verbose #350 > > 00:00:08 verbose #351 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 verbose #352 > > inl gas_to_usd (gas : u64) = 00:00:08 verbose #353 > > (gas |> f64) / 10_000_000_000_000_000 * near_price_in_usd () 00:00:08 verbose #354 > > 00:00:08 verbose #355 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 verbose #356 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:08 verbose #357 > > │ ### tokens_to_usd │ 00:00:08 verbose #358 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:08 verbose #359 > > 00:00:08 verbose #360 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 verbose #361 > > inl tokens_to_usd (tokens : rust.u128) = 00:00:08 verbose #362 > > (tokens |> rust.f64) / 1_000_000_000_000_000_000_000_000 * near_price_in_usd 00:00:08 verbose #363 > > () 00:00:08 verbose #364 > > 00:00:08 verbose #365 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 verbose #366 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:08 verbose #367 > > │ ### total_gas_burnt │ 00:00:08 verbose #368 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:08 verbose #369 > > 00:00:08 verbose #370 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 verbose #371 > > inl total_gas_burnt (result : execution_final_result) : gas = 00:00:08 verbose #372 > > !\\(result, $'"$0.total_gas_burnt"') 00:00:08 verbose #373 > > 00:00:08 verbose #374 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 verbose #375 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:08 verbose #376 > > │ ### as_gas │ 00:00:08 verbose #377 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:08 verbose #378 > > 00:00:08 verbose #379 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 verbose #380 > > inl as_gas (gas : gas) : u64 = 00:00:08 verbose #381 > > !\\(gas, $'"$0.as_gas()"') 00:00:08 verbose #382 > > 00:00:08 verbose #383 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 verbose #384 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:08 verbose #385 > > │ ### as_yoctonear │ 00:00:08 verbose #386 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:08 verbose #387 > > 00:00:08 verbose #388 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 verbose #389 > > inl as_yoctonear (gas : near_token) : rust.u128 = 00:00:08 verbose #390 > > !\\(gas, $'"$0.as_yoctonear()"') 00:00:08 verbose #391 > > 00:00:08 verbose #392 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 verbose #393 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:08 verbose #394 > > │ ### outcomes │ 00:00:08 verbose #395 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:08 verbose #396 > > 00:00:08 verbose #397 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 verbose #398 > > inl outcomes (result : execution_final_result) : am'.vec (rust.ref 00:00:08 verbose #399 > > execution_outcome) = 00:00:08 verbose #400 > > inl result = result |> rust.emit 00:00:08 verbose #401 > > !\($'"!result.outcomes()"') 00:00:08 verbose #402 > > 00:00:08 verbose #403 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 verbose #404 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:08 verbose #405 > > │ ### is_success │ 00:00:08 verbose #406 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:08 verbose #407 > > 00:00:08 verbose #408 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 verbose #409 > > inl is_success (outcome : execution_outcome) : bool = 00:00:08 verbose #410 > > !\\(outcome, $'"$0.is_success()"') 00:00:08 verbose #411 > > 00:00:08 verbose #412 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 verbose #413 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:08 verbose #414 > > │ ### gas_burnt │ 00:00:08 verbose #415 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:08 verbose #416 > > 00:00:08 verbose #417 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 verbose #418 > > inl gas_burnt (outcome : execution_outcome) : gas = 00:00:08 verbose #419 > > !\\(outcome, $'"$0.gas_burnt"') 00:00:08 verbose #420 > > 00:00:08 verbose #421 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 verbose #422 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:08 verbose #423 > > │ ### tokens_burnt │ 00:00:08 verbose #424 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:08 verbose #425 > > 00:00:08 verbose #426 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 verbose #427 > > inl tokens_burnt (outcome : execution_outcome) : near_token = 00:00:08 verbose #428 > > !\\(outcome, $'"$0.tokens_burnt"') 00:00:08 verbose #429 > > 00:00:08 verbose #430 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 verbose #431 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:08 verbose #432 > > │ ### print_usd │ 00:00:08 verbose #433 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:08 verbose #434 > > 00:00:08 verbose #435 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 verbose #436 > > inl print_usd retry (result : execution_final_result) = 00:00:08 verbose #437 > > inl total_gas_burnt = result |> total_gas_burnt |> as_gas 00:00:08 verbose #438 > > inl total_gas_burnt_usd = total_gas_burnt |> gas_to_usd 00:00:08 verbose #439 > > 00:00:08 verbose #440 > > trace Debug 00:00:08 verbose #441 > > fun () => "spiral_wasm.print_usd" 00:00:08 verbose #442 > > fun () => { retry total_gas_burnt_usd total_gas_burnt } 00:00:08 verbose #443 > > 00:00:08 verbose #444 > > result 00:00:08 verbose #445 > > |> outcomes 00:00:08 verbose #446 > > |> iter.into_iter 00:00:08 verbose #447 > > |> iter.cloned 00:00:08 verbose #448 > > |> iter.for_each fun outcome => 00:00:08 verbose #449 > > inl is_success = outcome |> is_success 00:00:08 verbose #450 > > 00:00:08 verbose #451 > > inl gas_burnt = outcome |> gas_burnt |> as_gas 00:00:08 verbose #452 > > inl gas_burnt_usd = gas_burnt |> gas_to_usd 00:00:08 verbose #453 > > 00:00:08 verbose #454 > > inl tokens_burnt = outcome |> tokens_burnt |> as_yoctonear 00:00:08 verbose #455 > > inl tokens_burnt_usd = tokens_burnt |> tokens_to_usd 00:00:08 verbose #456 > > 00:00:08 verbose #457 > > trace Debug 00:00:08 verbose #458 > > fun () => "spiral_wasm.print_usd / outcome" 00:00:08 verbose #459 > > fun () => { is_success gas_burnt_usd tokens_burnt_usd gas_burnt 00:00:08 verbose #460 > > tokens_burnt } 00:00:08 verbose #461 > > 00:00:08 verbose #462 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 verbose #463 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:08 verbose #464 > > │ ### run │ 00:00:08 verbose #465 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:08 verbose #466 > > 00:00:08 verbose #467 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 verbose #468 > > let rec run (matches : runtime.arg_matches) : async.future_pin (resultm.result' 00:00:08 verbose #469 > > u8 resultm.anyhow_error) = 00:00:08 verbose #470 > > fun () => 00:00:08 verbose #471 > > inl wasm_path = 00:00:08 verbose #472 > > matches 00:00:08 verbose #473 > > |> runtime.matches_get_one (get_args () .wasm |> fst) 00:00:08 verbose #474 > > |> optionm'.unbox 00:00:08 verbose #475 > > |> optionm.value 00:00:08 verbose #476 > > |> sm'.from_std_string 00:00:08 verbose #477 > > 00:00:08 verbose #478 > > trace Verbose (fun () => "spiral_wasm.run") fun () => { wasm_path } 00:00:08 verbose #479 > > 00:00:08 verbose #480 > > inl wasm = wasm_path |> file_system.read |> resultm.try' 00:00:08 verbose #481 > > 00:00:08 verbose #482 > > let fn (retry : u8) = 00:00:08 verbose #483 > > fun () => 00:00:08 verbose #484 > > inl worker = sandbox_worker () |> resultm.try' 00:00:08 verbose #485 > > 00:00:08 verbose #486 > > trace Verbose (fun () => "spiral_wasm.run") fun () => { retry 00:00:08 verbose #487 > > worker } 00:00:08 verbose #488 > > 00:00:08 verbose #489 > > inl contract = worker |> dev_deploy wasm |> async.await |> 00:00:08 verbose #490 > > resultm.try' 00:00:08 verbose #491 > > 00:00:08 verbose #492 > > trace Verbose (fun () => "spiral_wasm.run") fun () => { retry 00:00:08 verbose #493 > > contract } 00:00:08 verbose #494 > > 00:00:08 verbose #495 > > inl result = contract |> call "state_main" |> transact |> 00:00:08 verbose #496 > > async.await |> resultm.try' 00:00:08 verbose #497 > > 00:00:08 verbose #498 > > trace Verbose (fun () => "spiral_wasm.run") fun () => { retry 00:00:08 verbose #499 > > result } 00:00:08 verbose #500 > > 00:00:08 verbose #501 > > result |> logs |> am'.vec_map sm'.ref_to_std_string |> 00:00:08 verbose #502 > > am'.vec_for_each console.write_line 00:00:08 verbose #503 > > 00:00:08 verbose #504 > > result |> print_usd retry 00:00:08 verbose #505 > > 00:00:08 verbose #506 > > inl result2 = result |> into_result 00:00:08 verbose #507 > > 00:00:08 verbose #508 > > trace Verbose (fun () => "spiral_wasm.run") fun () => { result2 00:00:08 verbose #509 > > } 00:00:08 verbose #510 > > 00:00:08 verbose #511 > > inl receipt_failures = result |> receipt_failures 00:00:08 verbose #512 > > inl receipt_failures_len = receipt_failures |> am'.vec_len |> 00:00:08 verbose #513 > > i32 00:00:08 verbose #514 > > 00:00:08 verbose #515 > > trace Verbose (fun () => "spiral_wasm.run") fun () => { 00:00:08 verbose #516 > > receipt_failures_len receipt_failures } 00:00:08 verbose #517 > > 00:00:08 verbose #518 > > inl receipt_outcomes = result |> receipt_outcomes 00:00:08 verbose #519 > > inl receipt_outcomes_len = receipt_outcomes |> am'.vec_len |> 00:00:08 verbose #520 > > i32 00:00:08 verbose #521 > > 00:00:08 verbose #522 > > trace Verbose (fun () => "spiral_wasm.run") fun () => { 00:00:08 verbose #523 > > receipt_outcomes_len receipt_outcomes } 00:00:08 verbose #524 > > 00:00:08 verbose #525 > > inl json = result |> json 00:00:08 verbose #526 > > 00:00:08 verbose #527 > > trace Verbose (fun () => "spiral_wasm.run") fun () => { json } 00:00:08 verbose #528 > > 00:00:08 verbose #529 > > inl borsh = result |> borsh 00:00:08 verbose #530 > > 00:00:08 verbose #531 > > trace Verbose (fun () => "spiral_wasm.run") fun () => { borsh } 00:00:08 verbose #532 > > 00:00:08 verbose #533 > > inl error = { receipt_failures receipt_outcomes_len retry } |> 00:00:08 verbose #534 > > sm'.format 00:00:08 verbose #535 > > if receipt_failures_len > 0 00:00:08 verbose #536 > > then (Ok (Some error) : _ _ resultm.anyhow_error) |> resultm.box 00:00:08 verbose #537 > > elif receipt_outcomes_len > 1 00:00:08 verbose #538 > > then (Ok None : _ _ resultm.anyhow_error) |> resultm.box 00:00:08 verbose #539 > > else error |> resultm.anyhow_error |> resultm.err 00:00:08 verbose #540 > > |> async.new_future_move 00:00:08 verbose #541 > > 00:00:08 verbose #542 > > inl rec loop (retry : u8) = 00:00:08 verbose #543 > > inl max = 30 00:00:08 verbose #544 > > inl init () = 00:00:08 verbose #545 > > fun () => 00:00:08 verbose #546 > > retry 00:00:08 verbose #547 > > |> async.new_future_move 00:00:08 verbose #548 > > if retry >= max then 00:00:08 verbose #549 > > fun () => 00:00:08 verbose #550 > > init () 00:00:08 verbose #551 > > |> async.await 00:00:08 verbose #552 > > |> Error 00:00:08 verbose #553 > > |> async.new_future_move 00:00:08 verbose #554 > > else 00:00:08 verbose #555 > > inl result = 00:00:08 verbose #556 > > fn retry 00:00:08 verbose #557 > > |> async.await 00:00:08 verbose #558 > > |> resultm.map_error' sm'.format' 00:00:08 verbose #559 > > |> resultm.unbox 00:00:08 verbose #560 > > match result with 00:00:08 verbose #561 > > | Ok (None) => 00:00:08 verbose #562 > > fun () => 00:00:08 verbose #563 > > init () 00:00:08 verbose #564 > > |> async.await 00:00:08 verbose #565 > > |> Ok 00:00:08 verbose #566 > > |> async.new_future_move 00:00:08 verbose #567 > > | Ok (Some error) => 00:00:08 verbose #568 > > trace Critical (fun () => "spiral_wasm.run / Ok (Some 00:00:08 verbose #569 > > error)") fun () => { retry error } 00:00:08 verbose #570 > > fun () => 00:00:08 verbose #571 > > init () 00:00:08 verbose #572 > > |> async.await 00:00:08 verbose #573 > > |> Error 00:00:08 verbose #574 > > |> async.new_future_move 00:00:08 verbose #575 > > | Error error => 00:00:08 verbose #576 > > trace Warning (fun () => "spiral_wasm.run / Error error") 00:00:08 verbose #577 > > fun () => { retry error } 00:00:08 verbose #578 > > loop (retry + 1) 00:00:08 verbose #579 > > inl retries = 00:00:08 verbose #580 > > loop 1 00:00:08 verbose #581 > > |> async.await 00:00:08 verbose #582 > > 00:00:08 verbose #583 > > trace Verbose (fun () => "spiral_wasm.run") fun () => { retries } 00:00:08 verbose #584 > > 00:00:08 verbose #585 > > match retries with 00:00:08 verbose #586 > > | Ok retries => Ok retries |> resultm.box 00:00:08 verbose #587 > > | Error retries => { retries } |> sm'.format |> resultm.anyhow_error |> 00:00:08 verbose #588 > > resultm.err 00:00:08 verbose #589 > > 00:00:08 verbose #590 > > |> async.new_future_move 00:00:09 verbose #591 > > 00:00:09 verbose #592 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:09 verbose #593 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:09 verbose #594 > > │ ### main │ 00:00:09 verbose #595 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:09 verbose #596 > > 00:00:09 verbose #597 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:09 verbose #598 > > ///! _ 00:00:09 verbose #599 > > 00:00:09 verbose #600 > > inl main (args : array_base string) = 00:00:09 verbose #601 > > inl command = get_command () 00:00:09 verbose #602 > > inl arg_matches = command |> runtime.command_get_matches 00:00:09 verbose #603 > > 00:00:09 verbose #604 > > inl trace_level = 00:00:09 verbose #605 > > arg_matches 00:00:09 verbose #606 > > |> runtime.matches_get_one (get_args () .trace_level |> fst) 00:00:09 verbose #607 > > |> optionm'.unbox 00:00:09 verbose #608 > > |> optionm.map ( 00:00:09 verbose #609 > > sm'.from_std_string 00:00:09 verbose #610 > > >> reflection.union_try_pick 00:00:09 verbose #611 > > ) 00:00:09 verbose #612 > > |> optionm'.flatten 00:00:09 verbose #613 > > |> optionm'.default_value Verbose 00:00:09 verbose #614 > > 00:00:09 verbose #615 > > inl trace_state = get_trace_state_or_init (Some trace_level) 00:00:09 verbose #616 > > 00:00:09 verbose #617 > > trace Verbose 00:00:09 verbose #618 > > fun () => $'$"spiral_wasm.main"' 00:00:09 verbose #619 > > fun () => { args } 00:00:09 verbose #620 > > 00:00:09 verbose #621 > > inl exception : bool = 00:00:09 verbose #622 > > arg_matches 00:00:09 verbose #623 > > |> runtime.matches_get_flag (get_args () .exception |> fst) 00:00:09 verbose #624 > > 00:00:09 verbose #625 > > inl result = 00:00:09 verbose #626 > > arg_matches 00:00:09 verbose #627 > > |> run 00:00:09 verbose #628 > > |> async.block_on 00:00:09 verbose #629 > > |> resultm.map_error' sm'.format' 00:00:09 verbose #630 > > 00:00:09 verbose #631 > > match result |> resultm.ok' |> optionm'.unbox with 00:00:09 verbose #632 > > | Some retries when exception => "spiral_wasm.main / exception=true" |> 00:00:09 verbose #633 > > resultm.err |> resultm.unwrap' 00:00:09 verbose #634 > > | None when exception => () 00:00:09 verbose #635 > > | Some retries => retries |> ignore 00:00:09 verbose #636 > > | None => result |> resultm.unwrap' |> ignore 00:00:09 verbose #637 > > 00:00:09 verbose #638 > > 0i32 00:00:09 verbose #639 > > 00:00:09 verbose #640 > > inl main () = 00:00:09 verbose #641 > > $'let main args = !main args' : () 00:00:18 verbose #642 > 00:00:18 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 31915 } 00:00:18 verbose #643 > 00:00:18 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:00:18 verbose #644 > "nbconvert", 00:00:18 verbose #645 > "/home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib.ipynb", 00:00:18 verbose #646 > "--to", 00:00:18 verbose #647 > "html", 00:00:18 verbose #648 > "--HTMLExporter.theme=dark", 00:00:18 verbose #649 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:19 verbose #650 > 00:00:19 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib.ipynb to html 00:00:19 verbose #651 > 00:00:19 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:19 verbose #652 > 00:00:19 verbose #7 ! validate(nb) 00:00:20 verbose #653 > 00:00:19 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:20 verbose #654 > 00:00:19 verbose #9 ! return _pygments_highlight( 00:00:20 verbose #655 > 00:00:19 verbose #10 ! [NbConvertApp] Writing 361683 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib.html 00:00:20 verbose #656 > 00:00:19 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 918 } 00:00:20 verbose #657 > 00:00:19 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 918 } 00:00:20 verbose #658 > 00:00:19 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:00:20 verbose #659 > "-c", 00:00:20 verbose #660 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:00:20 verbose #661 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:20 verbose #662 > 00:00:20 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:20 verbose #663 > 00:00:20 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:20 verbose #664 > 00:00:20 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 32892 } 00:00:20 debug #665 runtime.execute_with_options_async / { exit_code = 0; output_length = 37073 } 00:00:20 debug #1 main / executeCommand / exitCode: 0 / command: ../../../workspace/target/release/spiral_builder dib --path spiral_wasm.dib 00:00:00 debug #1 writeDibCode / output: Spi / path: spiral_wasm.dib 00:00:00 debug #2 parseDibCode / output: Spi / file: spiral_wasm.dib 00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 verbose #2 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 debug #1 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi 00:00:00 debug #2 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_wasm.spi 00:00:00 debug #3 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi 00:00:00 verbose #4 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # spiral_wasm\nopen rust.rust_operators\nopen rust\nopen sm\u0027_operat...\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.spi"}} / result: 00:00:00 verbose #5 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.spi"}} / result: 00:00:01 debug #6 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_wasm.spi 00:00:01 debug #7 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi 00:00:01 debug #8 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_wasm.spi 00:00:01 debug #9 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi 00:00:02 debug #10 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_wasm.spi 00:00:02 debug #11 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi 00:00:02 debug #12 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_wasm.spi 00:00:02 debug #13 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi 00:00:03 debug #14 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_wasm.spi 00:00:03 debug #15 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi 00:00:03 debug #16 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_wasm.spi 00:00:03 debug #17 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi 00:00:04 debug #18 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_wasm.spi 00:00:04 debug #19 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi 00:00:04 debug #20 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_wasm.spi 00:00:04 debug #21 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi 00:00:05 debug #22 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_wasm.spi 00:00:05 debug #23 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi 00:00:05 debug #24 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_wasm.spi 00:00:05 debug #25 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi 00:00:06 debug #26 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_wasm.spi 00:00:06 debug #27 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi 00:00:06 debug #28 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_wasm.spi 00:00:06 debug #29 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi 00:00:07 debug #30 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_wasm.spi 00:00:07 debug #31 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi 00:00:07 debug #32 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_wasm.spi 00:00:07 debug #33 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi 00:00:08 debug #34 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_wasm.spi 00:00:08 debug #35 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi 00:00:08 debug #36 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_wasm.spi 00:00:08 debug #37 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi 00:00:09 debug #38 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_wasm.spi 00:00:09 debug #39 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi 00:00:09 debug #40 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_wasm.spi 00:00:09 debug #41 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi 00:00:09 debug #42 Supervisor.buildFile / AsyncSeq.scan / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] #endif type Ref<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit... Fable.Core.RustInterop.emitRustExpr v906 v907 () 0 let v0 : ((string []) -> int32) = closure0() let main args = v0 args () / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: spiral_wasm.spi 00:00:09 debug #43 Supervisor.buildFile / takeWhileInclusive / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] #endif type Ref<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit... Fable.Core.RustInterop.emitRustExpr v906 v907 () 0 let v0 : ((string []) -> int32) = closure0() let main args = v0 args () / errors: [] / typeErrorCount: 0 / retry: 0 / path: spiral_wasm.spi 00:00:09 debug #44 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:00 debug #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: spiral_wasm / hash: / code.Length: 2206359 targetDir: /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm Fable 4.19.3: F# to Rust compiler (status: alpha) Thanks to the contributor! @ctaggart Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target/Builder/spiral_wasm/spiral_wasm.fsproj... target/Builder/spiral_wasm> dotnet restore spiral_wasm.fable-temp.csproj -p:FABLE_COMPILER=true -p:FABLE_COMPILER_4=true -p:FABLE_COMPILER_RUST=true -p:_LINUX=true Determining projects to restore... Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b The last full restore is still up to date. Nothing left to do. Total time taken: 0 milliseconds Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b Restoring /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm/spiral_wasm.fable-temp.csproj Starting restore process. Total time taken: 0 milliseconds Restored /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm/spiral_wasm.fable-temp.csproj (in 286 ms). target/Builder/spiral_wasm> dotnet restore /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm/spiral_wasm.fsproj Determining projects to restore... Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b The last full restore is still up to date. Nothing left to do. Total time taken: 0 milliseconds Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b Restoring /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm/spiral_wasm.fsproj Starting restore process. Total time taken: 0 milliseconds Restored /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm/spiral_wasm.fsproj (in 283 ms). Project and references (14 source files) parsed in 5995ms Started Fable compilation... Fable compilation finished in 13535ms ./lib/spiral/common.fsx(1425,0): (1425,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/async_.fsx(76,0): (76,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/sm.fsx(414,0): (414,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/threading.fsx(145,0): (145,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/date_time.fsx(1012,0): (1012,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/crypto.fsx(1326,0): (1326,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/platform.fsx(104,0): (104,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/networking.fsx(4626,0): (4626,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/trace.fsx(1524,0): (1524,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/runtime.fsx(7219,0): (7219,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/file_system.fsx(11479,0): (11479,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! Downloading crates ... Downloaded async-stream-impl v0.3.5 Downloaded darling_macro v0.20.10 Downloaded near-abi v0.4.3 Downloaded urlencoding v2.1.3 Downloaded strum_macros v0.24.3 Downloaded smart-default v0.6.0 Downloaded signal-hook-mio v0.2.4 Downloaded rustix v0.38.35 Downloaded prost-derive v0.12.6 Downloaded schemars v0.8.21 Downloaded serde_derive_internals v0.29.1 Downloaded strum v0.24.1 Downloaded slipped10 v0.4.6 Downloaded prometheus v0.13.4 Downloaded signal-hook v0.3.17 Downloaded tracing-indicatif v0.3.6 Downloaded symbolic-debuginfo v8.8.0 Downloaded symbolic-common v8.8.0 Downloaded portable-atomic v1.7.0 Downloaded serde_with v3.9.0 Downloaded tokio-io-timeout v1.2.0 Downloaded term v0.7.0 Downloaded nix v0.26.4 Downloaded zvariant v3.15.2 Downloaded tracing-appender v0.2.3 Downloaded smawk v0.3.2 Downloaded serde_yaml v0.9.34+deprecated Downloaded near-cli-rs v0.11.1 Downloaded scroll v0.10.2 Downloaded prettytable v0.10.0 Downloaded opentelemetry-semantic-conventions v0.14.0 Downloaded num-complex v0.4.6 Downloaded num v0.4.3 Downloaded near-parameters v0.23.0 Downloaded near-jsonrpc-primitives v0.23.0 Downloaded near-gas v0.2.5 Downloaded memmap2 v0.5.10 Downloaded sha3 v0.10.8 Downloaded jsonptr v0.4.7 Downloaded interactive-clap v0.2.10 Downloaded indicatif v0.17.8 Downloaded indexmap v1.9.3 Downloaded gimli v0.26.2 Downloaded scroll_derive v0.11.1 Downloaded proc-macro-crate v1.3.1 Downloaded owo-colors v3.5.0 Downloaded ordered-float v4.2.2 Downloaded opentelemetry-otlp v0.15.0 Downloaded near-crypto v0.23.0 Downloaded zvariant_utils v1.0.1 Downloaded hyper-timeout v0.4.1 Downloaded rustix v0.37.27 Downloaded reed-solomon-erasure v4.0.2 Downloaded plain v0.2.3 Downloaded new_debug_unreachable v1.0.6 Downloaded near_schemafy_core v0.7.0 Downloaded near-sandbox-utils v0.8.0 Downloaded near-rpc-error-core v0.23.0 Downloaded near-primitives v0.23.0 Downloaded near-async-derive v0.23.0 Downloaded near-account-id v1.0.0 Downloaded near-abi-client-impl v0.1.1 Downloaded zbus_names v2.6.1 Downloaded zbus v3.15.2 Downloaded xdg-home v1.3.0 Downloaded wasmparser v0.83.0 Downloaded vt100 v0.15.2 Downloaded keyring v2.3.3 Downloaded hmac v0.9.0 Downloaded num-rational v0.4.2 Downloaded near-token v0.2.1 Downloaded near-stdx v0.23.0 Downloaded wasmparser v0.211.1 Downloaded ureq v2.10.1 Downloaded unicode-normalization v0.1.22 Downloaded names v0.14.0 Downloaded linux-keyutils v0.2.4 Downloaded json-patch v2.0.0 Downloaded io-lifetimes v1.0.11 Downloaded goblin v0.5.4 Downloaded futures-lite v1.13.0 Downloaded fluent-uri v0.1.4 Downloaded fastrand v1.9.0 Downloaded enumflags2 v0.7.10 Downloaded encode_unicode v1.0.0 Downloaded ed25519-dalek v2.1.1 Downloaded easy-ext v1.0.2 Downloaded dirs v5.0.1 Downloaded debugid v0.7.3 Downloaded darling_core v0.20.10 Downloaded rust_decimal v1.36.0 Downloaded protobuf v2.28.0 Downloaded pdb v0.7.0 Downloaded opentelemetry_sdk v0.22.1 Downloaded opentelemetry-proto v0.5.0 Downloaded opentelemetry v0.22.0 Downloaded num-bigint v0.3.3 Downloaded near-workspaces v0.11.1 Downloaded near-jsonrpc-client v0.10.1 Downloaded near-chain-configs v0.23.0 Downloaded near-async v0.23.0 Downloaded zvariant_derive v3.15.2 Downloaded secp256k1-sys v0.8.1 Downloaded zip v0.5.13 Downloaded zbus_macros v3.15.2 Downloaded xml-rs v0.8.21 Downloaded uuid v0.8.2 Downloaded unsafe-libyaml v0.2.11 Downloaded uint v0.9.5 Downloaded ident_case v1.0.1 Downloaded event-listener v2.5.3 Downloaded dyn-clone v1.0.17 Downloaded derive_arbitrary v1.3.2 Downloaded curve25519-dalek-derive v0.1.1 Downloaded crypto-mac v0.9.1 Downloaded crossterm v0.25.0 Downloaded colored v2.1.0 Downloaded color-eyre v0.6.3 Downloaded borsh-derive v1.5.1 Downloaded bitcoin_hashes v0.11.0 Downloaded binary-install v0.2.0 Downloaded serde_with_macros v3.9.0 Downloaded serde_repr v0.1.19 Downloaded secret-service v3.1.0 Downloaded secp256k1 v0.27.0 Downloaded scroll v0.11.0 Downloaded schemars_derive v0.8.21 Downloaded prost v0.12.6 Downloaded prettyplease v0.1.25 Downloaded polling v2.8.0 Downloaded ordered-stream v0.2.0 Downloaded num-rational v0.3.2 Downloaded nom-supreme v0.6.0 Downloaded near_schemafy_lib v0.7.0 Downloaded near-primitives-core v0.23.0 Downloaded near-performance-metrics v0.23.0 Downloaded near-o11y v0.23.0 Downloaded near-fmt v0.23.0 Downloaded unicode-linebreak v0.1.5 Downloaded cargo-near v0.6.4 Downloaded bs58 v0.4.0 Downloaded block-buffer v0.9.0 Downloaded async-trait v0.1.81 Downloaded async-stream v0.3.5 Downloaded async-io v1.13.0 Downloaded shellexpand v3.1.0 Downloaded tracing-opentelemetry v0.23.0 Downloaded tracing-error v0.2.0 Downloaded tonic v0.11.0 Downloaded tokio-util v0.7.11 Downloaded textwrap v0.16.1 Downloaded smart-default v0.7.1 Downloaded proc-macro-crate v3.2.0 Downloaded primitive-types v0.10.1 Downloaded opaque-debug v0.3.1 Downloaded newline-converter v0.3.0 Downloaded near-time v0.23.0 Downloaded near-socialdb-client v0.3.2 Downloaded near-sandbox-utils v0.9.0 Downloaded near-rpc-error-macro v0.23.0 Downloaded near-config-utils v0.23.0 Downloaded near-abi-client-macros v0.1.1 Downloaded waker-fn v1.2.0 Downloaded uriparse v0.6.4 Downloaded near-abi-client v0.1.1 Downloaded linux-raw-sys v0.3.8 Downloaded csv v1.3.0 Downloaded axum-core v0.3.4 Downloaded string_cache v0.8.7 Downloaded sha2 v0.9.9 Downloaded gimli v0.28.1 Downloaded curve25519-dalek v4.1.3 Downloaded color-spantrace v0.2.1 Downloaded bip39 v2.0.0 Downloaded backtrace v0.3.71 Downloaded axum v0.6.20 Downloaded keccak v0.1.5 Downloaded json_comments v0.2.2 Downloaded joinery v2.1.0 Downloaded inquire v0.7.5 Downloaded indexmap v2.4.0 Downloaded indent_write v2.2.0 Downloaded hyper-rustls v0.27.2 Downloaded enum-map-derive v0.17.0 Downloaded elementtree v0.7.0 Downloaded easy-ext v0.2.9 Downloaded derivative v2.2.0 Downloaded cc v1.1.15 Downloaded borsh v1.5.1 Downloaded blake2 v0.10.6 Downloaded async-lock v2.8.0 Downloaded async-executor v1.13.0 Downloaded arbitrary v1.3.2 Downloaded addr2line v0.21.0 Downloaded actix v0.13.5 Downloaded memoffset v0.7.1 Downloaded libloading v0.8.5 Downloaded interactive-clap-derive v0.2.10 Downloaded hyper-tls v0.6.0 Downloaded hex v0.3.2 Downloaded fuzzy-matcher v0.3.7 Downloaded fs2 v0.4.3 Downloaded fixed-hash v0.7.0 Downloaded fallible-iterator v0.2.0 Downloaded enumflags2_derive v0.7.10 Downloaded enum-map v2.7.3 Downloaded ed25519 v2.2.3 Downloaded dmsort v1.0.2 Downloaded digest v0.9.0 Downloaded darling v0.20.10 Downloaded csv-core v0.1.11 Downloaded near-sandbox-utils v0.10.1 Downloaded cargo-util v0.1.2 Downloaded bs58 v0.5.1 Downloaded async-fs v1.6.0 Downloaded actix_derive v0.6.1 Downloaded actix-macros v0.2.4 Downloaded crypto-hash v0.3.4 Downloaded convert_case v0.5.0 Downloaded brownstone v1.1.0 Downloaded actix-rt v2.10.0 Downloaded Inflector v0.11.4 Downloaded async-broadcast v0.5.1 Downloaded openssl-src v300.3.1+3.3.1 Compiling libc v0.2.158 Compiling version_check v0.9.5 Compiling serde v1.0.209 Compiling syn v2.0.76 Compiling shlex v1.3.0 Compiling once_cell v1.19.0 Compiling generic-array v0.14.7 Compiling jobserver v0.1.32 Compiling byteorder v1.5.0 Compiling cc v1.1.15 Compiling smallvec v1.13.2 Compiling pkg-config v0.3.30 Compiling getrandom v0.2.15 Compiling syn v1.0.109 Compiling parking_lot_core v0.9.10 Compiling log v0.4.22 Compiling parking_lot v0.12.3 Compiling signal-hook-registry v1.4.2 Compiling rand_core v0.6.4 Compiling tracing-core v0.1.32 Compiling futures-sink v0.3.30 Compiling hashbrown v0.14.5 Compiling equivalent v1.0.1 Compiling socket2 v0.5.7 Compiling indexmap v2.4.0 Compiling mio v1.0.2 Compiling toml_datetime v0.6.8 Compiling subtle v2.6.1 Compiling crypto-common v0.1.6 Compiling futures-channel v0.3.30 Compiling num-traits v0.2.19 Compiling anyhow v1.0.86 Compiling block-buffer v0.10.4 Compiling proc-macro-error-attr v1.0.4 Compiling fnv v1.0.7 Compiling digest v0.10.7 Compiling proc-macro-error v1.0.4 Compiling ahash v0.8.11 Compiling serde_derive v1.0.209 Compiling zerocopy-derive v0.7.35 Compiling tokio-macros v2.4.0 Compiling tracing-attributes v0.1.27 Compiling zerocopy v0.7.35 Compiling tokio v1.40.0 Compiling tracing v0.1.40 Compiling futures-macro v0.3.30 Compiling ppv-lite86 v0.2.20 Compiling futures-util v0.3.30 Compiling zstd-sys v2.0.13+zstd.1.5.6 Compiling crossbeam-utils v0.8.20 Compiling rand_chacha v0.3.1 Compiling bitflags v2.6.0 Compiling cfg_aliases v0.2.1 Compiling lazy_static v1.5.0 Compiling rand v0.8.5 Compiling winnow v0.6.18 Compiling thiserror-impl v1.0.63 Compiling toml_edit v0.22.20 Compiling rustversion v1.0.17 Compiling thiserror v1.0.63 Compiling syn_derive v0.1.8 Compiling serde_json v1.0.127 Compiling tokio-util v0.7.11 Compiling sha2 v0.10.8 Compiling semver v1.0.23 Compiling proc-macro-crate v3.2.0 Compiling percent-encoding v2.3.1 Compiling borsh v1.5.1 Compiling bitflags v1.3.2 Compiling num-integer v0.1.46 Compiling httparse v1.9.4 Compiling hex v0.4.3 Compiling ring v0.17.8 Compiling tower-service v0.3.3 Compiling cfg-if v1.0.0 Compiling try-lock v0.2.5 Compiling want v0.3.1 Compiling pin-project-internal v1.1.5 Compiling async-trait v0.1.81 Compiling borsh-derive v1.5.1 Compiling indexmap v1.9.3 Compiling memchr v2.7.4 Compiling typenum v1.17.0 Compiling static_assertions v1.1.0 Compiling pin-project v1.1.5 Compiling http v0.2.12 Compiling thread_local v1.1.8 Compiling powerfmt v0.2.0 Compiling tower-layer v0.3.3 Compiling regex-syntax v0.6.29 Compiling hashbrown v0.12.3 Compiling deranged v0.3.11 Compiling openssl-src v300.3.1+3.3.1 Compiling num_cpus v1.16.0 Compiling regex-automata v0.1.10 Compiling time-core v0.1.2 Compiling num-conv v0.1.0 Compiling overload v0.1.1 Compiling vcpkg v0.2.15 Compiling openssl-sys v0.9.103 Compiling matchers v0.1.0 Compiling nu-ansi-term v0.46.0 Compiling time v0.3.36 Compiling futures-executor v0.3.30 Compiling tower v0.4.13 Compiling http-body v0.4.6 Compiling rustc_version v0.4.1 Compiling crossbeam-channel v0.5.13 Compiling sharded-slab v0.1.7 Compiling serde_repr v0.1.19 Compiling tracing-log v0.2.0 Compiling bzip2-sys v0.1.11+1.0.8 Compiling num-bigint v0.3.3 Compiling base64 v0.21.7 Compiling zstd-safe v5.0.2+zstd.1.5.2 Compiling tracing-subscriber v0.3.18 Compiling curve25519-dalek v4.1.3 Compiling h2 v0.3.26 Compiling axum-core v0.3.4 Compiling num-rational v0.3.2 Compiling either v1.13.0 Compiling crunchy v0.2.2 Compiling tinyvec_macros v0.1.1 Compiling httpdate v1.0.3 Compiling base64 v0.22.1 Compiling mime v0.3.17 Compiling convert_case v0.4.0 Compiling hyper v0.14.30 Compiling derive_more v0.99.18 Compiling tinyvec v1.8.0 Compiling itertools v0.12.1 Compiling near-account-id v1.0.0 Compiling aho-corasick v1.1.3 Compiling axum v0.6.20 Compiling tokio-stream v0.1.15 Compiling enum-map-derive v0.17.0 Compiling derive_arbitrary v1.3.2 Compiling curve25519-dalek-derive v0.1.1 Compiling secp256k1-sys v0.8.1 Compiling urlencoding v2.1.3 Compiling rustls-pki-types v1.8.0 Compiling heck v0.4.1 Compiling rustls v0.23.12 Compiling schemars v0.8.21 Compiling signature v2.2.0 Compiling bs58 v0.4.0 Compiling regex-syntax v0.8.4 Compiling ed25519 v2.2.3 Compiling strum_macros v0.24.3 Compiling regex-automata v0.4.7 Compiling opentelemetry v0.22.0 Compiling arbitrary v1.3.2 Compiling enum-map v2.7.3 Compiling prost-derive v0.12.6 Compiling unicode-normalization v0.1.22 Compiling concurrent-queue v2.5.0 Compiling tokio-io-timeout v1.2.0 Compiling ordered-float v4.2.2 Compiling async-stream-impl v0.3.5 Compiling serde_derive_internals v0.29.1 Compiling block-padding v0.3.3 Compiling ident_case v1.0.1 Compiling matchit v0.7.3 Compiling openssl v0.10.66 Compiling sync_wrapper v0.1.2 Compiling foreign-types-shared v0.1.1 Compiling strsim v0.11.1 Compiling glob v0.3.1 Compiling opentelemetry_sdk v0.22.1 Compiling darling_core v0.20.10 Compiling schemars_derive v0.8.21 Compiling foreign-types v0.3.2 Compiling async-stream v0.3.5 Compiling inout v0.1.3 Compiling hyper-timeout v0.4.1 Compiling uint v0.9.5 Compiling prost v0.12.6 Compiling near-primitives-core v0.23.0 Compiling regex v1.10.6 Compiling ed25519-dalek v2.1.1 Compiling strum v0.24.1 Compiling fixed-hash v0.7.0 Compiling form_urlencoded v1.2.1 Compiling openssl-macros v0.1.1 Compiling http v1.1.0 Compiling json_comments v0.2.2 Compiling fastrand v2.1.1 Compiling unicode-bidi v0.3.15 Compiling rustix v0.38.35 Compiling protobuf v2.28.0 Compiling winnow v0.5.40 Compiling idna v0.5.0 Compiling near-config-utils v0.23.0 Compiling tonic v0.11.0 Compiling primitive-types v0.10.1 Compiling toml_edit v0.19.15 Compiling secp256k1 v0.27.0 Compiling cipher v0.4.4 Compiling darling_macro v0.20.10 Compiling actix-rt v2.10.0 Compiling actix-macros v0.2.4 Compiling actix_derive v0.6.1 Compiling blake2 v0.10.6 Compiling hmac v0.12.1 Compiling arrayvec v0.7.6 Compiling zstd-safe v7.2.1 Compiling near-stdx v0.23.0 Compiling prometheus v0.13.4 Compiling adler2 v2.0.0 Compiling heck v0.5.0 Compiling linux-raw-sys v0.4.14 Compiling clap_builder v4.5.15 Compiling clap_derive v4.5.13 Compiling miniz_oxide v0.8.0 Compiling near-crypto v0.23.0 Compiling actix v0.13.5 Compiling darling v0.20.10 Compiling proc-macro-crate v1.3.1 Compiling opentelemetry-proto v0.5.0 Compiling url v2.5.2 Compiling http-body v1.0.1 Compiling event-listener v5.3.1 Compiling futures v0.3.30 Compiling sha1 v0.10.6 Compiling zvariant_utils v1.0.1 Compiling crc32fast v1.4.2 Compiling reed-solomon-erasure v4.0.2 Compiling opentelemetry-semantic-conventions v0.14.0 Compiling unsafe-libyaml v0.2.11 Compiling native-tls v0.2.12 Compiling unicode-width v0.1.13 Compiling cpufeatures v0.2.13 Compiling io-lifetimes v1.0.11 Compiling event-listener v2.5.3 Compiling serde_yaml v0.9.34+deprecated Compiling opentelemetry-otlp v0.15.0 Compiling chrono v0.4.38 Compiling flate2 v1.0.33 Compiling event-listener-strategy v0.5.2 Compiling serde_with_macros v3.9.0 Compiling clap v4.5.16 Compiling aes v0.8.4 Compiling h2 v0.4.6 Compiling tracing-opentelemetry v0.23.0 Compiling tracing-appender v0.2.3 Compiling near-time v0.23.0 Compiling near-rpc-error-core v0.23.0 Compiling enumflags2_derive v0.7.10 Compiling dirs-sys-next v0.1.2 Compiling futures-lite v2.3.0 Compiling polling v2.8.0 Compiling memoffset v0.7.1 Compiling ryu v1.0.18 Compiling untrusted v0.9.0 Compiling siphasher v0.3.11 Compiling waker-fn v1.2.0 Compiling itoa v1.0.11 Compiling spin v0.9.8 Compiling rustix v0.37.27 Compiling fastrand v1.9.0 Compiling dyn-clone v1.0.17 Compiling openssl-probe v0.1.5 Compiling keccak v0.1.5 Compiling sha3 v0.10.8 Compiling futures-lite v1.13.0 Compiling itertools v0.10.5 Compiling dirs-next v2.0.0 Compiling hyper v1.4.1 Compiling enumflags2 v0.7.10 Compiling near-rpc-error-macro v0.23.0 Compiling near-o11y v0.23.0 Compiling zstd v0.13.2 Compiling serde_with v3.9.0 Compiling async-channel v2.3.1 Compiling near-parameters v0.23.0 Compiling async-lock v2.8.0 Compiling zvariant_derive v3.15.2 Compiling near-performance-metrics v0.23.0 Compiling piper v0.2.4 Compiling near-fmt v0.23.0 Compiling bytesize v1.3.0 Compiling smart-default v0.6.0 Compiling near-async-derive v0.23.0 Compiling filetime v0.2.25 Compiling async-io v1.13.0 Compiling async-fs v1.6.0 Compiling proc-macro2 v1.0.86 Compiling linux-raw-sys v0.3.8 Compiling unicode-ident v1.0.12 Compiling signal-hook v0.3.17 Compiling base64ct v1.6.0 Compiling easy-ext v0.2.9 Compiling near-primitives v0.23.0 Compiling password-hash v0.4.2 Compiling near-async v0.23.0 Compiling zvariant v3.15.2 Compiling blocking v1.6.1 Compiling hyper-util v0.1.7 Compiling rustls-webpki v0.102.7 Compiling http-body-util v0.1.2 Compiling num-bigint v0.4.6 Compiling interactive-clap-derive v0.2.10 Compiling backtrace v0.3.71 Compiling socket2 v0.4.10 Compiling vte_generate_state_changes v0.1.2 Compiling adler v1.0.2 Compiling zeroize v1.8.1 Compiling eyre v0.6.12 Compiling gimli v0.28.1 Compiling portable-atomic v1.7.0 Compiling addr2line v0.21.0 Compiling miniz_oxide v0.7.4 Compiling vte v0.11.1 Compiling interactive-clap v0.2.10 Compiling num-rational v0.4.2 Compiling near-chain-configs v0.23.0 Compiling pbkdf2 v0.11.0 Compiling nix v0.26.4 Compiling zstd v0.11.2+zstd.1.5.2 Compiling zbus_names v2.6.1 Compiling bzip2 v0.4.4 Compiling quote v1.0.37 Compiling xattr v1.3.1 Compiling async-executor v1.13.0 Compiling webpki-roots v0.26.3 Compiling async-broadcast v0.5.1 Compiling zbus_macros v3.15.2 Compiling serde_urlencoded v0.7.1 Compiling rustls-pemfile v2.1.3 Compiling tracing-error v0.2.0 Compiling num-iter v0.1.45 Compiling derivative v2.2.0 Compiling num-complex v0.4.6 Compiling async-recursion v1.1.1 Compiling digest v0.9.0 Compiling mio v0.8.11 Compiling xdg-home v1.3.0 Compiling ordered-stream v0.2.0 Compiling sync_wrapper v1.0.1 Compiling object v0.32.2 Compiling option-ext v0.2.0 Compiling rustc-demangle v0.1.24 Compiling owo-colors v3.5.0 Compiling indenter v0.3.3 Compiling uuid v0.8.2 Compiling ipnet v2.9.0 Compiling radium v0.7.0 Compiling constant_time_eq v0.1.5 Compiling zip v0.6.6 Compiling color-spantrace v0.2.1 Compiling dirs-sys v0.4.1 Compiling zbus v3.15.2 Compiling ureq v2.10.1 Compiling signal-hook-mio v0.2.4 Compiling num v0.4.3 Compiling tar v0.4.41 Compiling near-jsonrpc-primitives v0.23.0 Compiling vt100 v0.15.2 Compiling Inflector v0.11.4 Compiling uriparse v0.6.4 Compiling near-abi v0.4.3 Compiling near_schemafy_core v0.7.0 Compiling phf_shared v0.10.0 Compiling console v0.15.8 Compiling hkdf v0.12.4 Compiling cbc v0.1.2 Compiling serde_spanned v0.6.7 Compiling scroll_derive v0.11.1 Compiling crypto-mac v0.9.1 Compiling block-buffer v0.9.0 Compiling fs2 v0.4.3 Compiling csv-core v0.1.11 Compiling is-docker v0.2.0 Compiling is_executable v0.1.2 Compiling minimal-lexical v0.2.1 Compiling pin-project-lite v0.2.14 Compiling number_prefix v0.4.0 Compiling new_debug_unreachable v1.0.6 Compiling stable_deref_trait v1.2.0 Compiling iana-time-zone v0.1.60 Compiling fallible-iterator v0.2.0 Compiling rust_decimal v1.36.0 Compiling unicode-segmentation v1.11.0 Compiling bytes v1.7.1 Compiling hex v0.3.2 Compiling same-file v1.0.6 Compiling tap v1.0.1 Compiling opaque-debug v0.3.1 Compiling near-sandbox-utils v0.8.0 Compiling precomputed-hash v0.1.1 Compiling camino v1.1.9 Compiling string_cache v0.8.7 Compiling sha2 v0.9.9 Compiling wyz v0.5.1 Compiling walkdir v2.5.0 Compiling newline-converter v0.3.0 Compiling indicatif v0.17.8 Compiling nom v7.1.3 Compiling binary-install v0.2.0 Compiling csv v1.3.0 Compiling is-wsl v0.4.0 Compiling scroll v0.11.0 Compiling hmac v0.9.0 Compiling secret-service v3.1.0 Compiling near_schemafy_lib v0.7.0 Compiling crossterm v0.25.0 Compiling dirs v5.0.1 Compiling color-eyre v0.6.3 Compiling debugid v0.7.3 Compiling near-token v0.2.1 Compiling term v0.7.0 Compiling tempfile v3.12.0 Compiling brownstone v1.1.0 Compiling fuzzy-matcher v0.3.7 Compiling linux-keyutils v0.2.4 Compiling memmap2 v0.5.10 Compiling is-terminal v0.4.13 Compiling fxhash v0.2.1 Compiling prettyplease v0.1.25 Compiling xml-rs v0.8.21 Compiling pathdiff v0.2.1 Compiling home v0.5.9 Compiling encode_unicode v1.0.0 Compiling indent_write v2.2.0 Compiling scroll v0.10.2 Compiling bitcoin_hashes v0.11.0 Compiling funty v2.0.0 Compiling plain v0.2.3 Compiling unicode-linebreak v0.1.5 Compiling shell-escape v0.1.5 Compiling names v0.14.0 Compiling joinery v2.1.0 Compiling smawk v0.3.2 Compiling nom-supreme v0.6.0 Compiling textwrap v0.16.1 Compiling bip39 v2.0.0 Compiling bitvec v1.0.1 Compiling goblin v0.5.4 Compiling pdb v0.7.0 Compiling prettytable v0.10.0 Compiling elementtree v0.7.0 Compiling open v5.3.0 Compiling inquire v0.7.5 Compiling symbolic-common v8.8.0 Compiling keyring v2.3.3 Compiling shellexpand v3.1.0 Compiling near-abi-client-impl v0.1.1 Compiling slipped10 v0.4.6 Compiling toml v0.8.19 Compiling tracing-indicatif v0.3.6 Compiling gimli v0.26.2 Compiling near-gas v0.2.5 Compiling wasmparser v0.211.1 Compiling zip v0.5.13 Compiling env_filter v0.1.2 Compiling cargo-platform v0.1.8 Compiling linked-hash-map v0.5.6 Compiling smart-default v0.7.1 Compiling humantime v2.1.0 Compiling lazycell v1.3.0 Compiling wasmparser v0.83.0 Compiling shell-words v1.1.0 Compiling bs58 v0.5.1 Compiling dmsort v1.0.2 Compiling easy-ext v1.0.2 Compiling near-sandbox-utils v0.9.0 Compiling env_logger v0.11.5 Compiling symbolic-debuginfo v8.8.0 Compiling cargo_metadata v0.18.1 Compiling near-abi-client-macros v0.1.1 Compiling near-workspaces v0.11.1 Compiling jsonptr v0.4.7 Compiling colored v2.1.0 Compiling atty v0.2.14 Compiling libloading v0.8.5 Compiling near-sandbox-utils v0.10.1 Compiling convert_case v0.5.0 Compiling dunce v1.0.5 Compiling json-patch v2.0.0 Compiling near-abi-client v0.1.1 Compiling tokio-retry v0.3.0 Compiling uuid v1.10.0 Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust) Compiling crypto-hash v0.3.4 Compiling cargo-util v0.1.2 Compiling tokio-native-tls v0.3.1 Compiling hyper-tls v0.6.0 Compiling reqwest v0.12.7 Compiling near-jsonrpc-client v0.10.1 Compiling near-socialdb-client v0.3.2 Compiling near-cli-rs v0.11.1 Compiling cargo-near v0.6.4 Compiling spiral_wasm v0.0.1 (/home/runner/work/polyglot/polyglot/apps/spiral/wasm) Finished `release` profile [optimized] target(s) in 4m 34s
In [ ]:
{ pwsh ../lib/math/build.ps1 } | Invoke-Block
00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 debug #1 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path math.dib --retries 5; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:00 verbose #2 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "math.dib", "--retries", "5"])) } 00:00:00 verbose #3 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:00:00 verbose #4 > "repl", 00:00:00 verbose #5 > "--exit-after-run", 00:00:00 verbose #6 > "--run", 00:00:00 verbose #7 > "/home/runner/work/polyglot/polyglot/lib/math/math.dib", 00:00:00 verbose #8 > "--output-path", 00:00:00 verbose #9 > "/home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb", 00:00:00 verbose #10 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/math/math.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:01 verbose #11 > > 00:00:01 verbose #12 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:01 verbose #13 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:01 verbose #14 > > │ # math │ 00:00:01 verbose #15 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:04 verbose #16 > > 00:00:04 verbose #17 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:04 verbose #18 > > open testing 00:00:04 verbose #19 > > open rust.rust_operators 00:00:04 verbose #20 > > open rust 00:00:04 verbose #21 > > 00:00:04 verbose #22 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:04 verbose #23 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:04 verbose #24 > > │ ## complex │ 00:00:04 verbose #25 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:04 verbose #26 > > 00:00:04 verbose #27 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:04 verbose #28 > > nominal complex t = 00:00:04 verbose #29 > > `( 00:00:04 verbose #30 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:04 verbose #31 > > Fable.Core.Emit(\"num_complex::Complex<$0>\")>]]\n#endif\ntype 00:00:04 verbose #32 > > num_complex_Complex<'T> = class end" 00:00:04 verbose #33 > > $'' : $'num_complex_Complex<`t>' 00:00:04 verbose #34 > > ) 00:00:04 verbose #35 > > 00:00:04 verbose #36 > > inl complex forall t. ((re : t), (im : t)) : complex t = 00:00:04 verbose #37 > > !\\((re, im), $'"num_complex::Complex::new($0, $1)"') 00:00:05 verbose #38 > > 00:00:05 verbose #39 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #40 > > //// test 00:00:05 verbose #41 > > ///! rust -d num-complex 00:00:05 verbose #42 > > 00:00:05 verbose #43 > > complex (0f64, 0f64) 00:00:05 verbose #44 > > |> sm'.format' 00:00:05 verbose #45 > > |> sm'.from_std_string 00:00:05 verbose #46 > > |> _assert_eq "0+0i" 00:00:15 verbose #47 > > 00:00:15 verbose #48 > > ╭─[ 10.72s - return value ]────────────────────────────────────────────────────╮ 00:00:15 verbose #49 > > │ __assert_eq / actual: "0+0i" / expected: "0+0i" │ 00:00:15 verbose #50 > > │ │ 00:00:15 verbose #51 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:15 verbose #52 > > 00:00:15 verbose #53 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:15 verbose #54 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:15 verbose #55 > > │ ## re │ 00:00:15 verbose #56 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:15 verbose #57 > > 00:00:15 verbose #58 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:15 verbose #59 > > inl re forall t. (c : complex t) : t = 00:00:15 verbose #60 > > !\\(c, $'"$0.re"') 00:00:15 verbose #61 > > 00:00:15 verbose #62 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:15 verbose #63 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:15 verbose #64 > > │ ## im │ 00:00:15 verbose #65 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:15 verbose #66 > > 00:00:15 verbose #67 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:15 verbose #68 > > inl im forall t. (c : complex t) : t = 00:00:15 verbose #69 > > !\\(c, $'"$0.im"') 00:00:15 verbose #70 > > 00:00:15 verbose #71 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:15 verbose #72 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:15 verbose #73 > > │ ## complex_unbox │ 00:00:15 verbose #74 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:15 verbose #75 > > 00:00:15 verbose #76 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:15 verbose #77 > > inl complex_unbox forall t. (c : complex t) = 00:00:15 verbose #78 > > re c, im c 00:00:16 verbose #79 > > 00:00:16 verbose #80 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 verbose #81 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:16 verbose #82 > > │ ## (~.^) │ 00:00:16 verbose #83 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #84 > > 00:00:16 verbose #85 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #86 > > inl (~.^) c = complex c 00:00:16 verbose #87 > > 00:00:16 verbose #88 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 verbose #89 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:16 verbose #90 > > │ ## complex_eq │ 00:00:16 verbose #91 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #92 > > 00:00:16 verbose #93 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #94 > > inl complex_eq forall t. (a : complex t) (b : complex t) : bool = 00:00:16 verbose #95 > > !\\((a, b), $'"$0 == $1"') 00:00:16 verbose #96 > > 00:00:16 verbose #97 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 verbose #98 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:16 verbose #99 > > │ ## (.=) │ 00:00:16 verbose #100 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #101 > > 00:00:16 verbose #102 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #103 > > inl (.=) a b = complex_eq a b 00:00:16 verbose #104 > > 00:00:16 verbose #105 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 verbose #106 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:16 verbose #107 > > │ ## equable complex │ 00:00:16 verbose #108 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #109 > > 00:00:16 verbose #110 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #111 > > instance equable complex t = complex_eq 00:00:16 verbose #112 > > 00:00:16 verbose #113 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 verbose #114 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:16 verbose #115 > > │ ## complex_add │ 00:00:16 verbose #116 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #117 > > 00:00:16 verbose #118 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #119 > > inl complex_add forall t. (a : complex t) (b : complex t) : complex t = 00:00:16 verbose #120 > > !\\((a, b), $'"$0 + $1"') 00:00:16 verbose #121 > > 00:00:16 verbose #122 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 verbose #123 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:16 verbose #124 > > │ ## (.+) │ 00:00:16 verbose #125 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #126 > > 00:00:16 verbose #127 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #128 > > inl (.+) a b = complex_add a b 00:00:16 verbose #129 > > 00:00:16 verbose #130 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 verbose #131 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:16 verbose #132 > > │ ## complex_sub │ 00:00:16 verbose #133 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #134 > > 00:00:16 verbose #135 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #136 > > inl complex_sub forall t. (a : complex t) (b : complex t) : complex t = 00:00:16 verbose #137 > > !\\((a, b), $'"$0 - $1"') 00:00:16 verbose #138 > > 00:00:16 verbose #139 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 verbose #140 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:16 verbose #141 > > │ ## (.-) │ 00:00:16 verbose #142 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #143 > > 00:00:16 verbose #144 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #145 > > inl (.-) a b = complex_sub a b 00:00:16 verbose #146 > > 00:00:16 verbose #147 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 verbose #148 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:16 verbose #149 > > │ ## complex_mult │ 00:00:16 verbose #150 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #151 > > 00:00:16 verbose #152 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #153 > > inl complex_mult forall t. (a : complex t) (b : complex t) : complex t = 00:00:16 verbose #154 > > !\\((a, b), $'"$0 * $1"') 00:00:16 verbose #155 > > 00:00:16 verbose #156 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 verbose #157 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:16 verbose #158 > > │ ## (.*) │ 00:00:16 verbose #159 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #160 > > 00:00:16 verbose #161 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #162 > > inl (.*) a b = complex_mult a b 00:00:17 verbose #163 > > 00:00:17 verbose #164 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:17 verbose #165 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:17 verbose #166 > > │ ## complex_div │ 00:00:17 verbose #167 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:17 verbose #168 > > 00:00:17 verbose #169 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:17 verbose #170 > > inl complex_div forall t. (a : complex t) (b : complex t) : complex t = 00:00:17 verbose #171 > > !\\((a, b), $'"$0 / $1"') 00:00:17 verbose #172 > > 00:00:17 verbose #173 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:17 verbose #174 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:17 verbose #175 > > │ ## (./) │ 00:00:17 verbose #176 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:17 verbose #177 > > 00:00:17 verbose #178 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:17 verbose #179 > > inl (./) a b = complex_div a b 00:00:17 verbose #180 > > 00:00:17 verbose #181 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:17 verbose #182 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:17 verbose #183 > > │ ## powc │ 00:00:17 verbose #184 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:17 verbose #185 > > 00:00:17 verbose #186 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:17 verbose #187 > > inl powc forall t. (s : complex t) (c : complex t) : complex t = 00:00:17 verbose #188 > > !\\((c, s), $'"num_complex::Complex::powc($0, $1)"') 00:00:17 verbose #189 > > 00:00:17 verbose #190 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:17 verbose #191 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:17 verbose #192 > > │ ## (.**) │ 00:00:17 verbose #193 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:17 verbose #194 > > 00:00:17 verbose #195 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:17 verbose #196 > > inl (.**) a b = powc b a 00:00:17 verbose #197 > > 00:00:17 verbose #198 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:17 verbose #199 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:17 verbose #200 > > │ ## complex_sin │ 00:00:17 verbose #201 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:17 verbose #202 > > 00:00:17 verbose #203 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:17 verbose #204 > > inl complex_sin forall t. (c : complex t) : complex t = 00:00:17 verbose #205 > > !\\(c, $'"$0.sin()"') 00:00:17 verbose #206 > > 00:00:17 verbose #207 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:17 verbose #208 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:17 verbose #209 > > │ ## conj │ 00:00:17 verbose #210 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:17 verbose #211 > > 00:00:17 verbose #212 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:17 verbose #213 > > inl conj forall t. (c : complex t) : complex t = 00:00:17 verbose #214 > > !\\(c, $'"$0.conj()"') 00:00:17 verbose #215 > > 00:00:17 verbose #216 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:17 verbose #217 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:17 verbose #218 > > │ ## zeta │ 00:00:17 verbose #219 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:17 verbose #220 > > 00:00:17 verbose #221 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:17 verbose #222 > > inl zeta log (gamma : complex f64 -> complex f64) (s : complex f64) : complex 00:00:17 verbose #223 > > f64 = 00:00:17 verbose #224 > > inl rec zeta count gamma s = 00:00:17 verbose #225 > > if log then 00:00:17 verbose #226 > > !\\((count, s), $'"println\!(\\\"zeta / count: {:?} / s: {:?}\\\", 00:00:17 verbose #227 > > $0, $1)"') 00:00:17 verbose #228 > > if re s > 1 then 00:00:17 verbose #229 > > (.^(0, 0), (am.init 10000i32 id : a i32 _)) 00:00:17 verbose #230 > > ||> am.fold fun acc n => 00:00:17 verbose #231 > > acc .+ (.^(1, 0) ./ (.^(f64 n, 0) .** s)) 00:00:17 verbose #232 > > else 00:00:17 verbose #233 > > inl gamma_term = gamma (.^(1, 0) .- s) 00:00:17 verbose #234 > > inl sin_term = .^(pi, 0) .* s ./ .^(2, 0) |> complex_sin 00:00:17 verbose #235 > > inl one_minus_s = .^(1 - re s, -(im s)) 00:00:17 verbose #236 > > inl mirror_term = 00:00:17 verbose #237 > > if re one_minus_s <= 1 00:00:17 verbose #238 > > then .^(0, 0) 00:00:17 verbose #239 > > else 00:00:17 verbose #240 > > if count <= 3 00:00:17 verbose #241 > > then zeta (count + 1) gamma one_minus_s 00:00:17 verbose #242 > > else one_minus_s 00:00:17 verbose #243 > > inl reflection_formula = 00:00:17 verbose #244 > > .^(2, 0) .* (.^(pi, 0) .** s) .* sin_term .* gamma_term .* 00:00:17 verbose #245 > > mirror_term 00:00:17 verbose #246 > > reflection_formula 00:00:17 verbose #247 > > join zeta 0i32 gamma s 00:00:18 verbose #248 > > 00:00:18 verbose #249 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:18 verbose #250 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:18 verbose #251 > > │ ## bound │ 00:00:18 verbose #252 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:18 verbose #253 > > 00:00:18 verbose #254 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:18 verbose #255 > > nominal bound t = 00:00:18 verbose #256 > > `( 00:00:18 verbose #257 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:18 verbose #258 > > Fable.Core.Emit(\"pyo3::Bound<$0>\")>]]\n#endif\ntype pyo3_Bound<'T> = class 00:00:18 verbose #259 > > end" 00:00:18 verbose #260 > > $'' : $'pyo3_Bound<`t>' 00:00:18 verbose #261 > > ) 00:00:18 verbose #262 > > 00:00:18 verbose #263 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:18 verbose #264 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:18 verbose #265 > > │ ## python │ 00:00:18 verbose #266 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:18 verbose #267 > > 00:00:18 verbose #268 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:18 verbose #269 > > nominal python = 00:00:18 verbose #270 > > `( 00:00:18 verbose #271 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:18 verbose #272 > > Fable.Core.Emit(\"pyo3::Python\")>]]\n#endif\ntype pyo3_Python = class end" 00:00:18 verbose #273 > > $'' : $'pyo3_Python' 00:00:18 verbose #274 > > ) 00:00:18 verbose #275 > > 00:00:18 verbose #276 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:18 verbose #277 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:18 verbose #278 > > │ ## pymodule │ 00:00:18 verbose #279 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:18 verbose #280 > > 00:00:18 verbose #281 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:18 verbose #282 > > nominal pymodule = 00:00:18 verbose #283 > > `( 00:00:18 verbose #284 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:18 verbose #285 > > Fable.Core.Emit(\"pyo3::types::PyModule\")>]]\n#endif\ntype pyo3_types_PyModule 00:00:18 verbose #286 > > = class end" 00:00:18 verbose #287 > > $'' : $'pyo3_types_PyModule' 00:00:18 verbose #288 > > ) 00:00:18 verbose #289 > > 00:00:18 verbose #290 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:18 verbose #291 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:18 verbose #292 > > │ ## pyany │ 00:00:18 verbose #293 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:18 verbose #294 > > 00:00:18 verbose #295 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:18 verbose #296 > > nominal pyany = 00:00:18 verbose #297 > > `( 00:00:18 verbose #298 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:18 verbose #299 > > Fable.Core.Emit(\"pyo3::PyAny\")>]]\n#endif\ntype pyo3_PyAny = class end" 00:00:18 verbose #300 > > $'' : $'pyo3_PyAny' 00:00:18 verbose #301 > > ) 00:00:18 verbose #302 > > 00:00:18 verbose #303 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:18 verbose #304 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:18 verbose #305 > > │ ## pyerr │ 00:00:18 verbose #306 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:18 verbose #307 > > 00:00:18 verbose #308 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:18 verbose #309 > > nominal pyerr = 00:00:18 verbose #310 > > `( 00:00:18 verbose #311 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:18 verbose #312 > > Fable.Core.Emit(\"pyo3::PyErr\")>]]\n#endif\ntype pyo3_PyErr = class end" 00:00:18 verbose #313 > > $'' : $'pyo3_PyErr' 00:00:18 verbose #314 > > ) 00:00:18 verbose #315 > > 00:00:18 verbose #316 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:18 verbose #317 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:18 verbose #318 > > │ ## eval │ 00:00:18 verbose #319 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:18 verbose #320 > > 00:00:18 verbose #321 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:18 verbose #322 > > inl module_from_code (py : python) (code : string) : _ (bound pymodule) _ = 00:00:18 verbose #323 > > inl py = join py 00:00:18 verbose #324 > > inl code = code |> sm'.as_str 00:00:18 verbose #325 > > !\($'"pyo3::types::PyModule::from_code_bound(!py, !code, \\"\\", \\"\\")"') 00:00:18 verbose #326 > > |> resultm.map_error' fun (x : pyerr) => x |> sm'.format' 00:00:18 verbose #327 > > 00:00:18 verbose #328 > > inl use_pyanymethods () = 00:00:18 verbose #329 > > global "Fable.Core.RustInterop.emitRustExpr () \");\nuse 00:00:18 verbose #330 > > pyo3::prelude::PyAnyMethods;\n//\"" 00:00:18 verbose #331 > > 00:00:18 verbose #332 > > inl getattr (attr : string) (module : bound pymodule) : _ (bound pyany) _ = 00:00:18 verbose #333 > > inl attr = join attr 00:00:18 verbose #334 > > inl attr = attr |> sm'.as_str 00:00:18 verbose #335 > > inl module = join module 00:00:18 verbose #336 > > use_pyanymethods () 00:00:18 verbose #337 > > !\($'"!module.getattr(!attr)"') 00:00:18 verbose #338 > > |> resultm.map_error' fun (x : pyerr) => x |> sm'.format' 00:00:18 verbose #339 > > 00:00:18 verbose #340 > > inl call forall t. (args : t) (module : bound pyany) : _ (bound pyany) _ = 00:00:18 verbose #341 > > inl args = join args 00:00:18 verbose #342 > > inl module = join module 00:00:18 verbose #343 > > !\($'"pyo3::prelude::PyAnyMethods::call(&!module, ((*!args).0, *(*!args).1), 00:00:18 verbose #344 > > None)"') 00:00:18 verbose #345 > > |> resultm.map_error' fun (x : pyerr) => x |> sm'.format' 00:00:18 verbose #346 > > 00:00:18 verbose #347 > > inl extract forall t. (result : bound pyany) : _ t _ = 00:00:18 verbose #348 > > inl result = join result 00:00:18 verbose #349 > > use_pyanymethods () 00:00:18 verbose #350 > > !\($'"!result.extract()"') 00:00:18 verbose #351 > > |> resultm.map_error' fun (x : pyerr) => x |> sm'.format' 00:00:18 verbose #352 > > 00:00:18 verbose #353 > > inl eval py code (args : pair bool (pair f64 f64)) : _ (_ f64) sm'.std_string = 00:00:18 verbose #354 > > inl code = 00:00:18 verbose #355 > > code 00:00:18 verbose #356 > > |> module_from_code py 00:00:18 verbose #357 > > |> resultm.unwrap' 00:00:18 verbose #358 > > inl fn = 00:00:18 verbose #359 > > code 00:00:18 verbose #360 > > |> getattr "fn" 00:00:18 verbose #361 > > |> resultm.unwrap' 00:00:18 verbose #362 > > 00:00:18 verbose #363 > > fn 00:00:18 verbose #364 > > |> call args 00:00:18 verbose #365 > > |> resultm.try' 00:00:18 verbose #366 > > |> extract 00:00:18 verbose #367 > > |> resultm.try' 00:00:18 verbose #368 > > |> complex 00:00:18 verbose #369 > > |> Ok 00:00:18 verbose #370 > > |> resultm.box 00:00:18 verbose #371 > > 00:00:18 verbose #372 > > inl call1_ log py s code = 00:00:18 verbose #373 > > inl code = join (a code : _ i32 _) |> sm'.concat_array_trailing "\n" 00:00:18 verbose #374 > > 00:00:18 verbose #375 > > inl s = new_pair (re s) (im s) 00:00:18 verbose #376 > > inl args = new_pair log s 00:00:18 verbose #377 > > 00:00:18 verbose #378 > > eval py code args 00:00:18 verbose #379 > > 00:00:18 verbose #380 > > inl call1_ log name py s line = 00:00:18 verbose #381 > > inl s = join s 00:00:18 verbose #382 > > join 00:00:18 verbose #383 > > ;[[ 00:00:18 verbose #384 > > $'$"import sys"' 00:00:18 verbose #385 > > $'$"import traceback"' 00:00:18 verbose #386 > > $'$"import re"' 00:00:18 verbose #387 > > $'$"count = 0"' 00:00:18 verbose #388 > > $'$"memory_address_pattern = re.compile(r\' at 0x[[0-9a-fA-F]]+\')"' 00:00:18 verbose #389 > > $'$"def trace_calls(frame, event, arg):"' 00:00:18 verbose #390 > > $'$" global count"' 00:00:18 verbose #391 > > $'$" count += 1"' 00:00:18 verbose #392 > > $'$" if count < 200:"' 00:00:18 verbose #393 > > $'$" try:"' 00:00:18 verbose #394 > > $'$" args = {{ k: v for k, v in frame.f_locals.items() if 00:00:18 verbose #395 > > frame.f_code.co_name \!= \'make_mpc\' and k not in [[\'ctx\']] and not 00:00:18 verbose #396 > > callable(v) }}"' 00:00:18 verbose #397 > > $'$" args_str = \', \'.join([[ 00:00:18 verbose #398 > > f\\\"{{k}}={{re.sub(memory_address_pattern, \' at 0x<?>\', repr(v))}}\\\" for k, 00:00:18 verbose #399 > > v in args.items() ]])"' 00:00:18 verbose #400 > > $'$" print(f\\\"{{event}}({!name}) / f_code.co_name: 00:00:18 verbose #401 > > {{frame.f_code.co_name}} / f_locals: {{args_str}} / f_lineno: {{frame.f_lineno}} 00:00:18 verbose #402 > > / f_code.co_filename: 00:00:18 verbose #403 > > {{frame.f_code.co_filename.split(\'site-packages\')[[-1]]}} / f_back.f_lineno: 00:00:18 verbose #404 > > {{ \'\' if frame.f_back is None else frame.f_back.f_lineno }} 00:00:18 verbose #405 > > f_back.f_code.co_filename: {{ \'\' if frame.f_back is None else 00:00:18 verbose #406 > > frame.f_back.f_code.co_filename.split(\'site-packages\')[[-1]] }} / arg: 00:00:18 verbose #407 > > {{re.sub(memory_address_pattern, \' at 0x<?>\', repr(arg))}}\\\", flush=True)"' 00:00:18 verbose #408 > > $'$" except ValueError as e:"' 00:00:18 verbose #409 > > $'$" print(f\'{!name} / e: {{e}}\', flush=True)"' 00:00:18 verbose #410 > > $'$" return trace_calls"' 00:00:18 verbose #411 > > $'$"import mpmath"' 00:00:18 verbose #412 > > $'$"def fn(log, s):"' 00:00:18 verbose #413 > > $'$" global count"' 00:00:18 verbose #414 > > $'$" if log:"' 00:00:18 verbose #415 > > $'$" print(f\'{!name} / s: {{s}} / count: {{count}}\', 00:00:18 verbose #416 > > flush=True)"' 00:00:18 verbose #417 > > $'$" s = complex(*s)"' 00:00:18 verbose #418 > > $'$" try:"' 00:00:18 verbose #419 > > $'$" if log: sys.settrace(trace_calls)"' 00:00:18 verbose #420 > > line 00:00:18 verbose #421 > > $'$" if log:"' 00:00:18 verbose #422 > > $'$" sys.settrace(None)"' 00:00:18 verbose #423 > > $'$" print(f\'{!name} / result: {{s}} / count: 00:00:18 verbose #424 > > {{count}}\', flush=True)"' 00:00:18 verbose #425 > > $'$" except ValueError as e:"' 00:00:18 verbose #426 > > $'$" if s.real == 1:"' 00:00:18 verbose #427 > > $'$" s = complex(float(\'inf\'), 0)"' 00:00:18 verbose #428 > > $'$" return (s.real, s.imag)"' 00:00:18 verbose #429 > > ]] 00:00:18 verbose #430 > > |> call1_ log py s 00:00:18 verbose #431 > > 00:00:18 verbose #432 > > inl gamma_ log py s = 00:00:18 verbose #433 > > call1_ log "gamma_" py s $'$" s = mpmath.gamma(s)"' 00:00:18 verbose #434 > > 00:00:18 verbose #435 > > inl zeta_ log py s = 00:00:18 verbose #436 > > call1_ log "zeta_" py s $'$" s = mpmath.zeta(s)"' 00:00:18 verbose #437 > > 00:00:18 verbose #438 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:18 verbose #439 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:18 verbose #440 > > │ ## run_test │ 00:00:18 verbose #441 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:18 verbose #442 > > 00:00:18 verbose #443 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:18 verbose #444 > > inl run_test log closure_fix (fn : (complex f64 -> complex f64) * (complex f64 00:00:18 verbose #445 > > -> complex f64) -> ()) = 00:00:18 verbose #446 > > inl fn_ (py : python) : resultm.result' () pyerr = 00:00:18 verbose #447 > > inl nan () = 00:00:18 verbose #448 > > !\($'"f64::NAN"') 00:00:18 verbose #449 > > inl gamma__ = fun (s : complex f64) => 00:00:18 verbose #450 > > inl result = gamma_ log py s 00:00:18 verbose #451 > > if log then 00:00:18 verbose #452 > > inl s = join s 00:00:18 verbose #453 > > !\($'"println\!(\\\"gamma__ / s: {:?} / result: {:?}\\\", !s, 00:00:18 verbose #454 > > !result)"') 00:00:18 verbose #455 > > result |> resultm.ok' |> optionm'.unbox |> optionm'.default_value 00:00:18 verbose #456 > > .^(nan (), nan ()) 00:00:18 verbose #457 > > inl zeta__ = fun (s : complex f64) => 00:00:18 verbose #458 > > inl result = zeta_ log py s 00:00:18 verbose #459 > > 00:00:18 verbose #460 > > inl z = zeta true gamma__ s 00:00:18 verbose #461 > > 00:00:18 verbose #462 > > if log then 00:00:18 verbose #463 > > inl s = join s 00:00:18 verbose #464 > > !\($'"println\!(\\\"zeta__ / s: {:?} / result: {:?} / z: 00:00:18 verbose #465 > > {:?}\\\", !s, !result, !z)"') 00:00:18 verbose #466 > > 00:00:18 verbose #467 > > // re result - re x |> abs 00:00:18 verbose #468 > > // |> _assert_lt 0.001 00:00:18 verbose #469 > > 00:00:18 verbose #470 > > // im result - im x |> abs 00:00:18 verbose #471 > > // |> _assert_lt 0.001 00:00:18 verbose #472 > > 00:00:18 verbose #473 > > result |> resultm.ok' |> optionm'.unbox |> optionm'.default_value 00:00:18 verbose #474 > > .^(nan (), nan ()) 00:00:18 verbose #475 > > join fn (zeta__, gamma__) 00:00:18 verbose #476 > > 00:00:18 verbose #477 > > Ok () 00:00:18 verbose #478 > > |> resultm.box 00:00:18 verbose #479 > > 00:00:18 verbose #480 > > join 00:00:18 verbose #481 > > !\($'"pyo3::prepare_freethreaded_python()"') : () 00:00:18 verbose #482 > > 00:00:18 verbose #483 > > !\($'"let __run_test = pyo3::Python::with_gil(|py| -> pyo3::PyResult<()> 00:00:18 verbose #484 > > { //"') 00:00:18 verbose #485 > > 00:00:18 verbose #486 > > let x' = fn_ (!\($'"py"') : python) 00:00:18 verbose #487 > > inl x' = join x' 00:00:18 verbose #488 > > 00:00:18 verbose #489 > > inl closure_fix = 2u8, 1u8 00:00:18 verbose #490 > > x' |> rust.fix_closure closure_fix 00:00:18 verbose #491 > > 00:00:18 verbose #492 > > (!\($'"__run_test"') : _ () pyerr) 00:00:18 verbose #493 > > |> resultm.unwrap' 00:00:18 verbose #494 > > 00:00:18 verbose #495 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:18 verbose #496 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:18 verbose #497 > > │ ## test_zeta_at_known_values_ │ 00:00:18 verbose #498 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:18 verbose #499 > > 00:00:18 verbose #500 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:18 verbose #501 > > inl test_zeta_at_known_values_ log = run_test log (3u8, 2u8) fun zeta, gamma => 00:00:18 verbose #502 > > ;[[ 00:00:18 verbose #503 > > .^(2, 0), pi ** 2 / 6 00:00:18 verbose #504 > > .^(-1, 0), -1 / 12 00:00:18 verbose #505 > > ]] 00:00:18 verbose #506 > > |> fun x => a x : _ i32 _ 00:00:18 verbose #507 > > |> am.iter fun s, e => 00:00:18 verbose #508 > > inl result = zeta s 00:00:18 verbose #509 > > 00:00:18 verbose #510 > > result |> im |> _assert_eq 0 00:00:18 verbose #511 > > re result - e |> abs |> _assert_lt 0.0001 00:00:18 verbose #512 > > 00:00:18 verbose #513 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:18 verbose #514 > > //// test 00:00:18 verbose #515 > > ///! rust -d num-complex pyo3 00:00:18 verbose #516 > > 00:00:18 verbose #517 > > test_zeta_at_known_values_ true 00:00:36 verbose #518 > > 00:00:36 verbose #519 > > ╭─[ 17.38s - return value ]────────────────────────────────────────────────────╮ 00:00:36 verbose #520 > > │ zeta_ / s: (2.0, 0.0) / count: 0 │ 00:00:36 verbose #521 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:00:36 verbose #522 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: │ 00:00:36 verbose #523 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:36 verbose #524 > > │ / arg: None │ 00:00:36 verbose #525 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:00:36 verbose #526 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: │ 00:00:36 verbose #527 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:36 verbose #528 > > │ / arg: None │ 00:00:36 verbose #529 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:00:36 verbose #530 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: │ 00:00:36 verbose #531 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:36 verbose #532 > > │ / arg: None │ 00:00:36 verbose #533 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:00:36 verbose #534 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: │ 00:00:36 verbose #535 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:36 verbose #536 > > │ / arg: None │ 00:00:36 verbose #537 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:00:36 verbose #538 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: │ 00:00:36 verbose #539 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:36 verbose #540 > > │ / arg: None │ 00:00:36 verbose #541 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), kwargs={}, name='zeta' │ 00:00:36 verbose #542 > > │ / f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py / │ 00:00:36 verbose #543 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py │ 00:00:36 verbose #544 > > │ / arg: None │ 00:00:36 verbose #545 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), kwargs={}, name='zeta' │ 00:00:36 verbose #546 > > │ / f_linen...me: make_mpc / f_locals: / f_lineno: 603 / f_code.co_filename: │ 00:00:36 verbose #547 > > │ /mpmath/ctx_mp_python.py / f_back.f_lineno: 1007 / │ 00:00:36 verbose #548 > > │ f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None │ 00:00:36 verbose #549 > > │ line(gamma_) / f_code.co_name: make_mpc / f_locals: / f_lineno: 604 / │ 00:00:36 verbose #550 > > │ f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 1007 / │ 00:00:36 verbose #551 > > │ f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None │ 00:00:36 verbose #552 > > │ line(gamma_) / f_code.co_name: make_mpc / f_locals: / f_lineno: 605 / │ 00:00:36 verbose #553 > > │ f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 1007 / │ 00:00:36 verbose #554 > > │ f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None │ 00:00:36 verbose #555 > > │ return(gamma_) / f_code.co_name: make_mpc / f_locals: / f_lineno: 605 / │ 00:00:36 verbose #556 > > │ f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 1007 / │ 00:00:36 verbose #557 > > │ f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: mpc(real='1.0', │ 00:00:36 verbose #558 > > │ imag='0.0') │ 00:00:36 verbose #559 > > │ return(gamma_) / f_code.co_name: f / f_locals: x=mpc(real='2.0', │ 00:00:36 verbose #560 > > │ imag='0.0'), kwargs={}, name='gamma', prec=53, rounding='n' / f_lineno: 1007 │ 00:00:36 verbose #561 > > │ / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 25 / │ 00:00:36 verbose #562 > > │ f_back.f_code.co_filename: / arg: mpc(real='1.0', imag='0.0') │ 00:00:36 verbose #563 > > │ gamma_ / result: (1.0 + 0.0j) / count: 140 │ 00:00:36 verbose #564 > > │ gamma__ / s: Complex { re: 2.0, im: 0.0 } / result: Ok(Complex { re: 1.0, │ 00:00:36 verbose #565 > > │ im: 0.0 }) │ 00:00:36 verbose #566 > > │ zeta / count: 1 / s: Complex { re: 2.0, im: -0.0 } │ 00:00:36 verbose #567 > > │ zeta__ / s: Complex { re: -1.0, im: 0.0 } / result: Ok(Complex { re: │ 00:00:36 verbose #568 > > │ -0.08333333333333333, im: 0.0 }) / z: Complex { re: NaN, im: NaN } │ 00:00:36 verbose #569 > > │ __assert_eq / actual: 0.0 / expected: 0.0 │ 00:00:36 verbose #570 > > │ __assert_lt / actual: 0.0 / expected: 0.0001 │ 00:00:36 verbose #571 > > │ │ 00:00:36 verbose #572 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:36 verbose #573 > > 00:00:36 verbose #574 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:36 verbose #575 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:36 verbose #576 > > │ ## test_zeta_at_2_minus2 │ 00:00:36 verbose #577 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:36 verbose #578 > > 00:00:36 verbose #579 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:36 verbose #580 > > inl test_zeta_at_2_minus2 log = run_test log (6u8, 5u8) fun zeta, gamma => 00:00:36 verbose #581 > > inl s = .^(2, -2) 00:00:36 verbose #582 > > inl result = zeta s 00:00:36 verbose #583 > > 00:00:36 verbose #584 > > (re result - 0.8673) |> abs |> _assert_lt 0.001 00:00:36 verbose #585 > > (im result - 0.2750) |> abs |> _assert_lt 0.001 00:00:36 verbose #586 > > 00:00:36 verbose #587 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:36 verbose #588 > > //// test 00:00:36 verbose #589 > > ///! rust -d num-complex pyo3 00:00:36 verbose #590 > > 00:00:36 verbose #591 > > test_zeta_at_2_minus2 true 00:00:44 verbose #592 > > 00:00:44 verbose #593 > > ╭─[ 8.34s - return value ]─────────────────────────────────────────────────────╮ 00:00:44 verbose #594 > > │ zeta_ / s: (2.0, -2.0) / count: 0 │ 00:00:44 verbose #595 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, derivative=0, │ 00:00:44 verbose #596 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: │ 00:00:44 verbose #597 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:44 verbose #598 > > │ / arg: None │ 00:00:44 verbose #599 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, derivative=0, │ 00:00:44 verbose #600 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: │ 00:00:44 verbose #601 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:44 verbose #602 > > │ / arg: None │ 00:00:44 verbose #603 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, derivative=0, │ 00:00:44 verbose #604 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: │ 00:00:44 verbose #605 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:44 verbose #606 > > │ / arg: None │ 00:00:44 verbose #607 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, derivative=0, │ 00:00:44 verbose #608 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: │ 00:00:44 verbose #609 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:44 verbose #610 > > │ / arg: None │ 00:00:44 verbose #611 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, derivative=0, │ 00:00:44 verbose #612 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: │ 00:00:44 verbose #613 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:44 verbose #614 > > │ / arg: None │ 00:00:44 verbose #615 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2-2j), kwargs={}, name='zeta' │ 00:00:44 verbose #616 > > │ / f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py / │ 00:00:44 verbose #617 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py │ 00:00:44 verbose #618 > > │ / arg: None │ 00:00:44 verbose #619 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2-2j), kwargs={}, name='zeta' │ 00:00:44 verbose #620 > > │ / f_line.../ arg: None │ 00:00:44 verbose #621 > > │ call(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2 / f_lineno: 91 │ 00:00:44 verbose #622 > > │ / f_code.co_filename: /mpmath/libmp/libintmath.py / f_back.f_lineno: 778 / │ 00:00:44 verbose #623 > > │ f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg: None │ 00:00:44 verbose #624 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2 / f_lineno: 93 │ 00:00:44 verbose #625 > > │ / f_code.co_filename: /mpmath/libmp/libintmath.py / f_back.f_lineno: 778 / │ 00:00:44 verbose #626 > > │ f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg: None │ 00:00:44 verbose #627 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2, bc=2 / │ 00:00:44 verbose #628 > > │ f_lineno: 94 / f_code.co_filename: /mpmath/libmp/libintmath.py / │ 00:00:44 verbose #629 > > │ f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / │ 00:00:44 verbose #630 > > │ arg: None │ 00:00:44 verbose #631 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2, bc=2 / │ 00:00:44 verbose #632 > > │ f_lineno: 95 / f_code.co_filename: /mpmath/libmp/libintmath.py / │ 00:00:44 verbose #633 > > │ f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / │ 00:00:44 verbose #634 > > │ arg: None │ 00:00:44 verbose #635 > > │ return(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2, bc=2 / │ 00:00:44 verbose #636 > > │ f_lineno: 95 / f_code.co_filename: /mpmath/libmp/libintmath.py / │ 00:00:44 verbose #637 > > │ f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / │ 00:00:44 verbose #638 > > │ arg: 2 │ 00:00:44 verbose #639 > > │ zeta_ / result: (0.867351829635993 + 0.275127238807858j) / count: 1812 │ 00:00:44 verbose #640 > > │ zeta / count: 0 / s: Complex { re: 2.0, im: -2.0 } │ 00:00:44 verbose #641 > > │ zeta__ / s: Complex { re: 2.0, im: -2.0 } / result: Ok(Complex { re: │ 00:00:44 verbose #642 > > │ 0.8673518296359931, im: 0.27512723880785767 }) / z: Complex { re: NaN, im: │ 00:00:44 verbose #643 > > │ NaN } │ 00:00:44 verbose #644 > > │ __assert_lt / actual: 5.182963599315027e-5 / expected: 0.001 │ 00:00:44 verbose #645 > > │ __assert_lt / actual: 0.00012723880785764363 / expected: 0.001 │ 00:00:44 verbose #646 > > │ │ 00:00:44 verbose #647 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:44 verbose #648 > > 00:00:44 verbose #649 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:44 verbose #650 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:44 verbose #651 > > │ ## test_trivial_zero_at_negative_even___ │ 00:00:44 verbose #652 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:44 verbose #653 > > 00:00:44 verbose #654 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:44 verbose #655 > > inl test_trivial_zero_at_negative_even___ log = run_test log (2u8, 1u8) fun 00:00:44 verbose #656 > > zeta, gamma => 00:00:44 verbose #657 > > (join listm'.init_series -2f64 -40 -2) 00:00:44 verbose #658 > > |> listm.iter fun n => 00:00:44 verbose #659 > > inl s = .^(n, 0) 00:00:44 verbose #660 > > inl result = zeta s 00:00:44 verbose #661 > > 00:00:44 verbose #662 > > result |> re |> _assert_eq 0 00:00:44 verbose #663 > > result |> im |> _assert_eq 0 00:00:44 verbose #664 > > 00:00:44 verbose #665 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:44 verbose #666 > > //// test 00:00:44 verbose #667 > > ///! rust -d num-complex pyo3 00:00:44 verbose #668 > > 00:00:44 verbose #669 > > test_trivial_zero_at_negative_even___ true 00:00:53 verbose #670 > > 00:00:53 verbose #671 > > ╭─[ 9.01s - return value ]─────────────────────────────────────────────────────╮ 00:00:53 verbose #672 > > │ zeta_ / s: (-2.0, 0.0) / count: 0 │ 00:00:53 verbose #673 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), a=1, derivative=0, │ 00:00:53 verbose #674 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: │ 00:00:53 verbose #675 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:53 verbose #676 > > │ / arg: None │ 00:00:53 verbose #677 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), a=1, derivative=0, │ 00:00:53 verbose #678 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: │ 00:00:53 verbose #679 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:53 verbose #680 > > │ / arg: None │ 00:00:53 verbose #681 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), a=1, derivative=0, │ 00:00:53 verbose #682 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: │ 00:00:53 verbose #683 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:53 verbose #684 > > │ / arg: None │ 00:00:53 verbose #685 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), a=1, derivative=0, │ 00:00:53 verbose #686 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: │ 00:00:53 verbose #687 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:53 verbose #688 > > │ / arg: None │ 00:00:53 verbose #689 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), a=1, derivative=0, │ 00:00:53 verbose #690 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: │ 00:00:53 verbose #691 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:00:53 verbose #692 > > │ / arg: None │ 00:00:53 verbose #693 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(-2+0j), kwargs={}, │ 00:00:53 verbose #694 > > │ name='zeta' / f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py / │ 00:00:53 verbose #695 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py │ 00:00:53 verbose #696 > > │ / arg: None │ 00:00:53 verbose #697 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(-2+0j), kwargs={}, │ 00:00:53 verbose #698 > > │ name='zeta' /...lename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 1007 / │ 00:00:53 verbose #699 > > │ f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None │ 00:00:53 verbose #700 > > │ line(gamma_) / f_code.co_name: make_mpc / f_locals: / f_lineno: 604 / │ 00:00:53 verbose #701 > > │ f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 1007 / │ 00:00:53 verbose #702 > > │ f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None │ 00:00:53 verbose #703 > > │ line(gamma_) / f_code.co_name: make_mpc / f_locals: / f_lineno: 605 / │ 00:00:53 verbose #704 > > │ f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 1007 / │ 00:00:53 verbose #705 > > │ f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None │ 00:00:53 verbose #706 > > │ return(gamma_) / f_code.co_name: make_mpc / f_locals: / f_lineno: 605 / │ 00:00:53 verbose #707 > > │ f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 1007 / │ 00:00:53 verbose #708 > > │ f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: │ 00:00:53 verbose #709 > > │ mpc(real='8.1591528324789768e+47', imag='0.0') │ 00:00:53 verbose #710 > > │ return(gamma_) / f_code.co_name: f / f_locals: x=mpc(real='41.0', │ 00:00:53 verbose #711 > > │ imag='0.0'), kwargs={}, name='gamma', prec=53, rounding='n' / f_lineno: 1007 │ 00:00:53 verbose #712 > > │ / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 25 / │ 00:00:53 verbose #713 > > │ f_back.f_code.co_filename: / arg: mpc(real='8.1591528324789768e+47', │ 00:00:53 verbose #714 > > │ imag='0.0') │ 00:00:53 verbose #715 > > │ gamma_ / result: (8.15915283247898e+47 + 0.0j) / count: 149 │ 00:00:53 verbose #716 > > │ gamma__ / s: Complex { re: 41.0, im: 0.0 } / result: Ok(Complex { re: │ 00:00:53 verbose #717 > > │ 8.159152832478977e47, im: 0.0 }) │ 00:00:53 verbose #718 > > │ zeta / count: 1 / s: Complex { re: 41.0, im: -0.0 } │ 00:00:53 verbose #719 > > │ zeta__ / s: Complex { re: -40.0, im: 0.0 } / result: Ok(Complex { re: 0.0, │ 00:00:53 verbose #720 > > │ im: 0.0 }) / z: Complex { re: NaN, im: NaN } │ 00:00:53 verbose #721 > > │ __assert_eq / actual: 0.0 / expected: 0.0 │ 00:00:53 verbose #722 > > │ __assert_eq / actual: 0.0 / expected: 0.0 │ 00:00:53 verbose #723 > > │ │ 00:00:53 verbose #724 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:53 verbose #725 > > 00:00:53 verbose #726 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:53 verbose #727 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:53 verbose #728 > > │ ## test_non_trivial_zero___ │ 00:00:53 verbose #729 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:53 verbose #730 > > 00:00:53 verbose #731 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:53 verbose #732 > > inl test_non_trivial_zero___ log = run_test log (3u8, 2u8) fun zeta, gamma => 00:00:53 verbose #733 > > ;[[ 00:00:53 verbose #734 > > .^(0.5, 14.134725) 00:00:53 verbose #735 > > .^(0.5, 21.022040) 00:00:53 verbose #736 > > .^(0.5, 25.010857) 00:00:53 verbose #737 > > .^(0.5, 30.424876) 00:00:53 verbose #738 > > .^(0.5, 32.935062) 00:00:53 verbose #739 > > .^(0.5, 37.586178) 00:00:53 verbose #740 > > ]] 00:00:53 verbose #741 > > |> fun x => a x : _ i32 _ 00:00:53 verbose #742 > > |> am.iter fun x => 00:00:53 verbose #743 > > inl result = zeta x 00:00:53 verbose #744 > > result |> re |> abs |> _assert_lt 0.0001 00:00:53 verbose #745 > > result |> im |> abs |> _assert_lt 0.0001 00:00:53 verbose #746 > > 00:00:53 verbose #747 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:53 verbose #748 > > //// test 00:00:53 verbose #749 > > ///! rust -d num-complex pyo3 00:00:53 verbose #750 > > 00:00:53 verbose #751 > > test_non_trivial_zero___ true 00:01:02 verbose #752 > > 00:01:02 verbose #753 > > ╭─[ 8.51s - return value ]─────────────────────────────────────────────────────╮ 00:01:02 verbose #754 > > │ zeta_ / s: (0.5, 14.134725) / count: 0 │ 00:01:02 verbose #755 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1, │ 00:01:02 verbose #756 > > │ derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: │ 00:01:02 verbose #757 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:02 verbose #758 > > │ / arg: None │ 00:01:02 verbose #759 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1, │ 00:01:02 verbose #760 > > │ derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: │ 00:01:02 verbose #761 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:02 verbose #762 > > │ / arg: None │ 00:01:02 verbose #763 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1, │ 00:01:02 verbose #764 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / │ 00:01:02 verbose #765 > > │ f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / │ 00:01:02 verbose #766 > > │ f_back.f_code.co_filename: / arg: None │ 00:01:02 verbose #767 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1, │ 00:01:02 verbose #768 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / │ 00:01:02 verbose #769 > > │ f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / │ 00:01:02 verbose #770 > > │ f_back.f_code.co_filename: / arg: None │ 00:01:02 verbose #771 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1, │ 00:01:02 verbose #772 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / │ 00:01:02 verbose #773 > > │ f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / │ 00:01:02 verbose #774 > > │ f_back.f_code.co_filename: / arg: None │ 00:01:02 verbose #775 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(0.5+14.134725j), kwargs={}, │ 00:01:02 verbose #776 > > │ name='zeta' / f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py / │ 00:01:02 verbose #777 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py │ 00:01:02 verbose #778 > > │ / arg: None │ 00:01:02 verbose #779 > > │ line(zeta_) / f_code... arg: None │ 00:01:02 verbose #780 > > │ line(gamma_) / f_code.co_name: complex_stirling_series / f_locals: │ 00:01:02 verbose #781 > > │ x=1208925819614629174706176, y=-90877802089662679288381440, prec=81, │ 00:01:02 verbose #782 > > │ _m=3416353708500640443578529333, tre=855591523614410863719, │ 00:01:02 verbose #783 > > │ tim=64316830603724894628746, ure=-1710577520534459139249, │ 00:01:02 verbose #784 > > │ uim=45518868236127668552, sre=1013002518538853602038572, │ 00:01:02 verbose #785 > > │ sim=90883161825546323029600502 / f_lineno: 1637 / f_code.co_filename: │ 00:01:02 verbose #786 > > │ /mpmath/libmp/gammazeta.py / f_back.f_lineno: 2050 / │ 00:01:02 verbose #787 > > │ f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / arg: None │ 00:01:02 verbose #788 > > │ line(gamma_) / f_code.co_name: complex_stirling_series / f_locals: │ 00:01:02 verbose #789 > > │ x=1208925819614629174706176, y=-90877802089662679288381440, prec=81, │ 00:01:02 verbose #790 > > │ _m=3416353708500640443578529333, tre=-1816151534455075068, │ 00:01:02 verbose #791 > > │ tim=-45486653225747820096, ure=-1710577520534459139249, │ 00:01:02 verbose #792 > > │ uim=45518868236127668552, sre=1013002518538853602038572, │ 00:01:02 verbose #793 > > │ sim=90883161825546323029600502 / f_lineno: 1638 / f_code.co_filename: │ 00:01:02 verbose #794 > > │ /mpmath/libmp/gammazeta.py / f_back.f_lineno: 2050 / │ 00:01:02 verbose #795 > > │ f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / arg: None │ 00:01:02 verbose #796 > > │ gamma_ / result: (-1.32798420042152e-26 + 5.5751975252688e-26j) / count: 309 │ 00:01:02 verbose #797 > > │ gamma__ / s: Complex { re: 0.5, im: -37.586178 } / result: Ok(Complex { re: │ 00:01:02 verbose #798 > > │ -1.3279842004215153e-26, im: 5.575197525268802e-26 }) │ 00:01:02 verbose #799 > > │ zeta__ / s: Complex { re: 0.5, im: 37.586178 } / result: Ok(Complex { re: │ 00:01:02 verbose #800 > > │ -8.910186507947958e-8, im: -2.943780446402868e-7 }) / z: Complex { re: -0.0, │ 00:01:02 verbose #801 > > │ im: 0.0 } │ 00:01:02 verbose #802 > > │ __assert_lt / actual: 8.910186507947958e-8 / expected: 0.0001 │ 00:01:02 verbose #803 > > │ __assert_lt / actual: 2.943780446402868e-7 / expected: 0.0001 │ 00:01:02 verbose #804 > > │ │ 00:01:02 verbose #805 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:02 verbose #806 > > 00:01:02 verbose #807 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:02 verbose #808 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:02 verbose #809 > > │ ## test_real_part_greater_than_one___ │ 00:01:02 verbose #810 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:02 verbose #811 > > 00:01:02 verbose #812 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:02 verbose #813 > > inl test_real_part_greater_than_one___ log = run_test log (3u8, 2u8) fun zeta, 00:01:02 verbose #814 > > gamma => 00:01:02 verbose #815 > > inl points = ;[[ 2; 3; 4; 5; 10; 20; 50 ]] 00:01:02 verbose #816 > > (a points : _ i32 _) 00:01:02 verbose #817 > > |> am.iter fun point => 00:01:02 verbose #818 > > inl s = .^(point, 0) 00:01:02 verbose #819 > > inl result = zeta s 00:01:02 verbose #820 > > result |> re |> _assert_gt 0 00:01:02 verbose #821 > > result |> im |> _assert_eq 0 00:01:02 verbose #822 > > 00:01:02 verbose #823 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:02 verbose #824 > > //// test 00:01:02 verbose #825 > > ///! rust -d num-complex pyo3 00:01:02 verbose #826 > > 00:01:02 verbose #827 > > test_real_part_greater_than_one___ true 00:01:10 verbose #828 > > 00:01:10 verbose #829 > > ╭─[ 8.53s - return value ]─────────────────────────────────────────────────────╮ 00:01:10 verbose #830 > > │ zeta_ / s: (2.0, 0.0) / count: 0 │ 00:01:10 verbose #831 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:01:10 verbose #832 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: │ 00:01:10 verbose #833 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:10 verbose #834 > > │ / arg: None │ 00:01:10 verbose #835 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:01:10 verbose #836 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: │ 00:01:10 verbose #837 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:10 verbose #838 > > │ / arg: None │ 00:01:10 verbose #839 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:01:10 verbose #840 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: │ 00:01:10 verbose #841 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:10 verbose #842 > > │ / arg: None │ 00:01:10 verbose #843 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:01:10 verbose #844 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: │ 00:01:10 verbose #845 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:10 verbose #846 > > │ / arg: None │ 00:01:10 verbose #847 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:01:10 verbose #848 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: │ 00:01:10 verbose #849 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:10 verbose #850 > > │ / arg: None │ 00:01:10 verbose #851 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), kwargs={}, name='zeta' │ 00:01:10 verbose #852 > > │ / f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py / │ 00:01:10 verbose #853 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py │ 00:01:10 verbose #854 > > │ / arg: None │ 00:01:10 verbose #855 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), kwargs={}, name='zeta' │ 00:01:10 verbose #856 > > │ / f_linen...f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: │ 00:01:10 verbose #857 > > │ 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None │ 00:01:10 verbose #858 > > │ line(zeta_) / f_code.co_name: make_mpc / f_locals: / f_lineno: 605 / │ 00:01:10 verbose #859 > > │ f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 1007 / │ 00:01:10 verbose #860 > > │ f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None │ 00:01:10 verbose #861 > > │ return(zeta_) / f_code.co_name: make_mpc / f_locals: / f_lineno: 605 / │ 00:01:10 verbose #862 > > │ f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 1007 / │ 00:01:10 verbose #863 > > │ f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: │ 00:01:10 verbose #864 > > │ mpc(real='1.0000000000000009', imag='0.0') │ 00:01:10 verbose #865 > > │ return(zeta_) / f_code.co_name: f / f_locals: x=mpc(real='50.0', │ 00:01:10 verbose #866 > > │ imag='0.0'), kwargs={}, name='zeta', prec=53, rounding='n' / f_lineno: 1007 │ 00:01:10 verbose #867 > > │ / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / │ 00:01:10 verbose #868 > > │ f_back.f_code.co_filename: /mpmath/functions/zeta.py / arg: │ 00:01:10 verbose #869 > > │ mpc(real='1.0000000000000009', imag='0.0') │ 00:01:10 verbose #870 > > │ return(zeta_) / f_code.co_name: zeta / f_locals: s=(50+0j), a=1, │ 00:01:10 verbose #871 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / │ 00:01:10 verbose #872 > > │ f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / │ 00:01:10 verbose #873 > > │ f_back.f_code.co_filename: / arg: mpc(real='1.0000000000000009', │ 00:01:10 verbose #874 > > │ imag='0.0') │ 00:01:10 verbose #875 > > │ zeta_ / result: (1.0 + 0.0j) / count: 181 │ 00:01:10 verbose #876 > > │ zeta / count: 0 / s: Complex { re: 50.0, im: 0.0 } │ 00:01:10 verbose #877 > > │ zeta__ / s: Complex { re: 50.0, im: 0.0 } / result: Ok(Complex { re: │ 00:01:10 verbose #878 > > │ 1.0000000000000009, im: 0.0 }) / z: Complex { re: NaN, im: NaN } │ 00:01:10 verbose #879 > > │ __assert_gt / actual: 1.0000000000000009 / expected: 0.0 │ 00:01:10 verbose #880 > > │ __assert_eq / actual: 0.0 / expected: 0.0 │ 00:01:10 verbose #881 > > │ │ 00:01:10 verbose #882 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:10 verbose #883 > > 00:01:10 verbose #884 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:10 verbose #885 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:10 verbose #886 > > │ ## test_zeta_at_1___ │ 00:01:10 verbose #887 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:10 verbose #888 > > 00:01:10 verbose #889 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:10 verbose #890 > > inl test_zeta_at_1___ log = run_test log (6u8, 5u8) fun zeta, gamma => 00:01:10 verbose #891 > > inl s = .^(1, 0) 00:01:10 verbose #892 > > inl result = zeta s 00:01:10 verbose #893 > > result |> re |> _assert_eq limit.max 00:01:10 verbose #894 > > result |> im |> _assert_eq 0 00:01:10 verbose #895 > > 00:01:10 verbose #896 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:10 verbose #897 > > //// test 00:01:10 verbose #898 > > ///! rust -d num-complex pyo3 00:01:10 verbose #899 > > 00:01:10 verbose #900 > > test_zeta_at_1___ true 00:01:19 verbose #901 > > 00:01:19 verbose #902 > > ╭─[ 8.37s - return value ]─────────────────────────────────────────────────────╮ 00:01:19 verbose #903 > > │ zeta_ / s: (1.0, 0.0) / count: 0 │ 00:01:19 verbose #904 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, derivative=0, │ 00:01:19 verbose #905 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: │ 00:01:19 verbose #906 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:19 verbose #907 > > │ / arg: None │ 00:01:19 verbose #908 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, derivative=0, │ 00:01:19 verbose #909 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: │ 00:01:19 verbose #910 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:19 verbose #911 > > │ / arg: None │ 00:01:19 verbose #912 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, derivative=0, │ 00:01:19 verbose #913 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: │ 00:01:19 verbose #914 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:19 verbose #915 > > │ / arg: None │ 00:01:19 verbose #916 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, derivative=0, │ 00:01:19 verbose #917 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: │ 00:01:19 verbose #918 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:19 verbose #919 > > │ / arg: None │ 00:01:19 verbose #920 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, derivative=0, │ 00:01:19 verbose #921 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: │ 00:01:19 verbose #922 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:19 verbose #923 > > │ / arg: None │ 00:01:19 verbose #924 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(1+0j), kwargs={}, name='zeta' │ 00:01:19 verbose #925 > > │ / f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py / │ 00:01:19 verbose #926 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py │ 00:01:19 verbose #927 > > │ / arg: None │ 00:01:19 verbose #928 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(1+0j), kwargs={}, name='zeta' │ 00:01:19 verbose #929 > > │ / f_linen...back object at 0x<?>>) │ 00:01:19 verbose #930 > > │ return(gamma_) / f_code.co_name: f / f_locals: x=mpc(real='0.0', │ 00:01:19 verbose #931 > > │ imag='0.0'), kwargs={}, name='gamma', prec=53, rounding='n' / f_lineno: 1007 │ 00:01:19 verbose #932 > > │ / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 25 / │ 00:01:19 verbose #933 > > │ f_back.f_code.co_filename: / arg: None │ 00:01:19 verbose #934 > > │ exception(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j / │ 00:01:19 verbose #935 > > │ f_lineno: 25 / f_code.co_filename: / f_back.f_lineno: / │ 00:01:19 verbose #936 > > │ f_back.f_code.co_filename: / arg: (<class 'ValueError'>, ValueError('gamma │ 00:01:19 verbose #937 > > │ function pole'), <traceback object at 0x<?>>) │ 00:01:19 verbose #938 > > │ line(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j / f_lineno: 29 │ 00:01:19 verbose #939 > > │ / f_code.co_filename: / f_back.f_lineno: / f_back.f_code.co_filename: / │ 00:01:19 verbose #940 > > │ arg: None │ 00:01:19 verbose #941 > > │ line(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j, │ 00:01:19 verbose #942 > > │ e=ValueError('gamma function pole') / f_lineno: 30 / f_code.co_filename: / │ 00:01:19 verbose #943 > > │ f_back.f_lineno: / f_back.f_code.co_filename: / arg: None │ 00:01:19 verbose #944 > > │ line(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j / f_lineno: 32 │ 00:01:19 verbose #945 > > │ / f_code.co_filename: / f_back.f_lineno: / f_back.f_code.co_filename: / │ 00:01:19 verbose #946 > > │ arg: None │ 00:01:19 verbose #947 > > │ return(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j / f_lineno: │ 00:01:19 verbose #948 > > │ 32 / f_code.co_filename: / f_back.f_lineno: / f_back.f_code.co_filename: │ 00:01:19 verbose #949 > > │ / arg: (0.0, 0.0) │ 00:01:19 verbose #950 > > │ gamma__ / s: Complex { re: 0.0, im: 0.0 } / result: Ok(Complex { re: 0.0, │ 00:01:19 verbose #951 > > │ im: 0.0 }) │ 00:01:19 verbose #952 > > │ zeta__ / s: Complex { re: 1.0, im: 0.0 } / result: Ok(Complex { re: inf, im: │ 00:01:19 verbose #953 > > │ 0.0 }) / z: Complex { re: 0.0, im: 0.0 } │ 00:01:19 verbose #954 > > │ __assert_eq / actual: inf / expected: inf │ 00:01:19 verbose #955 > > │ __assert_eq / actual: 0.0 / expected: 0.0 │ 00:01:19 verbose #956 > > │ │ 00:01:19 verbose #957 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:19 verbose #958 > > 00:01:19 verbose #959 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:19 verbose #960 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:19 verbose #961 > > │ ## test_symmetry_across_real_axis___ │ 00:01:19 verbose #962 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:19 verbose #963 > > 00:01:19 verbose #964 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:19 verbose #965 > > inl test_symmetry_across_real_axis___ log = run_test log (8u8, 7u8) fun zeta, 00:01:19 verbose #966 > > gamma => 00:01:19 verbose #967 > > inl s = .^(2, 10) 00:01:19 verbose #968 > > inl result_positive_im = zeta s 00:01:19 verbose #969 > > inl result_negative_im = zeta .^(re s, -(im s)) 00:01:19 verbose #970 > > inl conj = result_negative_im |> conj 00:01:19 verbose #971 > > result_positive_im |> re |> _assert_eq (conj |> re) 00:01:19 verbose #972 > > result_positive_im |> im |> _assert_eq (conj |> im) 00:01:19 verbose #973 > > 00:01:19 verbose #974 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:19 verbose #975 > > //// test 00:01:19 verbose #976 > > ///! rust -d num-complex pyo3 00:01:19 verbose #977 > > 00:01:19 verbose #978 > > test_symmetry_across_real_axis___ true 00:01:27 verbose #979 > > 00:01:27 verbose #980 > > ╭─[ 8.30s - return value ]─────────────────────────────────────────────────────╮ 00:01:27 verbose #981 > > │ zeta_ / s: (2.0, 10.0) / count: 0 │ 00:01:27 verbose #982 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), a=1, derivative=0, │ 00:01:27 verbose #983 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: │ 00:01:27 verbose #984 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:27 verbose #985 > > │ / arg: None │ 00:01:27 verbose #986 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), a=1, derivative=0, │ 00:01:27 verbose #987 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: │ 00:01:27 verbose #988 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:27 verbose #989 > > │ / arg: None │ 00:01:27 verbose #990 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), a=1, derivative=0, │ 00:01:27 verbose #991 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: │ 00:01:27 verbose #992 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:27 verbose #993 > > │ / arg: None │ 00:01:27 verbose #994 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), a=1, derivative=0, │ 00:01:27 verbose #995 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: │ 00:01:27 verbose #996 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:27 verbose #997 > > │ / arg: None │ 00:01:27 verbose #998 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), a=1, derivative=0, │ 00:01:27 verbose #999 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: │ 00:01:27 verbose #1000 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:27 verbose #1001 > > │ / arg: None │ 00:01:27 verbose #1002 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+10j), kwargs={}, │ 00:01:27 verbose #1003 > > │ name='zeta' / f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py / │ 00:01:27 verbose #1004 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py │ 00:01:27 verbose #1005 > > │ / arg: None │ 00:01:27 verbose #1006 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+10j), kwargs={}, │ 00:01:27 verbose #1007 > > │ name='zeta' /.../ f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg: │ 00:01:27 verbose #1008 > > │ None │ 00:01:27 verbose #1009 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: n=26, bc=5 / │ 00:01:27 verbose #1010 > > │ f_lineno: 94 / f_code.co_filename: /mpmath/libmp/libintmath.py / │ 00:01:27 verbose #1011 > > │ f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / │ 00:01:27 verbose #1012 > > │ arg: None │ 00:01:27 verbose #1013 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: n=26, bc=5 / │ 00:01:27 verbose #1014 > > │ f_lineno: 95 / f_code.co_filename: /mpmath/libmp/libintmath.py / │ 00:01:27 verbose #1015 > > │ f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / │ 00:01:27 verbose #1016 > > │ arg: None │ 00:01:27 verbose #1017 > > │ return(zeta_) / f_code.co_name: python_bitcount / f_locals: n=26, bc=5 / │ 00:01:27 verbose #1018 > > │ f_lineno: 95 / f_code.co_filename: /mpmath/libmp/libintmath.py / │ 00:01:27 verbose #1019 > > │ f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / │ 00:01:27 verbose #1020 > > │ arg: 5 │ 00:01:27 verbose #1021 > > │ line(zeta_) / f_code.co_name: mpf_add / f_locals: s=(0, 1, 2, 1), t=(0, 25, │ 00:01:27 verbose #1022 > > │ 2, 5), prec=14, rnd='d', _sub=0, ssign=0, sman=1, sexp=2, sbc=1, tsign=0, │ 00:01:27 verbose #1023 > > │ tman=25, texp=2, tbc=5, offset=0, man=26, bc=5 / f_lineno: 779 / │ 00:01:27 verbose #1024 > > │ f_code.co_filename: /mpmath/libmp/libmpf.py / f_back.f_lineno: 1401 / │ 00:01:27 verbose #1025 > > │ f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg: None │ 00:01:27 verbose #1026 > > │ zeta_ / result: (1.19798250067418 + 0.0791704917205257j) / count: 1174 │ 00:01:27 verbose #1027 > > │ zeta / count: 0 / s: Complex { re: 2.0, im: -10.0 } │ 00:01:27 verbose #1028 > > │ zeta__ / s: Complex { re: 2.0, im: -10.0 } / result: Ok(Complex { re: │ 00:01:27 verbose #1029 > > │ 1.1979825006741847, im: 0.07917049172052575 }) / z: Complex { re: NaN, im: │ 00:01:27 verbose #1030 > > │ NaN } │ 00:01:27 verbose #1031 > > │ __assert_eq / actual: 1.1979825006741847 / expected: 1.1979825006741847 │ 00:01:27 verbose #1032 > > │ __assert_eq / actual: -0.07917049172052575 / expected: -0.07917049172052575 │ 00:01:27 verbose #1033 > > │ │ 00:01:27 verbose #1034 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:27 verbose #1035 > > 00:01:27 verbose #1036 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:27 verbose #1037 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:27 verbose #1038 > > │ ## test_behavior_near_origin___ │ 00:01:27 verbose #1039 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:27 verbose #1040 > > 00:01:27 verbose #1041 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:27 verbose #1042 > > inl test_behavior_near_origin___ log = run_test log (6u8, 5u8) fun zeta, gamma 00:01:27 verbose #1043 > > => 00:01:27 verbose #1044 > > inl s = .^(0.01, 0.01) 00:01:27 verbose #1045 > > inl result = zeta s 00:01:27 verbose #1046 > > result |> re |> _assert_lt limit.max 00:01:27 verbose #1047 > > result |> im |> _assert_lt limit.max 00:01:27 verbose #1048 > > 00:01:27 verbose #1049 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:27 verbose #1050 > > //// test 00:01:27 verbose #1051 > > ///! rust -d num-complex pyo3 00:01:27 verbose #1052 > > 00:01:27 verbose #1053 > > test_behavior_near_origin___ true 00:01:36 verbose #1054 > > 00:01:36 verbose #1055 > > ╭─[ 8.41s - return value ]─────────────────────────────────────────────────────╮ 00:01:36 verbose #1056 > > │ zeta_ / s: (0.01, 0.01) / count: 0 │ 00:01:36 verbose #1057 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(0.01+0.01j), a=1, │ 00:01:36 verbose #1058 > > │ derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: │ 00:01:36 verbose #1059 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:36 verbose #1060 > > │ / arg: None │ 00:01:36 verbose #1061 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.01+0.01j), a=1, │ 00:01:36 verbose #1062 > > │ derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: │ 00:01:36 verbose #1063 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:36 verbose #1064 > > │ / arg: None │ 00:01:36 verbose #1065 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.01+0.01j), a=1, │ 00:01:36 verbose #1066 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / │ 00:01:36 verbose #1067 > > │ f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / │ 00:01:36 verbose #1068 > > │ f_back.f_code.co_filename: / arg: None │ 00:01:36 verbose #1069 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.01+0.01j), a=1, │ 00:01:36 verbose #1070 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / │ 00:01:36 verbose #1071 > > │ f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / │ 00:01:36 verbose #1072 > > │ f_back.f_code.co_filename: / arg: None │ 00:01:36 verbose #1073 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.01+0.01j), a=1, │ 00:01:36 verbose #1074 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / │ 00:01:36 verbose #1075 > > │ f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / │ 00:01:36 verbose #1076 > > │ f_back.f_code.co_filename: / arg: None │ 00:01:36 verbose #1077 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(0.01+0.01j), kwargs={}, │ 00:01:36 verbose #1078 > > │ name='zeta' / f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py / │ 00:01:36 verbose #1079 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py │ 00:01:36 verbose #1080 > > │ / arg: None │ 00:01:36 verbose #1081 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(0...py / f_back.f_lineno: │ 00:01:36 verbose #1082 > > │ 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None │ 00:01:36 verbose #1083 > > │ line(gamma_) / f_code.co_name: mpc_gamma / f_locals: z=((0, │ 00:01:36 verbose #1084 > > │ 4458563631096791, -52, 52), (1, 5764607523034235, -59, 53)), prec=53, │ 00:01:36 verbose #1085 > > │ rnd='n', type=0, a=(0, 4458563631096791, -52, 52), b=(1, 5764607523034235, │ 00:01:36 verbose #1086 > > │ -59, 53), asign=0, aman=4458563631096791, aexp=-52, abc=52, bsign=1, │ 00:01:36 verbose #1087 > > │ bman=5764607523034235, bexp=-59, bbc=53, wp=73, amag=0, bmag=-6, mag=0, │ 00:01:36 verbose #1088 > > │ an=0, bn=0, absn=0j, gamma_size=0, need_reflection=0, zorig=((0, │ 00:01:36 verbose #1089 > > │ 4458563631096791, -52, 52), (1, 5764607523034235, -59, 53)), yfinal=0, │ 00:01:36 verbose #1090 > > │ balance_prec=0, n_for_stirling=14, need_reduction=True, │ 00:01:36 verbose #1091 > > │ afix=132131814190692672995328, bfix=-94447329657392906240, r=0, zprered=((0, │ 00:01:36 verbose #1092 > > │ 4458563631096791, -52, 52), (1, 5764607523034235, -59, 53)), d=14, │ 00:01:36 verbose #1093 > > │ rre=56942610883563778729574216337150, one=9444732965739290427392, │ 00:01:36 verbose #1094 > > │ rim=-1820461636508155576115177658065, k=12 / f_lineno: 2043 / │ 00:01:36 verbose #1095 > > │ f_code.co_filename: /mpmath/libmp/gammazeta.py / f_back.f_lineno: 1007 / │ 00:01:36 verbose #1096 > > │ f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None │ 00:01:36 verbose #1097 > > │ gamma_ / result: (1.00577030202902 + 0.0059717824054102j) / count: 383 │ 00:01:36 verbose #1098 > > │ gamma__ / s: Complex { re: 0.99, im: -0.01 } / result: Ok(Complex { re: │ 00:01:36 verbose #1099 > > │ 1.005770302029023, im: 0.005971782405410201 }) │ 00:01:36 verbose #1100 > > │ zeta__ / s: Complex { re: 0.01, im: 0.01 } / result: Ok(Complex { re: │ 00:01:36 verbose #1101 > > │ -0.5091873433665667, im: -0.00939202213994577 }) / z: Complex { re: 0.0, im: │ 00:01:36 verbose #1102 > > │ 0.0 } │ 00:01:36 verbose #1103 > > │ __assert_lt / actual: -0.5091873433665667 / expected: inf │ 00:01:36 verbose #1104 > > │ __assert_lt / actual: -0.00939202213994577 / expected: inf │ 00:01:36 verbose #1105 > > │ │ 00:01:36 verbose #1106 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:36 verbose #1107 > > 00:01:36 verbose #1108 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:36 verbose #1109 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:36 verbose #1110 > > │ ## test_imaginary_axis │ 00:01:36 verbose #1111 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:36 verbose #1112 > > 00:01:36 verbose #1113 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:36 verbose #1114 > > inl test_imaginary_axis log = run_test log (3u8, 2u8) fun zeta, gamma => 00:01:36 verbose #1115 > > (join [[ 10; 20; 30; 40; 50; 60; 70; 80; 90; 100 ]]) 00:01:36 verbose #1116 > > |> listm.iter fun s => 00:01:36 verbose #1117 > > inl s = .^(0, s) 00:01:36 verbose #1118 > > inl result = zeta s 00:01:36 verbose #1119 > > result |> re |> _assert_ne 0 00:01:36 verbose #1120 > > result |> im |> _assert_ne 0 00:01:36 verbose #1121 > > 00:01:36 verbose #1122 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:36 verbose #1123 > > //// test 00:01:36 verbose #1124 > > ///! rust -d num-complex pyo3 00:01:36 verbose #1125 > > 00:01:36 verbose #1126 > > test_imaginary_axis true 00:01:45 verbose #1127 > > 00:01:45 verbose #1128 > > ╭─[ 8.68s - return value ]─────────────────────────────────────────────────────╮ 00:01:45 verbose #1129 > > │ zeta_ / s: (0.0, 10.0) / count: 0 │ 00:01:45 verbose #1130 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, derivative=0, │ 00:01:45 verbose #1131 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: │ 00:01:45 verbose #1132 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:45 verbose #1133 > > │ / arg: None │ 00:01:45 verbose #1134 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, derivative=0, │ 00:01:45 verbose #1135 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: │ 00:01:45 verbose #1136 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:45 verbose #1137 > > │ / arg: None │ 00:01:45 verbose #1138 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, derivative=0, │ 00:01:45 verbose #1139 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: │ 00:01:45 verbose #1140 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:45 verbose #1141 > > │ / arg: None │ 00:01:45 verbose #1142 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, derivative=0, │ 00:01:45 verbose #1143 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: │ 00:01:45 verbose #1144 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:45 verbose #1145 > > │ / arg: None │ 00:01:45 verbose #1146 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, derivative=0, │ 00:01:45 verbose #1147 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: │ 00:01:45 verbose #1148 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:45 verbose #1149 > > │ / arg: None │ 00:01:45 verbose #1150 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=10j, kwargs={}, name='zeta' / │ 00:01:45 verbose #1151 > > │ f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py / │ 00:01:45 verbose #1152 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py │ 00:01:45 verbose #1153 > > │ / arg: None │ 00:01:45 verbose #1154 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=10j, kwargs={}, name='zeta' / │ 00:01:45 verbose #1155 > > │ f_lineno: 990 / f_code.co_f...g: None │ 00:01:45 verbose #1156 > > │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1, 0, 1), prec=83 │ 00:01:45 verbose #1157 > > │ / f_lineno: 511 / f_code.co_filename: /mpmath/libmp/libmpf.py / │ 00:01:45 verbose #1158 > > │ f_back.f_lineno: 2031 / f_back.f_code.co_filename: │ 00:01:45 verbose #1159 > > │ /mpmath/libmp/gammazeta.py / arg: None │ 00:01:45 verbose #1160 > > │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1, 0, 1), prec=83, │ 00:01:45 verbose #1161 > > │ sign=0, man=1, exp=0, bc=1 / f_lineno: 512 / f_code.co_filename: │ 00:01:45 verbose #1162 > > │ /mpmath/libmp/libmpf.py / f_back.f_lineno: 2031 / f_back.f_code.co_filename: │ 00:01:45 verbose #1163 > > │ /mpmath/libmp/gammazeta.py / arg: None │ 00:01:45 verbose #1164 > > │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1, 0, 1), prec=83, │ 00:01:45 verbose #1165 > > │ sign=0, man=1, exp=0, bc=1, offset=83 / f_lineno: 513 / f_code.co_filename: │ 00:01:45 verbose #1166 > > │ /mpmath/libmp/libmpf.py / f_back.f_lineno: 2031 / f_back.f_code.co_filename: │ 00:01:45 verbose #1167 > > │ /mpmath/libmp/gammazeta.py / arg: None │ 00:01:45 verbose #1168 > > │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1, 0, 1), prec=83, │ 00:01:45 verbose #1169 > > │ sign=0, man=1, exp=0, bc=1, offset=83 / f_lineno: 517 / f_code.co_filename: │ 00:01:45 verbose #1170 > > │ /mpmath/libmp/libmpf.py / f_back.f_lineno: 2031 / f_back.f_code.co_filename: │ 00:01:45 verbose #1171 > > │ /mpmath/libmp/gammazeta.py / arg: None │ 00:01:45 verbose #1172 > > │ gamma_ / result: (-1.51425318049776e-67 + 2.79082155561748e-69j) / count: │ 00:01:45 verbose #1173 > > │ 289 │ 00:01:45 verbose #1174 > > │ gamma__ / s: Complex { re: 1.0, im: -100.0 } / result: Ok(Complex { re: │ 00:01:45 verbose #1175 > > │ -1.514253180497756e-67, im: 2.7908215556174775e-69 }) │ 00:01:45 verbose #1176 > > │ zeta__ / s: Complex { re: 0.0, im: 100.0 } / result: Ok(Complex { re: │ 00:01:45 verbose #1177 > > │ 6.51721042625301, im: 0.18128842533791736 }) / z: Complex { re: 0.0, im: 0.0 │ 00:01:45 verbose #1178 > > │ } │ 00:01:45 verbose #1179 > > │ __assert_ne / actual: 6.51721042625301 / expected: 0.0 │ 00:01:45 verbose #1180 > > │ __assert_ne / actual: 0.18128842533791736 / expected: 0.0 │ 00:01:45 verbose #1181 > > │ │ 00:01:45 verbose #1182 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:45 verbose #1183 > > 00:01:45 verbose #1184 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:45 verbose #1185 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:45 verbose #1186 > > │ ## test_critical_strip │ 00:01:45 verbose #1187 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:45 verbose #1188 > > 00:01:45 verbose #1189 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:45 verbose #1190 > > inl test_critical_strip log = run_test log (3u8, 2u8) fun zeta, gamma => 00:01:45 verbose #1191 > > (join [[ 00:01:45 verbose #1192 > > .^(0.5, 14.134725) 00:01:45 verbose #1193 > > .^(0.75, 20.5) 00:01:45 verbose #1194 > > .^(1.25, 30.1) 00:01:45 verbose #1195 > > .^(0.25, 40.0) 00:01:45 verbose #1196 > > .^(1.0, 50.0) 00:01:45 verbose #1197 > > ]]) 00:01:45 verbose #1198 > > |> listm.iter fun s => 00:01:45 verbose #1199 > > inl result = zeta s 00:01:45 verbose #1200 > > result |> re |> _assert_ne 0 00:01:45 verbose #1201 > > result |> im |> _assert_ne 0 00:01:45 verbose #1202 > > 00:01:45 verbose #1203 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:45 verbose #1204 > > //// test 00:01:45 verbose #1205 > > ///! rust -d num-complex pyo3 00:01:45 verbose #1206 > > 00:01:45 verbose #1207 > > test_critical_strip true 00:01:53 verbose #1208 > > 00:01:53 verbose #1209 > > ╭─[ 8.51s - return value ]─────────────────────────────────────────────────────╮ 00:01:53 verbose #1210 > > │ zeta_ / s: (0.5, 14.134725) / count: 0 │ 00:01:53 verbose #1211 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1, │ 00:01:53 verbose #1212 > > │ derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: │ 00:01:53 verbose #1213 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:53 verbose #1214 > > │ / arg: None │ 00:01:53 verbose #1215 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1, │ 00:01:53 verbose #1216 > > │ derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: │ 00:01:53 verbose #1217 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:01:53 verbose #1218 > > │ / arg: None │ 00:01:53 verbose #1219 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1, │ 00:01:53 verbose #1220 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / │ 00:01:53 verbose #1221 > > │ f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / │ 00:01:53 verbose #1222 > > │ f_back.f_code.co_filename: / arg: None │ 00:01:53 verbose #1223 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1, │ 00:01:53 verbose #1224 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / │ 00:01:53 verbose #1225 > > │ f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / │ 00:01:53 verbose #1226 > > │ f_back.f_code.co_filename: / arg: None │ 00:01:53 verbose #1227 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(0.5+14.134725j), a=1, │ 00:01:53 verbose #1228 > > │ derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / │ 00:01:53 verbose #1229 > > │ f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / │ 00:01:53 verbose #1230 > > │ f_back.f_code.co_filename: / arg: None │ 00:01:53 verbose #1231 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(0.5+14.134725j), kwargs={}, │ 00:01:53 verbose #1232 > > │ name='zeta' / f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py / │ 00:01:53 verbose #1233 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py │ 00:01:53 verbose #1234 > > │ / arg: None │ 00:01:53 verbose #1235 > > │ line(zeta_) / f_code...210, sim=241793223535862290161314995 / f_lineno: 1648 │ 00:01:53 verbose #1236 > > │ / f_code.co_filename: /mpmath/libmp/gammazeta.py / f_back.f_lineno: 2050 / │ 00:01:53 verbose #1237 > > │ f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / arg: None │ 00:01:53 verbose #1238 > > │ line(gamma_) / f_code.co_name: complex_stirling_series / f_locals: x=0, │ 00:01:53 verbose #1239 > > │ y=-241785163922925834941235200, prec=82, _m=12089258196146291747061760000, │ 00:01:53 verbose #1240 > > │ tre=0, tim=396, ure=-1934281311383406679530, uim=0, │ 00:01:53 verbose #1241 > > │ sre=4443714077719696485012210, sim=241793223535862290161314995 / f_lineno: │ 00:01:53 verbose #1242 > > │ 1649 / f_code.co_filename: /mpmath/libmp/gammazeta.py / f_back.f_lineno: │ 00:01:53 verbose #1243 > > │ 2050 / f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / arg: None │ 00:01:53 verbose #1244 > > │ line(gamma_) / f_code.co_name: complex_stirling_series / f_locals: x=0, │ 00:01:53 verbose #1245 > > │ y=-241785163922925834941235200, prec=82, _m=12089258196146291747061760000, │ 00:01:53 verbose #1246 > > │ tre=0, tim=396, ure=-1934281311383406679530, uim=0, │ 00:01:53 verbose #1247 > > │ sre=4443714077719696485012210, sim=241793223535862290161314997 / f_lineno: │ 00:01:53 verbose #1248 > > │ 1650 / f_code.co_filename: /mpmath/libmp/gammazeta.py / f_back.f_lineno: │ 00:01:53 verbose #1249 > > │ 2050 / f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / arg: None │ 00:01:53 verbose #1250 > > │ gamma_ / result: (2.63173210619768e-35 - 8.16464935465334e-36j) / count: 262 │ 00:01:53 verbose #1251 > > │ gamma__ / s: Complex { re: 0.0, im: -50.0 } / result: Ok(Complex { re: │ 00:01:53 verbose #1252 > > │ 2.6317321061976804e-35, im: -8.164649354653339e-36 }) │ 00:01:53 verbose #1253 > > │ zeta__ / s: Complex { re: 1.0, im: 50.0 } / result: Ok(Complex { re: │ 00:01:53 verbose #1254 > > │ 0.44103873082309397, im: 0.281582455029683 }) / z: Complex { re: 0.0, im: │ 00:01:53 verbose #1255 > > │ 0.0 } │ 00:01:53 verbose #1256 > > │ __assert_ne / actual: 0.44103873082309397 / expected: 0.0 │ 00:01:53 verbose #1257 > > │ __assert_ne / actual: 0.281582455029683 / expected: 0.0 │ 00:01:53 verbose #1258 > > │ │ 00:01:53 verbose #1259 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:53 verbose #1260 > > 00:01:53 verbose #1261 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:53 verbose #1262 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:53 verbose #1263 > > │ ## test_reflection_formula_for_specific_value │ 00:01:53 verbose #1264 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:53 verbose #1265 > > 00:01:53 verbose #1266 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:53 verbose #1267 > > inl test_reflection_formula_for_specific_value log = run_test log (3u8, 2u8) fun 00:01:53 verbose #1268 > > zeta, gamma => 00:01:53 verbose #1269 > > (join [[ 00:01:53 verbose #1270 > > .^(3, 4) 00:01:53 verbose #1271 > > .^(2.5, -3.5) 00:01:53 verbose #1272 > > .^(1.5, 2.5) 00:01:53 verbose #1273 > > .^(0.5, 14.134725) 00:01:53 verbose #1274 > > ]]) 00:01:53 verbose #1275 > > |> listm.iter fun s => 00:01:53 verbose #1276 > > inl lhs = zeta s 00:01:53 verbose #1277 > > inl reflection_coefficient = 00:01:53 verbose #1278 > > (.^(2, 0) .** s) 00:01:53 verbose #1279 > > .* (.^(pi, 0) .** (s .- .^(1, 0))) 00:01:53 verbose #1280 > > .* (.^(pi, 0) .* s ./ .^(2, 0) |> complex_sin) 00:01:53 verbose #1281 > > .* gamma (.^(1, 0) .- s) 00:01:53 verbose #1282 > > 00:01:53 verbose #1283 > > inl one_minus_s = .^(1 - re s, -(im s)) 00:01:53 verbose #1284 > > inl rhs = reflection_coefficient .* zeta one_minus_s 00:01:53 verbose #1285 > > 00:01:53 verbose #1286 > > re lhs - re rhs |> abs |> _assert_lt 0.0001 00:01:53 verbose #1287 > > im lhs - im rhs |> abs |> _assert_lt 0.0001 00:01:53 verbose #1288 > > 00:01:53 verbose #1289 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:53 verbose #1290 > > //// test 00:01:53 verbose #1291 > > ///! rust -d num-complex pyo3 00:01:53 verbose #1292 > > 00:01:53 verbose #1293 > > test_reflection_formula_for_specific_value true 00:02:02 verbose #1294 > > 00:02:02 verbose #1295 > > ╭─[ 8.63s - return value ]─────────────────────────────────────────────────────╮ 00:02:02 verbose #1296 > > │ zeta_ / s: (3.0, 4.0) / count: 0 │ 00:02:02 verbose #1297 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, derivative=0, │ 00:02:02 verbose #1298 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: │ 00:02:02 verbose #1299 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:02:02 verbose #1300 > > │ / arg: None │ 00:02:02 verbose #1301 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, derivative=0, │ 00:02:02 verbose #1302 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: │ 00:02:02 verbose #1303 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:02:02 verbose #1304 > > │ / arg: None │ 00:02:02 verbose #1305 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, derivative=0, │ 00:02:02 verbose #1306 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: │ 00:02:02 verbose #1307 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:02:02 verbose #1308 > > │ / arg: None │ 00:02:02 verbose #1309 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, derivative=0, │ 00:02:02 verbose #1310 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: │ 00:02:02 verbose #1311 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:02:02 verbose #1312 > > │ / arg: None │ 00:02:02 verbose #1313 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, derivative=0, │ 00:02:02 verbose #1314 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: │ 00:02:02 verbose #1315 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:02:02 verbose #1316 > > │ / arg: None │ 00:02:02 verbose #1317 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(3+4j), kwargs={}, name='zeta' │ 00:02:02 verbose #1318 > > │ / f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py / │ 00:02:02 verbose #1319 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py │ 00:02:02 verbose #1320 > > │ / arg: None │ 00:02:02 verbose #1321 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(3+4j), kwargs={}, name='zeta' │ 00:02:02 verbose #1322 > > │ / f_linen...045 / f_code.co_filename: /mpmath/libmp/gammazeta.py / │ 00:02:02 verbose #1323 > > │ f_back.f_lineno: 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py │ 00:02:02 verbose #1324 > > │ / arg: None │ 00:02:02 verbose #1325 > > │ line(gamma_) / f_code.co_name: mpc_gamma / f_locals: z=((0, 1, -1, 1), (0, │ 00:02:02 verbose #1326 > > │ 3978571390186527, -48, 52)), prec=53, rnd='n', type=0, a=(0, 1, -1, 1), │ 00:02:02 verbose #1327 > > │ b=(0, 3978571390186527, -48, 52), asign=0, aman=1, aexp=-1, abc=1, bsign=0, │ 00:02:02 verbose #1328 > > │ bman=3978571390186527, bexp=-48, bbc=52, wp=79, amag=0, bmag=4, mag=4, an=0, │ 00:02:02 verbose #1329 > > │ bn=14, absn=14j, gamma_size=56, need_reflection=0, zorig=((0, 1, -1, 1), (0, │ 00:02:02 verbose #1330 > > │ 3978571390186527, -48, 52)), yfinal=0, balance_prec=0, n_for_stirling=15, │ 00:02:02 verbose #1331 > > │ need_reduction=True, afix=2115620184325601055735808, │ 00:02:02 verbose #1332 > > │ bfix=8543917002826194402410496, r=0, zprered=((0, 1, -1, 1), (0, │ 00:02:02 verbose #1333 > > │ 3978571390186527, -48, 52)), d=5, rre=-542313259704087430481959845, │ 00:02:02 verbose #1334 > > │ one=604462909807314587353088, rim=-1657865507045117397880679064, k=2 / │ 00:02:02 verbose #1335 > > │ f_lineno: 2043 / f_code.co_filename: /mpmath/libmp/gammazeta.py / │ 00:02:02 verbose #1336 > > │ f_back.f_lineno: 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py │ 00:02:02 verbose #1337 > > │ / arg: None │ 00:02:02 verbose #1338 > > │ gamma_ / result: (-1.4455538437607e-10 - 5.52278876877407e-10j) / count: 318 │ 00:02:02 verbose #1339 > > │ gamma__ / s: Complex { re: 0.5, im: 14.134725 } / result: Ok(Complex { re: │ 00:02:02 verbose #1340 > > │ -1.4455538437606964e-10, im: -5.522788768774066e-10 }) │ 00:02:02 verbose #1341 > > │ zeta__ / s: Complex { re: 0.5, im: -14.134725 } / result: Ok(Complex { re: │ 00:02:02 verbose #1342 > > │ 1.7674298413849186e-8, im: 1.1102028930923156e-7 }) / z: Complex { re: 0.0, │ 00:02:02 verbose #1343 > > │ im: 0.0 } │ 00:02:02 verbose #1344 > > │ __assert_lt / actual: 4.433688083284228e-22 / expected: 0.0001 │ 00:02:02 verbose #1345 > > │ __assert_lt / actual: 1.3234889800848443e-22 / expected: 0.0001 │ 00:02:02 verbose #1346 > > │ │ 00:02:02 verbose #1347 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:02 verbose #1348 > > 00:02:02 verbose #1349 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:02 verbose #1350 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:02 verbose #1351 > > │ ## test_euler_product_formula │ 00:02:02 verbose #1352 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:02 verbose #1353 > > 00:02:02 verbose #1354 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:02 verbose #1355 > > inl test_euler_product_formula log = run_test log (3u8, 2u8) fun zeta, gamma => 00:02:02 verbose #1356 > > inl s_values = join [[ 2; 2.5; 3; 3.5; 4; 4.5; 5 ]] 00:02:02 verbose #1357 > > inl primes = join [[ 2; 3; 5; 7; 11; 13; 17; 19; 23; 29; 31; 37; 41; 43; 47; 00:02:02 verbose #1358 > > 53; 59; 61; 67; 71 ]] 00:02:02 verbose #1359 > > s_values 00:02:02 verbose #1360 > > |> listm.iter fun s_re => 00:02:02 verbose #1361 > > inl s = .^(s_re, 0) 00:02:02 verbose #1362 > > inl product = 00:02:02 verbose #1363 > > (1, primes) 00:02:02 verbose #1364 > > ||> listm.fold fun acc x => 00:02:02 verbose #1365 > > acc * 1 / (1 - x ** -s_re) 00:02:02 verbose #1366 > > 00:02:02 verbose #1367 > > inl result = zeta s 00:02:02 verbose #1368 > > re result - product |> abs |> _assert_lt 0.01 00:02:02 verbose #1369 > > result |> im |> _assert_lt 0.01 00:02:02 verbose #1370 > > 00:02:02 verbose #1371 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:02 verbose #1372 > > //// test 00:02:02 verbose #1373 > > ///! rust -d num-complex pyo3 00:02:02 verbose #1374 > > 00:02:02 verbose #1375 > > test_euler_product_formula true 00:02:11 verbose #1376 > > 00:02:11 verbose #1377 > > ╭─[ 8.54s - return value ]─────────────────────────────────────────────────────╮ 00:02:11 verbose #1378 > > │ zeta_ / s: (2.0, 0.0) / count: 0 │ 00:02:11 verbose #1379 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:02:11 verbose #1380 > > │ method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: │ 00:02:11 verbose #1381 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:02:11 verbose #1382 > > │ / arg: None │ 00:02:11 verbose #1383 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:02:11 verbose #1384 > > │ method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: │ 00:02:11 verbose #1385 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:02:11 verbose #1386 > > │ / arg: None │ 00:02:11 verbose #1387 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:02:11 verbose #1388 > > │ method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: │ 00:02:11 verbose #1389 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:02:11 verbose #1390 > > │ / arg: None │ 00:02:11 verbose #1391 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:02:11 verbose #1392 > > │ method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: │ 00:02:11 verbose #1393 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:02:11 verbose #1394 > > │ / arg: None │ 00:02:11 verbose #1395 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, derivative=0, │ 00:02:11 verbose #1396 > > │ method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: │ 00:02:11 verbose #1397 > > │ /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: │ 00:02:11 verbose #1398 > > │ / arg: None │ 00:02:11 verbose #1399 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), kwargs={}, name='zeta' │ 00:02:11 verbose #1400 > > │ / f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py / │ 00:02:11 verbose #1401 > > │ f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py │ 00:02:11 verbose #1402 > > │ / arg: None │ 00:02:11 verbose #1403 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), kwargs={}, name='zeta' │ 00:02:11 verbose #1404 > > │ / f_linen...k.f_lineno: 985 / f_back.f_code.co_filename: │ 00:02:11 verbose #1405 > > │ /mpmath/libmp/gammazeta.py / arg: None │ 00:02:11 verbose #1406 > > │ line(zeta_) / f_code.co_name: mpf_zeta_int / f_locals: s=5, prec=53, │ 00:02:11 verbose #1407 > > │ rnd='n', wp=73, m=19.25, needed_terms=623488, n=33, d=[1, 2179, 792067, │ 00:02:11 verbose #1408 > > │ 115062531, 8930212611, 429314925315, 13983537177347, 327666966438659, │ 00:02:11 verbose #1409 > > │ 5764846406968067, 78615943485956867, 851604426176701187, │ 00:02:11 verbose #1410 > > │ 7470527451121689347, 53898915046387983107, 323897845985013506819, │ 00:02:11 verbose #1411 > > │ 1638178356374090130179, 7034281785235908174595, 25833609859980306522883, │ 00:02:11 verbose #1412 > > │ 81661917475887913739011, 223448095548034217779971, 532029677981012660429571, │ 00:02:11 verbose #1413 > > │ 1108048631855905753375491, 2029946562680066824315651, │ 00:02:11 verbose #1414 > > │ 3292927237466655352791811, 4769455369342763680768771, │ 00:02:11 verbose #1415 > > │ 6235511670496346417767171, 7463408621503347142796035, │ 00:02:11 verbose #1416 > > │ 8322751284048216428487427, 8818779962777819524211459, │ 00:02:11 verbose #1417 > > │ 9050689474911140452082435, 9136270117622166323831555, │ 00:02:11 verbose #1418 > > │ 9160252037839493347779331, 9165045885455648617505539, │ 00:02:11 verbose #1419 > > │ 9165654628010081032708867, 9165691521498228451812099], │ 00:02:11 verbose #1420 > > │ t=-84153986440240940095109733900764881301998910956, k=26 / f_lineno: 954 / │ 00:02:11 verbose #1421 > > │ f_code.co_filename: /mpmath/libmp/gammazeta.py / f_back.f_lineno: 985 / │ 00:02:11 verbose #1422 > > │ f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / arg: None │ 00:02:11 verbose #1423 > > │ zeta_ / result: (1.03692775514337 + 0.0j) / count: 228 │ 00:02:11 verbose #1424 > > │ zeta / count: 0 / s: Complex { re: 5.0, im: 0.0 } │ 00:02:11 verbose #1425 > > │ zeta__ / s: Complex { re: 5.0, im: 0.0 } / result: Ok(Complex { re: │ 00:02:11 verbose #1426 > > │ 1.03692775514337, im: 0.0 }) / z: Complex { re: NaN, im: NaN } │ 00:02:11 verbose #1427 > > │ __assert_lt / actual: 2.0033654735129858e-9 / expected: 0.01 │ 00:02:11 verbose #1428 > > │ __assert_lt / actual: 0.0 / expected: 0.01 │ 00:02:11 verbose #1429 > > │ │ 00:02:11 verbose #1430 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:11 verbose #1431 > > 00:02:11 verbose #1432 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:11 verbose #1433 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:11 verbose #1434 > > │ ## graph │ 00:02:11 verbose #1435 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:11 verbose #1436 > > 00:02:11 verbose #1437 > > ── mermaid ───────────────────────────────────────────────────────────────────── 00:02:11 verbose #1438 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:11 verbose #1439 > > │ <div class="mermaidMarkdownContainer" style="background-color:white"> │ 00:02:11 verbose #1440 > > │ <link rel="stylesheet" │ 00:02:11 verbose #1441 > > │ href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min. │ 00:02:11 verbose #1442 > > │ css"> │ 00:02:11 verbose #1443 > > │ <div id="60ccba5ed74d43aa8b253f466cc59a45"></div> │ 00:02:11 verbose #1444 > > │ <script type="module"> │ 00:02:11 verbose #1445 > > │ │ 00:02:11 verbose #1446 > > │ import mermaid from │ 00:02:11 verbose #1447 > > │ 'https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.esm.min.mjs'; │ 00:02:11 verbose #1448 > > │ let renderTarget = │ 00:02:11 verbose #1449 > > │ document.getElementById('60ccba5ed74d43aa8b253f466cc59a45'); │ 00:02:11 verbose #1450 > > │ try { │ 00:02:11 verbose #1451 > > │ const {svg, bindFunctions} = await │ 00:02:11 verbose #1452 > > │ mermaid.mermaidAPI.render( │ 00:02:11 verbose #1453 > > │ 'mermaid_60ccba5ed74d43aa8b253f466cc59a45', │ 00:02:11 verbose #1454 > > │ `graph TD │ 00:02:11 verbose #1455 > > │ zeta("zeta()") --> convert │ 00:02:11 verbose #1456 > > │ zeta --> f["f()"] │ 00:02:11 verbose #1457 > > │ f --> mpc_f["mpc_zeta()"] │ 00:02:11 verbose #1458 > > │ f --> mpf_f["mpf_zeta()"] │ 00:02:11 verbose #1459 > > │ convert --> from_float │ 00:02:11 verbose #1460 > > │ from_float --> from_man_exp │ 00:02:11 verbose #1461 > > │ from_man_exp --> python_bitcount │ 00:02:11 verbose #1462 > > │ python_bitcount --> _normalize │ 00:02:11 verbose #1463 > > │ _normalize --> make_mpc │ 00:02:11 verbose #1464 > > │ make_mpc --> mpc_zeta["mpc_zeta()"] │ 00:02:11 verbose #1465 > > │ mpc_zeta --> mpf_zeta["mpf_zeta()"] │ 00:02:11 verbose #1466 > > │ mpf_zeta --> to_int │ 00:02:11 verbose #1467 > > │ to_int --> mpf_zeta_int["mpf_zeta_int()"] │ 00:02:11 verbose #1468 > > │ mpf_zeta_int --> borwein_coefficients │ 00:02:11 verbose #1469 > > │ borwein_coefficients --> from_man_exp_2("from_man_exp()") │ 00:02:11 verbose #1470 > > │ from_man_exp_2 --> python_bitcount_2("python_bitcount()") │ 00:02:11 verbose #1471 > > │ python_bitcount_2 --> _normalize_2("_normalize()") │ 00:02:11 verbose #1472 > > │ _normalize_2 --> make_mpc_2("make_mpc()") │ 00:02:11 verbose #1473 > > │ make_mpc_2 --> stop_trace │ 00:02:11 verbose #1474 > > │ mpf_zeta_int --> mpf_bernoulli │ 00:02:11 verbose #1475 > > │ mpf_bernoulli --> bernoulli_size │ 00:02:11 verbose #1476 > > │ bernoulli_size --> mpf_rdiv_int │ 00:02:11 verbose #1477 > > │ mpf_rdiv_int --> python_bitcount_3("python_bitcount()") │ 00:02:11 verbose #1478 > > │ python_bitcount_3 --> _normalize1 │ 00:02:11 verbose #1479 > > │ _normalize1 --> from_man_exp_3("from_man_exp()") │ 00:02:11 verbose #1480 > > │ from_man_exp_3 --> _normalize_3("_normalize()") │ 00:02:11 verbose #1481 > > │ _normalize_3 --> mpf_sub │ 00:02:11 verbose #1482 > > │ mpf_sub --> mpf_add │ 00:02:11 verbose #1483 > > │ mpf_add --> mpf_neg │ 00:02:11 verbose #1484 > > │ mpf_neg --> _normalize1_2("_normalize1()") │ 00:02:11 verbose #1485 > > │ _normalize1_2 --> from_int │ 00:02:11 verbose #1486 > > │ from_int --> mpf_div │ 00:02:11 verbose #1487 > > │ mpf_div --> python_bitcount_4("python_bitcount()") │ 00:02:11 verbose #1488 > > │ python_bitcount_4 --> _normalize1_3("_normalize1()") │ 00:02:11 verbose #1489 > > │ _normalize1_3 --> make_mpc_3("make_mpc()") │ 00:02:11 verbose #1490 > > │ make_mpc_3 --> final_stop["stop_trace()"]`); │ 00:02:11 verbose #1491 > > │ renderTarget.innerHTML = svg; │ 00:02:11 verbose #1492 > > │ bindFunctions?.(renderTarget); │ 00:02:11 verbose #1493 > > │ } │ 00:02:11 verbose #1494 > > │ catch (error) { │ 00:02:11 verbose #1495 > > │ console.log(error); │ 00:02:11 verbose #1496 > > │ } │ 00:02:11 verbose #1497 > > │ </script> │ 00:02:11 verbose #1498 > > │ </div> │ 00:02:11 verbose #1499 > > │ │ 00:02:11 verbose #1500 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:11 verbose #1501 > > 00:02:11 verbose #1502 > > ── mermaid ───────────────────────────────────────────────────────────────────── 00:02:11 verbose #1503 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:11 verbose #1504 > > │ <div class="mermaidMarkdownContainer" style="background-color:white"> │ 00:02:11 verbose #1505 > > │ <link rel="stylesheet" │ 00:02:11 verbose #1506 > > │ href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min. │ 00:02:11 verbose #1507 > > │ css"> │ 00:02:11 verbose #1508 > > │ <div id="917144003bc5449ea588e9fb2a954643"></div> │ 00:02:11 verbose #1509 > > │ <script type="module"> │ 00:02:11 verbose #1510 > > │ │ 00:02:11 verbose #1511 > > │ import mermaid from │ 00:02:11 verbose #1512 > > │ 'https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.esm.min.mjs'; │ 00:02:11 verbose #1513 > > │ let renderTarget = │ 00:02:11 verbose #1514 > > │ document.getElementById('917144003bc5449ea588e9fb2a954643'); │ 00:02:11 verbose #1515 > > │ try { │ 00:02:11 verbose #1516 > > │ const {svg, bindFunctions} = await │ 00:02:11 verbose #1517 > > │ mermaid.mermaidAPI.render( │ 00:02:11 verbose #1518 > > │ 'mermaid_917144003bc5449ea588e9fb2a954643', │ 00:02:11 verbose #1519 > > │ `graph TD │ 00:02:11 verbose #1520 > > │ zeta_rust("zeta() - Rust") --> num_traits("num-traits") │ 00:02:11 verbose #1521 > > │ zeta_rust --> num_bigint("num-bigint") │ 00:02:11 verbose #1522 > > │ zeta_rust --> rust_decimal("rust_decimal for precision") │ 00:02:11 verbose #1523 > > │ zeta_rust --> error_handling("Rust Error Handling") │ 00:02:11 verbose #1524 > > │ │ 00:02:11 verbose #1525 > > │ num_traits --> num_traits_usage("Use for common traits") │ 00:02:11 verbose #1526 > > │ num_bigint --> bigint_operations("Arbitrary-precision arithmetic │ 00:02:11 verbose #1527 > > │ operations") │ 00:02:11 verbose #1528 > > │ rust_decimal --> decimal_operations("High-precision decimal operations") │ 00:02:11 verbose #1529 > > │ error_handling --> result_type("Use Result<T, E> for error handling") │ 00:02:11 verbose #1530 > > │ │ 00:02:11 verbose #1531 > > │ bigint_operations --> convert_rust("convert() - Rust") │ 00:02:11 verbose #1532 > > │ bigint_operations --> normalize_rust("_normalize() - Rust") │ 00:02:11 verbose #1533 > > │ │ 00:02:11 verbose #1534 > > │ convert_rust --> from_float_rust("from_float() - Rust") │ 00:02:11 verbose #1535 > > │ from_float_rust --> from_man_exp_rust("from_man_exp() - Rust") │ 00:02:11 verbose #1536 > > │ from_man_exp_rust --> bitcount_rust("bitcount() - Rust") │ 00:02:11 verbose #1537 > > │ bitcount_rust --> normalize_rust │ 00:02:11 verbose #1538 > > │ normalize_rust --> mpc_zeta_rust("mpc_zeta() - Rust") │ 00:02:11 verbose #1539 > > │ mpc_zeta_rust --> mpf_zeta_rust("mpf_zeta() - Rust") │ 00:02:11 verbose #1540 > > │ mpf_zeta_rust --> to_int_rust("to_int() - Rust") │ 00:02:11 verbose #1541 > > │ to_int_rust --> mpf_zeta_int_rust("mpf_zeta_int() - Rust") │ 00:02:11 verbose #1542 > > │ │ 00:02:11 verbose #1543 > > │ mpf_zeta_int_rust --> borwein_coefficients_rust("borwein_coefficients() │ 00:02:11 verbose #1544 > > │ - Rust") │ 00:02:11 verbose #1545 > > │ borwein_coefficients_rust --> from_man_exp_rust_2("from_man_exp() - │ 00:02:11 verbose #1546 > > │ Rust") │ 00:02:11 verbose #1547 > > │ from_man_exp_rust_2 --> bitcount_rust_2("bitcount() - Rust") │ 00:02:11 verbose #1548 > > │ bitcount_rust_2 --> normalize_rust_2("_normalize() - Rust") │ 00:02:11 verbose #1549 > > │ normalize_rust_2 --> make_mpc_rust("make_mpc() - Rust") │ 00:02:11 verbose #1550 > > │ │ 00:02:11 verbose #1551 > > │ mpf_zeta_int_rust --> mpf_bernoulli_rust("mpf_bernoulli() - Rust") │ 00:02:11 verbose #1552 > > │ mpf_bernoulli_rust --> bernoulli_size_rust("bernoulli_size() - Rust") │ 00:02:11 verbose #1553 > > │ bernoulli_size_rust --> mpf_rdiv_int_rust("mpf_rdiv_int() - Rust") │ 00:02:11 verbose #1554 > > │ mpf_rdiv_int_rust --> bitcount_rust_3("bitcount() - Rust") │ 00:02:11 verbose #1555 > > │ bitcount_rust_3 --> normalize1_rust("_normalize1() - Rust") │ 00:02:11 verbose #1556 > > │ normalize1_rust --> from_man_exp_rust_3("from_man_exp() - Rust") │ 00:02:11 verbose #1557 > > │ from_man_exp_rust_3 --> normalize_rust_3("_normalize() - Rust") │ 00:02:11 verbose #1558 > > │ normalize_rust_3 --> mpf_sub_rust("mpf_sub() - Rust") │ 00:02:11 verbose #1559 > > │ mpf_sub_rust --> mpf_add_rust("mpf_add() - Rust") │ 00:02:11 verbose #1560 > > │ mpf_add_rust --> mpf_neg_rust("mpf_neg() - Rust") │ 00:02:11 verbose #1561 > > │ mpf_neg_rust --> normalize1_rust_2("_normalize1() - Rust") │ 00:02:11 verbose #1562 > > │ normalize1_rust_2 --> from_int_rust("from_int() - Rust") │ 00:02:11 verbose #1563 > > │ from_int_rust --> mpf_div_rust("mpf_div() - Rust") │ 00:02:11 verbose #1564 > > │ mpf_div_rust --> bitcount_rust_4("bitcount() - Rust") │ 00:02:11 verbose #1565 > > │ bitcount_rust_4 --> normalize1_rust_3("_normalize1() - Rust") │ 00:02:11 verbose #1566 > > │ │ 00:02:11 verbose #1567 > > │ style zeta_rust fill:#f9f,stroke:#333,stroke-width:4px │ 00:02:11 verbose #1568 > > │ style num_traits fill:#bbf,stroke:#333,stroke-width:2px │ 00:02:11 verbose #1569 > > │ style num_bigint fill:#bbf,stroke:#333,stroke-width:2px │ 00:02:11 verbose #1570 > > │ style rust_decimal fill:#bbf,stroke:#333,stroke-width:2px │ 00:02:11 verbose #1571 > > │ style error_handling fill:#bbf,stroke:#333,stroke-width:2px │ 00:02:11 verbose #1572 > > │ style bigint_operations fill:#bfb,stroke:#333,stroke-width:2px │ 00:02:11 verbose #1573 > > │ style decimal_operations fill:#bfb,stroke:#333,stroke-width:2px │ 00:02:11 verbose #1574 > > │ style result_type fill:#bfb,stroke:#333,stroke-width:2px`); │ 00:02:11 verbose #1575 > > │ renderTarget.innerHTML = svg; │ 00:02:11 verbose #1576 > > │ bindFunctions?.(renderTarget); │ 00:02:11 verbose #1577 > > │ } │ 00:02:11 verbose #1578 > > │ catch (error) { │ 00:02:11 verbose #1579 > > │ console.log(error); │ 00:02:11 verbose #1580 > > │ } │ 00:02:11 verbose #1581 > > │ </script> │ 00:02:11 verbose #1582 > > │ </div> │ 00:02:11 verbose #1583 > > │ │ 00:02:11 verbose #1584 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:11 verbose #1585 > > 00:02:11 verbose #1586 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:11 verbose #1587 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:11 verbose #1588 > > │ ## tests │ 00:02:11 verbose #1589 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:11 verbose #1590 > > 00:02:11 verbose #1591 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:11 verbose #1592 > > inl tests () = 00:02:11 verbose #1593 > > testing.run_tests_log { 00:02:11 verbose #1594 > > test_zeta_at_known_values_ 00:02:11 verbose #1595 > > test_zeta_at_2_minus2 00:02:11 verbose #1596 > > test_trivial_zero_at_negative_even___ 00:02:11 verbose #1597 > > test_non_trivial_zero___ 00:02:11 verbose #1598 > > test_real_part_greater_than_one___ 00:02:11 verbose #1599 > > test_zeta_at_1___ 00:02:11 verbose #1600 > > test_symmetry_across_real_axis___ 00:02:11 verbose #1601 > > test_behavior_near_origin___ 00:02:11 verbose #1602 > > test_imaginary_axis 00:02:11 verbose #1603 > > test_critical_strip 00:02:11 verbose #1604 > > test_reflection_formula_for_specific_value 00:02:11 verbose #1605 > > test_euler_product_formula 00:02:11 verbose #1606 > > } 00:02:11 verbose #1607 > > 00:02:11 verbose #1608 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:11 verbose #1609 > > ///! _ 00:02:11 verbose #1610 > > 00:02:11 verbose #1611 > > inl main (_args : array_base string) = 00:02:11 verbose #1612 > > inl value = 1i32 00:02:11 verbose #1613 > > console.write_line ($'$"value: {!value}"' : string) 00:02:11 verbose #1614 > > 0i32 00:02:11 verbose #1615 > > 00:02:11 verbose #1616 > > inl main () = 00:02:11 verbose #1617 > > $'let tests () = !tests ()' : () 00:02:11 verbose #1618 > > $'let main args = !main args' : () 00:02:11 verbose #1619 > 00:02:11 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 123388 } 00:02:11 verbose #1620 > 00:02:11 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:02:11 verbose #1621 > "nbconvert", 00:02:11 verbose #1622 > "/home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb", 00:02:11 verbose #1623 > "--to", 00:02:11 verbose #1624 > "html", 00:02:11 verbose #1625 > "--HTMLExporter.theme=dark", 00:02:11 verbose #1626 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:12 verbose #1627 > 00:02:11 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb to html 00:02:12 verbose #1628 > 00:02:11 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:02:12 verbose #1629 > 00:02:11 verbose #7 ! validate(nb) 00:02:12 verbose #1630 > 00:02:12 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:02:12 verbose #1631 > 00:02:12 verbose #9 ! return _pygments_highlight( 00:02:13 verbose #1632 > 00:02:13 verbose #10 ! [NbConvertApp] Writing 7171334 bytes to /home/runner/work/polyglot/polyglot/lib/math/math.dib.html 00:02:13 verbose #1633 > 00:02:13 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 889 } 00:02:13 verbose #1634 > 00:02:13 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 889 } 00:02:13 verbose #1635 > 00:02:13 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:02:13 verbose #1636 > "-c", 00:02:13 verbose #1637 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/math/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:02:13 verbose #1638 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/math/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:14 verbose #1639 > 00:02:13 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:02:14 verbose #1640 > 00:02:13 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:02:14 verbose #1641 > 00:02:13 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 124336 } 00:02:14 debug #1642 runtime.execute_with_options_async / { exit_code = 0; output_length = 130364 } 00:02:14 debug #1 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path math.dib --retries 5 00:00:00 debug #1 writeDibCode / output: Spi / path: math.dib 00:00:00 debug #2 parseDibCode / output: Spi / file: math.dib 00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 verbose #2 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 debug #1 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: math.spi 00:00:00 debug #2 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: math.spi 00:00:00 debug #3 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: math.spi 00:00:00 verbose #4 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # math\nopen testing\nopen rust.rust_operators\nopen rust\n\n/// ## comp...gs = !main args\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/math/math.spi"}} / result: 00:00:00 verbose #5 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/math/math.spi"}} / result: 00:00:01 debug #6 Supervisor.buildFile / AsyncSeq.scan / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("pyo3::Python")>] #endif type pyo3_Python = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fa...v3 (); v2) () 0 let v0 : (unit -> unit) = closure0() let tests () = v0 () let v1 : ((string []) -> int32) = closure8() let main args = v1 args () / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: math.spi 00:00:01 debug #7 Supervisor.buildFile / takeWhileInclusive / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("pyo3::Python")>] #endif type pyo3_Python = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fa...v3 (); v2) () 0 let v0 : (unit -> unit) = closure0() let tests () = v0 () let v1 : ((string []) -> int32) = closure8() let main args = v1 args () / errors: [] / typeErrorCount: 0 / retry: 0 / path: math.spi 00:00:01 debug #8 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:00 debug #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: math / hash: / code.Length: 133363 00:00:00 debug #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj 00:00:00 debug #1 runtime.execute_with_options_async / { options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/lib/math/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/math" } } 00:00:00 verbose #2 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET 00:00:00 verbose #3 > Determining projects to restore... 00:00:01 verbose #4 > Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b 00:00:01 verbose #5 > The last full restore is still up to date. Nothing left to do. 00:00:01 verbose #6 > Total time taken: 0 milliseconds 00:00:01 verbose #7 > Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b 00:00:01 verbose #8 > Restoring /home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj 00:00:01 verbose #9 > Starting restore process. 00:00:02 verbose #10 > Total time taken: 0 milliseconds 00:00:02 verbose #11 > Restored /home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj (in 281 ms). 00:00:02 verbose #12 > /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [/home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj] 00:00:13 verbose #13 > math -> /home/runner/work/polyglot/polyglot/target/Builder/math/bin/Release/net9.0/linux-x64/math.dll 00:00:13 verbose #14 > math -> /home/runner/work/polyglot/polyglot/lib/math/dist 00:00:13 debug #15 runtime.execute_with_options_async / { exit_code = 0; output_length = 1049 } targetDir: /home/runner/work/polyglot/polyglot/target/Builder/math Fable 4.19.3: F# to Rust compiler (status: alpha) Thanks to the contributor! @ptrelford Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target/Builder/math/math.fsproj... target/Builder/math> dotnet restore math.fable-temp.csproj -p:FABLE_COMPILER=true -p:FABLE_COMPILER_4=true -p:FABLE_COMPILER_RUST=true -p:_LINUX=true Determining projects to restore... Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b The last full restore is still up to date. Nothing left to do. Total time taken: 0 milliseconds Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b Restoring /home/runner/work/polyglot/polyglot/target/Builder/math/math.fable-temp.csproj Starting restore process. Total time taken: 0 milliseconds Restored /home/runner/work/polyglot/polyglot/target/Builder/math/math.fable-temp.csproj (in 302 ms). target/Builder/math> dotnet restore /home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj Determining projects to restore... Restored /home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj (in 292 ms). Project and references (14 source files) parsed in 4960ms Started Fable compilation... Fable compilation finished in 6845ms ./lib/spiral/date_time.fsx(1012,0): (1012,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/async_.fsx(76,0): (76,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/sm.fsx(414,0): (414,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/threading.fsx(145,0): (145,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/common.fsx(1425,0): (1425,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/crypto.fsx(1326,0): (1326,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/platform.fsx(104,0): (104,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/networking.fsx(4626,0): (4626,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/trace.fsx(1524,0): (1524,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/runtime.fsx(7219,0): (7219,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/file_system.fsx(11479,0): (11479,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./target/Builder/math/math.fs(33,0): (35,3) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! Downloading crates ... Downloaded bytemuck v1.17.1 Downloaded simba v0.8.1 Downloaded rand_distr v0.4.3 Downloaded float-cmp v0.9.0 Downloaded safe_arch v0.7.2 Downloaded approx v0.5.1 Downloaded wide v0.7.28 Downloaded statrs v0.17.1 Downloaded rawpointer v0.2.1 Downloaded nalgebra-macros v0.2.2 Downloaded nalgebra v0.32.6 Downloaded matrixmultiply v0.3.9 Compiling target-lexicon v0.12.16 Compiling libm v0.2.8 Compiling num-traits v0.2.19 Compiling syn v2.0.76 Compiling rand_core v0.6.4 Compiling bytemuck v1.17.1 Compiling paste v1.0.15 Compiling pyo3-build-config v0.22.2 Compiling futures-core v0.3.30 Compiling futures-channel v0.3.30 Compiling safe_arch v0.7.2 Compiling matrixmultiply v0.3.9 Compiling futures-io v0.3.30 Compiling wide v0.7.28 Compiling num-complex v0.4.6 Compiling num-integer v0.1.46 Compiling pyo3-macros-backend v0.22.2 Compiling pyo3-ffi v0.22.2 Compiling approx v0.5.1 Compiling memoffset v0.9.1 Compiling rawpointer v0.2.1 Compiling simba v0.8.1 Compiling num-rational v0.4.2 Compiling pyo3 v0.22.2 Compiling chrono v0.4.38 Compiling zerocopy-derive v0.7.35 Compiling zerocopy v0.7.35 Compiling ppv-lite86 v0.2.20 Compiling futures-macro v0.3.30 Compiling rand_chacha v0.3.1 Compiling futures-util v0.3.30 Compiling rand v0.8.5 Compiling nalgebra-macros v0.2.2 Compiling pyo3-macros v0.22.2 Compiling rand_distr v0.4.3 Compiling nalgebra v0.32.6 Compiling unindent v0.2.3 Compiling once_cell v1.19.0 Compiling indoc v2.0.5 Compiling float-cmp v0.9.0 Compiling futures-executor v0.3.30 Compiling futures v0.3.30 Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust) Compiling statrs v0.17.1 Compiling math v0.0.1 (/home/runner/work/polyglot/polyglot/lib/math) Finished `release` profile [optimized] target(s) in 23.14s Running unittests math.rs (/home/runner/work/polyglot/polyglot/workspace/target/release/deps/math-3f14260dc74185c8) running 12 tests test module_b7a9935b::Math::test_behavior_near_origin___ ... ok test module_b7a9935b::Math::test_critical_strip ... ok test module_b7a9935b::Math::test_non_trivial_zero___ ... ok test module_b7a9935b::Math::test_euler_product_formula ... ok test module_b7a9935b::Math::test_real_part_greater_than_one___ ... ok test module_b7a9935b::Math::test_symmetry_across_real_axis___ ... ok test module_b7a9935b::Math::test_zeta_at_1___ ... ok test module_b7a9935b::Math::test_zeta_at_2_minus2 ... ok test module_b7a9935b::Math::test_zeta_at_known_values_ ... ok test module_b7a9935b::Math::test_reflection_formula_for_specific_value ... ok test module_b7a9935b::Math::test_imaginary_axis ... ok test module_b7a9935b::Math::test_trivial_zero_at_negative_even___ ... ok test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.20s
In [ ]:
{ pwsh ../apps/plot/build.ps1 } | Invoke-Block
Downloading crates ... Downloaded plotters-backend v0.3.6 Downloaded plotters-svg v0.3.6 Downloaded plotters v0.3.6 Compiling num-traits v0.2.19 Compiling futures-core v0.3.30 Compiling futures-io v0.3.30 Compiling getrandom v0.2.15 Compiling futures-channel v0.3.30 Compiling plotters-backend v0.3.6 Compiling uuid v1.10.0 Compiling futures-util v0.3.30 Compiling plotters-svg v0.3.6 Compiling chrono v0.4.38 Compiling plotters v0.3.6 Compiling futures-executor v0.3.30 Compiling futures v0.3.30 Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust) Compiling plot v0.0.1 (/home/runner/work/polyglot/polyglot/apps/plot) Finished `release` profile [optimized] target(s) in 12.56s
In [ ]:
{ pwsh ../apps/perf/build.ps1 } | Invoke-Block
00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 debug #1 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path Perf.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:00 verbose #2 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Perf.dib", "--retries", "3"])) } 00:00:00 verbose #3 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:00:00 verbose #4 > "repl", 00:00:00 verbose #5 > "--exit-after-run", 00:00:00 verbose #6 > "--run", 00:00:00 verbose #7 > "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib", 00:00:00 verbose #8 > "--output-path", 00:00:00 verbose #9 > "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb", 00:00:00 verbose #10 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:01 verbose #11 > > 00:00:01 verbose #12 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:01 verbose #13 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:01 verbose #14 > > │ # Perf (Polyglot) │ 00:00:01 verbose #15 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #16 > > 00:00:16 verbose #17 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #18 > > //// test 00:00:16 verbose #19 > > 00:00:16 verbose #20 > > open testing 00:00:16 verbose #21 > > open benchmark 00:00:16 verbose #22 > > 00:00:16 verbose #23 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #24 > > #if !INTERACTIVE 00:00:16 verbose #25 > > open Lib 00:00:16 verbose #26 > > #endif 00:00:16 verbose #27 > > 00:00:16 verbose #28 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 verbose #29 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:16 verbose #30 > > │ ## TestCaseResult │ 00:00:16 verbose #31 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #32 > > 00:00:16 verbose #33 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #34 > > type TestCaseResult = 00:00:16 verbose #35 > > { 00:00:16 verbose #36 > > Input: string 00:00:16 verbose #37 > > Expected: string 00:00:16 verbose #38 > > Result: string 00:00:16 verbose #39 > > TimeList: int64 list 00:00:16 verbose #40 > > } 00:00:16 verbose #41 > > 00:00:16 verbose #42 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 verbose #43 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:16 verbose #44 > > │ ## run │ 00:00:16 verbose #45 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #46 > > 00:00:16 verbose #47 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #48 > > let run count (solutions: (string * ('TInput -> 'TExpected)) list) (input, 00:00:16 verbose #49 > > expected) = 00:00:16 verbose #50 > > let inputStr = 00:00:16 verbose #51 > > match box input with 00:00:16 verbose #52 > > | :? System.Collections.ICollection as input -> 00:00:16 verbose #53 > > System.Linq.Enumerable.Cast<obj> input 00:00:16 verbose #54 > > |> Seq.map string 00:00:16 verbose #55 > > |> SpiralSm.concat "," 00:00:16 verbose #56 > > | _ -> input.ToString () 00:00:16 verbose #57 > > 00:00:16 verbose #58 > > printfn "" 00:00:16 verbose #59 > > printfn $"Solution: {inputStr} " 00:00:16 verbose #60 > > 00:00:16 verbose #61 > > let performanceInvoke (fn: unit -> 'T) = 00:00:16 verbose #62 > > GC.Collect () 00:00:16 verbose #63 > > let stopwatch = System.Diagnostics.Stopwatch () 00:00:16 verbose #64 > > stopwatch.Start () 00:00:16 verbose #65 > > let time1 = stopwatch.ElapsedMilliseconds 00:00:16 verbose #66 > > 00:00:16 verbose #67 > > let result = 00:00:16 verbose #68 > > [[| 0 .. count |]] 00:00:16 verbose #69 > > |> Array.Parallel.map (fun _ -> 00:00:16 verbose #70 > > fn () 00:00:16 verbose #71 > > ) 00:00:16 verbose #72 > > |> Array.last 00:00:16 verbose #73 > > 00:00:16 verbose #74 > > let time2 = stopwatch.ElapsedMilliseconds - time1 00:00:16 verbose #75 > > 00:00:16 verbose #76 > > result, time2 00:00:16 verbose #77 > > 00:00:16 verbose #78 > > let resultsWithTime = 00:00:16 verbose #79 > > solutions 00:00:16 verbose #80 > > |> List.mapi (fun i (testName, solution) -> 00:00:16 verbose #81 > > let result, time = performanceInvoke (fun () -> solution input) 00:00:16 verbose #82 > > printfn $"Test case %d{i + 1}. %s{testName}. Time: %A{time} " 00:00:16 verbose #83 > > result, time 00:00:16 verbose #84 > > ) 00:00:16 verbose #85 > > 00:00:16 verbose #86 > > 00:00:16 verbose #87 > > match resultsWithTime |> List.map fst with 00:00:16 verbose #88 > > | ([[]] | [[ _ ]]) -> () 00:00:16 verbose #89 > > | (head :: tail) when tail |> List.forall ((=) head) -> () 00:00:16 verbose #90 > > | results -> failwithf $"Challenge error: %A{results}" 00:00:16 verbose #91 > > 00:00:16 verbose #92 > > { 00:00:16 verbose #93 > > Input = inputStr 00:00:16 verbose #94 > > Expected = expected.ToString () 00:00:16 verbose #95 > > Result = resultsWithTime |> Seq.map fst |> Seq.head |> _.ToString() 00:00:16 verbose #96 > > TimeList = resultsWithTime |> List.map snd 00:00:16 verbose #97 > > } 00:00:16 verbose #98 > > 00:00:16 verbose #99 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 verbose #100 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:16 verbose #101 > > │ ## runAll │ 00:00:16 verbose #102 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #103 > > 00:00:16 verbose #104 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #105 > > let runAll testName count (solutions: (string * ('TInput -> 'TExpected)) list) 00:00:16 verbose #106 > > testCases = 00:00:16 verbose #107 > > printfn "" 00:00:16 verbose #108 > > printfn "" 00:00:16 verbose #109 > > printfn $"Test: {testName}" 00:00:16 verbose #110 > > testCases 00:00:16 verbose #111 > > |> Seq.map (run count solutions) 00:00:16 verbose #112 > > |> Seq.toList 00:00:16 verbose #113 > > 00:00:16 verbose #114 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 verbose #115 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:16 verbose #116 > > │ ## sortResultList │ 00:00:16 verbose #117 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #118 > > 00:00:16 verbose #119 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #120 > > let sortResultList resultList = 00:00:16 verbose #121 > > let table = 00:00:16 verbose #122 > > let rows = 00:00:16 verbose #123 > > resultList 00:00:16 verbose #124 > > |> List.map (fun result -> 00:00:16 verbose #125 > > let best = 00:00:16 verbose #126 > > result.TimeList 00:00:16 verbose #127 > > |> List.mapi (fun i time -> 00:00:16 verbose #128 > > i + 1, time 00:00:16 verbose #129 > > ) 00:00:16 verbose #130 > > |> List.sortBy snd 00:00:16 verbose #131 > > |> List.head 00:00:16 verbose #132 > > |> _.ToString() 00:00:16 verbose #133 > > let row = 00:00:16 verbose #134 > > [[ 00:00:16 verbose #135 > > result.Input 00:00:16 verbose #136 > > result.Expected 00:00:16 verbose #137 > > result.Result 00:00:16 verbose #138 > > best 00:00:16 verbose #139 > > ]] 00:00:16 verbose #140 > > let color = 00:00:16 verbose #141 > > match result.Expected = result.Result with 00:00:16 verbose #142 > > | true -> Some ConsoleColor.DarkGreen 00:00:16 verbose #143 > > | false -> Some ConsoleColor.DarkRed 00:00:16 verbose #144 > > row, color 00:00:16 verbose #145 > > ) 00:00:16 verbose #146 > > let header = 00:00:16 verbose #147 > > [[ 00:00:16 verbose #148 > > [[ 00:00:16 verbose #149 > > "Input" 00:00:16 verbose #150 > > "Expected" 00:00:16 verbose #151 > > "Result" 00:00:16 verbose #152 > > "Best" 00:00:16 verbose #153 > > ]] 00:00:16 verbose #154 > > [[ 00:00:16 verbose #155 > > "---" 00:00:16 verbose #156 > > "---" 00:00:16 verbose #157 > > "---" 00:00:16 verbose #158 > > "---" 00:00:16 verbose #159 > > ]] 00:00:16 verbose #160 > > ]] 00:00:16 verbose #161 > > |> List.map (fun row -> row, None) 00:00:16 verbose #162 > > header @ rows 00:00:16 verbose #163 > > 00:00:16 verbose #164 > > let formattedTable = 00:00:16 verbose #165 > > let lengthMap = 00:00:16 verbose #166 > > table 00:00:16 verbose #167 > > |> List.map fst 00:00:16 verbose #168 > > |> List.transpose 00:00:16 verbose #169 > > |> List.map (fun column -> 00:00:16 verbose #170 > > column 00:00:16 verbose #171 > > |> List.map String.length 00:00:16 verbose #172 > > |> List.sortDescending 00:00:16 verbose #173 > > |> List.tryHead 00:00:16 verbose #174 > > |> Option.defaultValue 0 00:00:16 verbose #175 > > ) 00:00:16 verbose #176 > > |> List.indexed 00:00:16 verbose #177 > > |> Map.ofList 00:00:16 verbose #178 > > table 00:00:16 verbose #179 > > |> List.map (fun (row, color) -> 00:00:16 verbose #180 > > let newRow = 00:00:16 verbose #181 > > row 00:00:16 verbose #182 > > |> List.mapi (fun i cell -> 00:00:16 verbose #183 > > cell.PadRight lengthMap.[[i]] 00:00:16 verbose #184 > > ) 00:00:16 verbose #185 > > newRow, color 00:00:16 verbose #186 > > ) 00:00:16 verbose #187 > > 00:00:16 verbose #188 > > printfn "" 00:00:16 verbose #189 > > formattedTable 00:00:16 verbose #190 > > |> List.iter (fun (row, color) -> 00:00:16 verbose #191 > > match color with 00:00:16 verbose #192 > > | Some color -> Console.ForegroundColor <- color 00:00:16 verbose #193 > > | None -> Console.ResetColor () 00:00:16 verbose #194 > > 00:00:16 verbose #195 > > printfn "%s" (String.Join ("\t| ", row)) 00:00:16 verbose #196 > > 00:00:16 verbose #197 > > Console.ResetColor () 00:00:16 verbose #198 > > ) 00:00:16 verbose #199 > > 00:00:16 verbose #200 > > let averages = 00:00:16 verbose #201 > > resultList 00:00:16 verbose #202 > > |> List.map (fun result -> result.TimeList |> List.map float) 00:00:16 verbose #203 > > |> List.transpose 00:00:16 verbose #204 > > |> List.map List.average 00:00:16 verbose #205 > > |> List.map int64 00:00:16 verbose #206 > > |> List.indexed 00:00:16 verbose #207 > > 00:00:16 verbose #208 > > printfn "" 00:00:16 verbose #209 > > printfn "Average Ranking " 00:00:16 verbose #210 > > averages 00:00:16 verbose #211 > > |> List.sortBy snd 00:00:16 verbose #212 > > |> List.iter (fun (i, avg) -> 00:00:16 verbose #213 > > printfn $"Test case %d{i + 1}. Average Time: %A{avg} " 00:00:16 verbose #214 > > ) 00:00:16 verbose #215 > > 00:00:16 verbose #216 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #217 > > let mutable _count = 00:00:16 verbose #218 > > if ("CI" |> System.Environment.GetEnvironmentVariable |> fun x -> $"%A{x}") 00:00:16 verbose #219 > > <> "<null>" 00:00:16 verbose #220 > > then 2000000 00:00:16 verbose #221 > > else 2000 00:00:16 verbose #222 > > 00:00:16 verbose #223 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #224 > > inl is_fast () = 00:00:16 verbose #225 > > false 00:00:16 verbose #226 > > 00:00:16 verbose #227 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 verbose #228 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:16 verbose #229 > > │ ## empty3Tests │ 00:00:16 verbose #230 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #231 > > 00:00:16 verbose #232 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 verbose #233 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:16 verbose #234 > > │ Test: Empty3 │ 00:00:16 verbose #235 > > │ │ 00:00:16 verbose #236 > > │ Solution: (a, a) │ 00:00:16 verbose #237 > > │ Test case 1. A. Time: 91L │ 00:00:16 verbose #238 > > │ │ 00:00:16 verbose #239 > > │ Solution: (a, a) │ 00:00:16 verbose #240 > > │ Test case 1. A. Time: 56L │ 00:00:16 verbose #241 > > │ │ 00:00:16 verbose #242 > > │ Input | Expected | Result | Best │ 00:00:16 verbose #243 > > │ --- | --- | --- | --- │ 00:00:16 verbose #244 > > │ (a, a) | a | a | (1, 91) │ 00:00:16 verbose #245 > > │ (a, a) | a | a | (1, 56) │ 00:00:16 verbose #246 > > │ │ 00:00:16 verbose #247 > > │ Averages │ 00:00:16 verbose #248 > > │ Test case 1. Average Time: 73L │ 00:00:16 verbose #249 > > │ │ 00:00:16 verbose #250 > > │ Ranking │ 00:00:16 verbose #251 > > │ Test case 1. Average Time: 73L │ 00:00:16 verbose #252 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #253 > > 00:00:16 verbose #254 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #255 > > //// test 00:00:16 verbose #256 > > 00:00:16 verbose #257 > > let solutions = [[ 00:00:16 verbose #258 > > "A", 00:00:16 verbose #259 > > fun (a, _b) -> 00:00:16 verbose #260 > > a 00:00:16 verbose #261 > > ]] 00:00:16 verbose #262 > > let testCases = seq { 00:00:16 verbose #263 > > ("a", "a"), "a" 00:00:16 verbose #264 > > ("a", "a"), "a" 00:00:16 verbose #265 > > } 00:00:16 verbose #266 > > let rec empty3Tests = runAll (nameof empty3Tests) _count solutions testCases 00:00:16 verbose #267 > > empty3Tests 00:00:16 verbose #268 > > |> sortResultList 00:00:17 verbose #269 > > 00:00:17 verbose #270 > > ╭─[ 408.44ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:17 verbose #271 > > │ │ 00:00:17 verbose #272 > > │ │ 00:00:17 verbose #273 > > │ Test: empty3Tests │ 00:00:17 verbose #274 > > │ │ 00:00:17 verbose #275 > > │ Solution: (a, a) │ 00:00:17 verbose #276 > > │ Test case 1. A. Time: 37L │ 00:00:17 verbose #277 > > │ │ 00:00:17 verbose #278 > > │ Solution: (a, a) │ 00:00:17 verbose #279 > > │ Test case 1. A. Time: 27L │ 00:00:17 verbose #280 > > │ │ 00:00:17 verbose #281 > > │ Input | Expected | Result | Best │ 00:00:17 verbose #282 > > │ --- | --- | --- | --- │ 00:00:17 verbose #283 > > │ (a, a) | a | a | (1, 37) │ 00:00:17 verbose #284 > > │ (a, a) | a | a | (1, 27) │ 00:00:17 verbose #285 > > │ │ 00:00:17 verbose #286 > > │ Average Ranking │ 00:00:17 verbose #287 > > │ Test case 1. Average Time: 32L │ 00:00:17 verbose #288 > > │ │ 00:00:17 verbose #289 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:17 verbose #290 > > 00:00:17 verbose #291 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:17 verbose #292 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:17 verbose #293 > > │ ## empty2Tests │ 00:00:17 verbose #294 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:17 verbose #295 > > 00:00:17 verbose #296 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:17 verbose #297 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:17 verbose #298 > > │ Test: Empty2 │ 00:00:17 verbose #299 > > │ │ 00:00:17 verbose #300 > > │ Solution: (a, a) │ 00:00:17 verbose #301 > > │ Test case 1. A. Time: 59L │ 00:00:17 verbose #302 > > │ │ 00:00:17 verbose #303 > > │ Solution: (a, a) │ 00:00:17 verbose #304 > > │ Test case 1. A. Time: 53L │ 00:00:17 verbose #305 > > │ │ 00:00:17 verbose #306 > > │ Input | Expected | Result | Best │ 00:00:17 verbose #307 > > │ --- | --- | --- | --- │ 00:00:17 verbose #308 > > │ (a, a) | a | a | (1, 59) │ 00:00:17 verbose #309 > > │ (a, a) | a | a | (1, 53) │ 00:00:17 verbose #310 > > │ │ 00:00:17 verbose #311 > > │ Averages │ 00:00:17 verbose #312 > > │ Test case 1. Average Time: 56L │ 00:00:17 verbose #313 > > │ │ 00:00:17 verbose #314 > > │ Ranking │ 00:00:17 verbose #315 > > │ Test case 1. Average Time: 56L │ 00:00:17 verbose #316 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:17 verbose #317 > > 00:00:17 verbose #318 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:17 verbose #319 > > //// test 00:00:17 verbose #320 > > 00:00:17 verbose #321 > > let solutions = [[ 00:00:17 verbose #322 > > "A", 00:00:17 verbose #323 > > fun (a, _b) -> 00:00:17 verbose #324 > > a 00:00:17 verbose #325 > > ]] 00:00:17 verbose #326 > > let testCases = seq { 00:00:17 verbose #327 > > ("a", "a"), "a" 00:00:17 verbose #328 > > ("a", "a"), "a" 00:00:17 verbose #329 > > } 00:00:17 verbose #330 > > let rec empty2Tests = runAll (nameof empty2Tests) _count solutions testCases 00:00:17 verbose #331 > > empty2Tests 00:00:17 verbose #332 > > |> sortResultList 00:00:17 verbose #333 > > 00:00:17 verbose #334 > > ╭─[ 380.29ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:17 verbose #335 > > │ │ 00:00:17 verbose #336 > > │ │ 00:00:17 verbose #337 > > │ Test: empty2Tests │ 00:00:17 verbose #338 > > │ │ 00:00:17 verbose #339 > > │ Solution: (a, a) │ 00:00:17 verbose #340 > > │ Test case 1. A. Time: 24L │ 00:00:17 verbose #341 > > │ │ 00:00:17 verbose #342 > > │ Solution: (a, a) │ 00:00:17 verbose #343 > > │ Test case 1. A. Time: 32L │ 00:00:17 verbose #344 > > │ │ 00:00:17 verbose #345 > > │ Input | Expected | Result | Best │ 00:00:17 verbose #346 > > │ --- | --- | --- | --- │ 00:00:17 verbose #347 > > │ (a, a) | a | a | (1, 24) │ 00:00:17 verbose #348 > > │ (a, a) | a | a | (1, 32) │ 00:00:17 verbose #349 > > │ │ 00:00:17 verbose #350 > > │ Average Ranking │ 00:00:17 verbose #351 > > │ Test case 1. Average Time: 28L │ 00:00:17 verbose #352 > > │ │ 00:00:17 verbose #353 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:17 verbose #354 > > 00:00:17 verbose #355 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:17 verbose #356 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:17 verbose #357 > > │ ## emptyTests │ 00:00:17 verbose #358 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:17 verbose #359 > > 00:00:17 verbose #360 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:17 verbose #361 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:17 verbose #362 > > │ Test: Empty │ 00:00:17 verbose #363 > > │ │ 00:00:17 verbose #364 > > │ Solution: 0 │ 00:00:17 verbose #365 > > │ Test case 1. A. Time: 61L │ 00:00:17 verbose #366 > > │ │ 00:00:17 verbose #367 > > │ Solution: 2 │ 00:00:17 verbose #368 > > │ Test case 1. A. Time: 62L │ 00:00:17 verbose #369 > > │ │ 00:00:17 verbose #370 > > │ Solution: 5 │ 00:00:17 verbose #371 > > │ Test case 1. A. Time: 70L │ 00:00:17 verbose #372 > > │ │ 00:00:17 verbose #373 > > │ Input | Expected | Result | Best │ 00:00:17 verbose #374 > > │ --- | --- | --- | --- │ 00:00:17 verbose #375 > > │ 0 | 0 | 0 | (1, 61) │ 00:00:17 verbose #376 > > │ 2 | 2 | 2 | (1, 62) │ 00:00:17 verbose #377 > > │ 5 | 5 | 5 | (1, 70) │ 00:00:17 verbose #378 > > │ │ 00:00:17 verbose #379 > > │ Averages │ 00:00:17 verbose #380 > > │ Test case 1. Average Time: 64L │ 00:00:17 verbose #381 > > │ │ 00:00:17 verbose #382 > > │ Ranking │ 00:00:17 verbose #383 > > │ Test case 1. Average Time: 64L │ 00:00:17 verbose #384 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:17 verbose #385 > > 00:00:17 verbose #386 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:17 verbose #387 > > //// test 00:00:17 verbose #388 > > 00:00:17 verbose #389 > > let solutions = [[ 00:00:17 verbose #390 > > "A", 00:00:17 verbose #391 > > fun n -> 00:00:17 verbose #392 > > n + 0 00:00:17 verbose #393 > > ]] 00:00:17 verbose #394 > > let testCases = seq { 00:00:17 verbose #395 > > 0, 0 00:00:17 verbose #396 > > 2, 2 00:00:17 verbose #397 > > 5, 5 00:00:17 verbose #398 > > } 00:00:17 verbose #399 > > let rec emptyTests = runAll (nameof emptyTests) _count solutions testCases 00:00:17 verbose #400 > > emptyTests 00:00:17 verbose #401 > > |> sortResultList 00:00:18 verbose #402 > > 00:00:18 verbose #403 > > ╭─[ 555.23ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:18 verbose #404 > > │ │ 00:00:18 verbose #405 > > │ │ 00:00:18 verbose #406 > > │ Test: emptyTests │ 00:00:18 verbose #407 > > │ │ 00:00:18 verbose #408 > > │ Solution: 0 │ 00:00:18 verbose #409 > > │ Test case 1. A. Time: 26L │ 00:00:18 verbose #410 > > │ │ 00:00:18 verbose #411 > > │ Solution: 2 │ 00:00:18 verbose #412 > > │ Test case 1. A. Time: 36L │ 00:00:18 verbose #413 > > │ │ 00:00:18 verbose #414 > > │ Solution: 5 │ 00:00:18 verbose #415 > > │ Test case 1. A. Time: 24L │ 00:00:18 verbose #416 > > │ │ 00:00:18 verbose #417 > > │ Input | Expected | Result | Best │ 00:00:18 verbose #418 > > │ --- | --- | --- | --- │ 00:00:18 verbose #419 > > │ 0 | 0 | 0 | (1, 26) │ 00:00:18 verbose #420 > > │ 2 | 2 | 2 | (1, 36) │ 00:00:18 verbose #421 > > │ 5 | 5 | 5 | (1, 24) │ 00:00:18 verbose #422 > > │ │ 00:00:18 verbose #423 > > │ Average Ranking │ 00:00:18 verbose #424 > > │ Test case 1. Average Time: 28L │ 00:00:18 verbose #425 > > │ │ 00:00:18 verbose #426 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:18 verbose #427 > > 00:00:18 verbose #428 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:18 verbose #429 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:18 verbose #430 > > │ ## uniqueLettersTests │ 00:00:18 verbose #431 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:18 verbose #432 > > 00:00:18 verbose #433 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:18 verbose #434 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:18 verbose #435 > > │ Test: UniqueLetters │ 00:00:18 verbose #436 > > │ │ 00:00:18 verbose #437 > > │ Solution: abc │ 00:00:18 verbose #438 > > │ Test case 1. A. Time: 1512L │ 00:00:18 verbose #439 > > │ Test case 2. B. Time: 1947L │ 00:00:18 verbose #440 > > │ Test case 3. C. Time: 2023L │ 00:00:18 verbose #441 > > │ Test case 4. D. Time: 1358L │ 00:00:18 verbose #442 > > │ Test case 5. E. Time: 1321L │ 00:00:18 verbose #443 > > │ Test case 6. F. Time: 1346L │ 00:00:18 verbose #444 > > │ Test case 7. G. Time: 1304L │ 00:00:18 verbose #445 > > │ Test case 8. H. Time: 1383L │ 00:00:18 verbose #446 > > │ Test case 9. I. Time: 1495L │ 00:00:18 verbose #447 > > │ Test case 10. J. Time: 1245L │ 00:00:18 verbose #448 > > │ Test case 11. K. Time: 1219L │ 00:00:18 verbose #449 > > │ │ 00:00:18 verbose #450 > > │ Solution: accabb │ 00:00:18 verbose #451 > > │ Test case 1. A. Time: 1648L │ 00:00:18 verbose #452 > > │ Test case 2. B. Time: 2061L │ 00:00:18 verbose #453 > > │ Test case 3. C. Time: 2413L │ 00:00:18 verbose #454 > > │ Test case 4. D. Time: 1561L │ 00:00:18 verbose #455 > > │ Test case 5. E. Time: 1593L │ 00:00:18 verbose #456 > > │ Test case 6. F. Time: 1518L │ 00:00:18 verbose #457 > > │ Test case 7. G. Time: 1415L │ 00:00:18 verbose #458 > > │ Test case 8. H. Time: 1510L │ 00:00:18 verbose #459 > > │ Test case 9. I. Time: 1445L │ 00:00:18 verbose #460 > > │ Test case 10. J. Time: 1636L │ 00:00:18 verbose #461 > > │ Test case 11. K. Time: 1317L │ 00:00:18 verbose #462 > > │ │ 00:00:18 verbose #463 > > │ Solution: pprrqqpp │ 00:00:18 verbose #464 > > │ Test case 1. A. Time: 2255L │ 00:00:18 verbose #465 > > │ Test case 2. B. Time: 2408L │ 00:00:18 verbose #466 > > │ Test case 3. C. Time: 2393L │ 00:00:18 verbose #467 > > │ Test case 4. D. Time: 1675L │ 00:00:18 verbose #468 > > │ Test case 5. E. Time: 1911L │ 00:00:18 verbose #469 > > │ Test case 6. F. Time: 2126L │ 00:00:18 verbose #470 > > │ Test case 7. G. Time: 1504L │ 00:00:18 verbose #471 > > │ Test case 8. H. Time: 1715L │ 00:00:18 verbose #472 > > │ Test case 9. I. Time: 1537L │ 00:00:18 verbose #473 > > │ Test case 10. J. Time: 1522L │ 00:00:18 verbose #474 > > │ Test case 11. K. Time: 1322L │ 00:00:18 verbose #475 > > │ │ 00:00:18 verbose #476 > > │ Solution: │ 00:00:18 verbose #477 > > │ aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbb │ 00:00:18 verbose #478 > > │ bbb │ 00:00:18 verbose #479 > > │ Test case 1. A. Time: 13073L │ 00:00:18 verbose #480 > > │ Test case 2. B. Time: 11519L │ 00:00:18 verbose #481 > > │ Test case 3. C. Time: 8373L │ 00:00:18 verbose #482 > > │ Test case 4. D. Time: 5860L │ 00:00:18 verbose #483 > > │ Test case 5. E. Time: 6490L │ 00:00:18 verbose #484 > > │ Test case 6. F. Time: 6325L │ 00:00:18 verbose #485 > > │ Test case 7. G. Time: 5799L │ 00:00:18 verbose #486 > > │ Test case 8. H. Time: 7099L │ 00:00:18 verbose #487 > > │ Test case 9. I. Time: 6133L │ 00:00:18 verbose #488 > > │ Test case 10. J. Time: 5993L │ 00:00:18 verbose #489 > > │ Test case 11. K. Time: 2040L │ 00:00:18 verbose #490 > > │ │ 00:00:18 verbose #491 > > │ Input │ 00:00:18 verbose #492 > > │ | Expected | Result | Best │ 00:00:18 verbose #493 > > │ --- │ 00:00:18 verbose #494 > > │ │ 00:00:18 verbose #495 > > │ | --- | --- | --- │ 00:00:18 verbose #496 > > │ abc │ 00:00:18 verbose #497 > > │ │ 00:00:18 verbose #498 > > │ | abc | abc | (11, 1219) │ 00:00:18 verbose #499 > > │ accabb │ 00:00:18 verbose #500 > > │ | acb | acb | (11, 1317) │ 00:00:18 verbose #501 > > │ pprrqqpp │ 00:00:18 verbose #502 > > │ | prq | prq | (11, 1322) │ 00:00:18 verbose #503 > > │ aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbb │ 00:00:18 verbose #504 > > │ bbb | acb | acb | (11, 2040) │ 00:00:18 verbose #505 > > │ │ 00:00:18 verbose #506 > > │ Averages │ 00:00:18 verbose #507 > > │ Test case 1. Average Time: 4622L │ 00:00:18 verbose #508 > > │ Test case 2. Average Time: 4483L │ 00:00:18 verbose #509 > > │ Test case 3. Average Time: 3800L │ 00:00:18 verbose #510 > > │ Test case 4. Average Time: 2613L │ 00:00:18 verbose #511 > > │ Test case 5. Average Time: 2828L │ 00:00:18 verbose #512 > > │ Test case 6. Average Time: 2828L │ 00:00:18 verbose #513 > > │ Test case 7. Average Time: 2505L │ 00:00:18 verbose #514 > > │ Test case 8. Average Time: 2926L │ 00:00:18 verbose #515 > > │ Test case 9. Average Time: 2652L │ 00:00:18 verbose #516 > > │ Test case 10. Average Time: 2599L │ 00:00:18 verbose #517 > > │ Test case 11. Average Time: 1474L │ 00:00:18 verbose #518 > > │ │ 00:00:18 verbose #519 > > │ Ranking │ 00:00:18 verbose #520 > > │ Test case 1. Average Time: 4622L │ 00:00:18 verbose #521 > > │ Test case 2. Average Time: 4483L │ 00:00:18 verbose #522 > > │ Test case 3. Average Time: 3800L │ 00:00:18 verbose #523 > > │ Test case 8. Average Time: 2926L │ 00:00:18 verbose #524 > > │ Test case 5. Average Time: 2828L │ 00:00:18 verbose #525 > > │ Test case 6. Average Time: 2828L │ 00:00:18 verbose #526 > > │ Test case 9. Average Time: 2652L │ 00:00:18 verbose #527 > > │ Test case 4. Average Time: 2613L │ 00:00:18 verbose #528 > > │ Test case 10. Average Time: 2599L │ 00:00:18 verbose #529 > > │ Test case 7. Average Time: 2505L │ 00:00:18 verbose #530 > > │ Test case 11. Average Time: 1474L │ 00:00:18 verbose #531 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:18 verbose #532 > > 00:00:18 verbose #533 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:18 verbose #534 > > //// test 00:00:18 verbose #535 > > 00:00:18 verbose #536 > > let solutions = [[ 00:00:18 verbose #537 > > "A", 00:00:18 verbose #538 > > fun input -> 00:00:18 verbose #539 > > input 00:00:18 verbose #540 > > |> Seq.toList 00:00:18 verbose #541 > > |> List.fold (fun acc x -> if List.contains x acc then acc else acc @ [[ 00:00:18 verbose #542 > > x ]]) [[]] 00:00:18 verbose #543 > > |> Seq.toArray 00:00:18 verbose #544 > > |> String 00:00:18 verbose #545 > > 00:00:18 verbose #546 > > "B", 00:00:18 verbose #547 > > fun input -> 00:00:18 verbose #548 > > input 00:00:18 verbose #549 > > |> Seq.rev 00:00:18 verbose #550 > > |> fun list -> Seq.foldBack (fun x acc -> if List.contains x acc then 00:00:18 verbose #551 > > acc else x :: acc) list [[]] 00:00:18 verbose #552 > > |> Seq.rev 00:00:18 verbose #553 > > |> Seq.toArray 00:00:18 verbose #554 > > |> String 00:00:18 verbose #555 > > 00:00:18 verbose #556 > > "C", 00:00:18 verbose #557 > > fun input -> 00:00:18 verbose #558 > > input 00:00:18 verbose #559 > > |> Seq.rev 00:00:18 verbose #560 > > |> fun list -> Seq.foldBack (fun x (set, acc) -> if Set.contains x set 00:00:18 verbose #561 > > then set, acc else set.Add x, x :: acc) list (Set.empty, [[]]) 00:00:18 verbose #562 > > |> snd 00:00:18 verbose #563 > > |> Seq.rev 00:00:18 verbose #564 > > |> Seq.toArray 00:00:18 verbose #565 > > |> String 00:00:18 verbose #566 > > 00:00:18 verbose #567 > > "D", 00:00:18 verbose #568 > > fun input -> 00:00:18 verbose #569 > > input 00:00:18 verbose #570 > > |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc 00:00:18 verbose #571 > > else set.Add x, Array.append acc [[| x |]]) (Set.empty, [[||]]) 00:00:18 verbose #572 > > |> snd 00:00:18 verbose #573 > > |> String 00:00:18 verbose #574 > > 00:00:18 verbose #575 > > "E", 00:00:18 verbose #576 > > fun input -> 00:00:18 verbose #577 > > input 00:00:18 verbose #578 > > |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc 00:00:18 verbose #579 > > else set.Add x, x :: acc) (Set.empty, [[]]) 00:00:18 verbose #580 > > |> snd 00:00:18 verbose #581 > > |> List.rev 00:00:18 verbose #582 > > |> List.toArray 00:00:18 verbose #583 > > |> String 00:00:18 verbose #584 > > 00:00:18 verbose #585 > > "F", 00:00:18 verbose #586 > > fun input -> 00:00:18 verbose #587 > > input 00:00:18 verbose #588 > > |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc 00:00:18 verbose #589 > > else set.Add x, acc @ [[ x ]]) (Set.empty, [[]]) 00:00:18 verbose #590 > > |> snd 00:00:18 verbose #591 > > |> List.toArray 00:00:18 verbose #592 > > |> String 00:00:18 verbose #593 > > 00:00:18 verbose #594 > > "G", 00:00:18 verbose #595 > > fun input -> 00:00:18 verbose #596 > > input 00:00:18 verbose #597 > > |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc 00:00:18 verbose #598 > > else set.Add x, x :: acc) (Set.empty, [[]]) 00:00:18 verbose #599 > > |> snd 00:00:18 verbose #600 > > |> List.toArray 00:00:18 verbose #601 > > |> Array.rev 00:00:18 verbose #602 > > |> String 00:00:18 verbose #603 > > 00:00:18 verbose #604 > > "H", 00:00:18 verbose #605 > > fun input -> 00:00:18 verbose #606 > > input 00:00:18 verbose #607 > > |> Seq.toList 00:00:18 verbose #608 > > |> fun list -> 00:00:18 verbose #609 > > let rec loop set = function 00:00:18 verbose #610 > > | head :: tail when Set.contains head set -> loop set tail 00:00:18 verbose #611 > > | head :: tail -> (loop (set.Add head) tail) @ [[ head ]] 00:00:18 verbose #612 > > | [[]] -> [[]] 00:00:18 verbose #613 > > loop Set.empty list 00:00:18 verbose #614 > > |> List.rev 00:00:18 verbose #615 > > |> List.toArray 00:00:18 verbose #616 > > |> String 00:00:18 verbose #617 > > 00:00:18 verbose #618 > > "I", 00:00:18 verbose #619 > > fun input -> 00:00:18 verbose #620 > > input 00:00:18 verbose #621 > > |> Seq.toList 00:00:18 verbose #622 > > |> fun list -> 00:00:18 verbose #623 > > let rec loop set = function 00:00:18 verbose #624 > > | head :: tail when Set.contains head set -> loop set tail 00:00:18 verbose #625 > > | head :: tail -> loop (set.Add head) tail |> Array.append [[| 00:00:18 verbose #626 > > head |]] 00:00:18 verbose #627 > > | [[]] -> [[||]] 00:00:18 verbose #628 > > loop Set.empty list 00:00:18 verbose #629 > > |> String 00:00:18 verbose #630 > > 00:00:18 verbose #631 > > "J", 00:00:18 verbose #632 > > fun input -> 00:00:18 verbose #633 > > input 00:00:18 verbose #634 > > |> Seq.toList 00:00:18 verbose #635 > > |> fun list -> 00:00:18 verbose #636 > > let rec loop set = function 00:00:18 verbose #637 > > | head :: tail when Set.contains head set -> loop set tail 00:00:18 verbose #638 > > | head :: tail -> head :: loop (set.Add head) tail 00:00:18 verbose #639 > > | [[]] -> [[]] 00:00:18 verbose #640 > > loop Set.empty list 00:00:18 verbose #641 > > |> List.toArray 00:00:18 verbose #642 > > |> String 00:00:18 verbose #643 > > 00:00:18 verbose #644 > > "K", 00:00:18 verbose #645 > > fun input -> 00:00:18 verbose #646 > > input 00:00:18 verbose #647 > > |> Seq.distinct 00:00:18 verbose #648 > > |> Seq.toArray 00:00:18 verbose #649 > > |> String 00:00:18 verbose #650 > > ]] 00:00:18 verbose #651 > > let testCases = seq { 00:00:18 verbose #652 > > "abc", "abc" 00:00:18 verbose #653 > > "accabb", "acb" 00:00:18 verbose #654 > > "pprrqqpp", "prq" 00:00:18 verbose #655 > > 00:00:18 verbose #656 > > "aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb 00:00:18 verbose #657 > > ", "acb" 00:00:18 verbose #658 > > } 00:00:18 verbose #659 > > let rec uniqueLettersTests = runAll (nameof uniqueLettersTests) _count solutions 00:00:18 verbose #660 > > testCases 00:00:18 verbose #661 > > uniqueLettersTests 00:00:18 verbose #662 > > |> sortResultList 00:01:35 verbose #663 > > 00:01:35 verbose #664 > > ╭─[ 1.28m - stdout ]───────────────────────────────────────────────────────────╮ 00:01:35 verbose #665 > > │ │ 00:01:35 verbose #666 > > │ │ 00:01:35 verbose #667 > > │ Test: uniqueLettersTests │ 00:01:35 verbose #668 > > │ │ 00:01:35 verbose #669 > > │ Solution: abc │ 00:01:35 verbose #670 > > │ Test case 1. A. Time: 1118L │ 00:01:35 verbose #671 > > │ Test case 2. B. Time: 1711L │ 00:01:35 verbose #672 > > │ Test case 3. C. Time: 1975L │ 00:01:35 verbose #673 > > │ Test case 4. D. Time: 1236L │ 00:01:35 verbose #674 > > │ Test case 5. E. Time: 1329L │ 00:01:35 verbose #675 > > │ Test case 6. F. Time: 1285L │ 00:01:35 verbose #676 > > │ Test case 7. G. Time: 1271L │ 00:01:35 verbose #677 > > │ Test case 8. H. Time: 1398L │ 00:01:35 verbose #678 > > │ Test case 9. I. Time: 1120L │ 00:01:35 verbose #679 > > │ Test case 10. J. Time: 1189L │ 00:01:35 verbose #680 > > │ Test case 11. K. Time: 1138L │ 00:01:35 verbose #681 > > │ │ 00:01:35 verbose #682 > > │ Solution: accabb │ 00:01:35 verbose #683 > > │ Test case 1. A. Time: 1398L │ 00:01:35 verbose #684 > > │ Test case 2. B. Time: 2029L │ 00:01:35 verbose #685 > > │ Test case 3. C. Time: 2585L │ 00:01:35 verbose #686 > > │ Test case 4. D. Time: 1269L │ 00:01:35 verbose #687 > > │ Test case 5. E. Time: 906L │ 00:01:35 verbose #688 > > │ Test case 6. F. Time: 921L │ 00:01:35 verbose #689 > > │ Test case 7. G. Time: 999L │ 00:01:35 verbose #690 > > │ Test case 8. H. Time: 1017L │ 00:01:35 verbose #691 > > │ Test case 9. I. Time: 941L │ 00:01:35 verbose #692 > > │ Test case 10. J. Time: 877L │ 00:01:35 verbose #693 > > │ Test case 11. K. Time: 829L │ 00:01:35 verbose #694 > > │ │ 00:01:35 verbose #695 > > │ Solution: pprrqqpp │ 00:01:35 verbose #696 > > │ Test case 1. A. Time: 917L │ 00:01:35 verbose #697 > > │ Test case 2. B. Time: 1061L │ 00:01:35 verbose #698 > > │ Test case 3. C. Time: 1426L │ 00:01:35 verbose #699 > > │ Test case 4. D. Time: 992L │ 00:01:35 verbose #700 > > │ Test case 5. E. Time: 1020L │ 00:01:35 verbose #701 > > │ Test case 6. F. Time: 1021L │ 00:01:35 verbose #702 > > │ Test case 7. G. Time: 958L │ 00:01:35 verbose #703 > > │ Test case 8. H. Time: 1110L │ 00:01:35 verbose #704 > > │ Test case 9. I. Time: 1029L │ 00:01:35 verbose #705 > > │ Test case 10. J. Time: 966L │ 00:01:35 verbose #706 > > │ Test case 11. K. Time: 777L │ 00:01:35 verbose #707 > > │ │ 00:01:35 verbose #708 > > │ Solution: │ 00:01:35 verbose #709 > > │ aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbb │ 00:01:35 verbose #710 > > │ bbb │ 00:01:35 verbose #711 > > │ Test case 1. A. Time: 2371L │ 00:01:35 verbose #712 > > │ Test case 2. B. Time: 2544L │ 00:01:35 verbose #713 > > │ Test case 3. C. Time: 4107L │ 00:01:35 verbose #714 > > │ Test case 4. D. Time: 2519L │ 00:01:35 verbose #715 > > │ Test case 5. E. Time: 2561L │ 00:01:35 verbose #716 > > │ Test case 6. F. Time: 2587L │ 00:01:35 verbose #717 > > │ Test case 7. G. Time: 2529L │ 00:01:35 verbose #718 > > │ Test case 8. H. Time: 2616L │ 00:01:35 verbose #719 > > │ Test case 9. I. Time: 2533L │ 00:01:35 verbose #720 > > │ Test case 10. J. Time: 2407L │ 00:01:35 verbose #721 > > │ Test case 11. K. Time: 1282L │ 00:01:35 verbose #722 > > │ │ 00:01:35 verbose #723 > > │ Input │ 00:01:35 verbose #724 > > │ | Expected | Result | Best │ 00:01:35 verbose #725 > > │ --- │ 00:01:35 verbose #726 > > │ | --- | --- | --- │ 00:01:35 verbose #727 > > │ abc │ 00:01:35 verbose #728 > > │ | abc | abc | (1, 1118) │ 00:01:35 verbose #729 > > │ accabb │ 00:01:35 verbose #730 > > │ | acb | acb | (11, 829) │ 00:01:35 verbose #731 > > │ pprrqqpp │ 00:01:35 verbose #732 > > │ | prq | prq | (11, 777) │ 00:01:35 verbose #733 > > │ aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbb │ 00:01:35 verbose #734 > > │ bbb | acb | acb | (11, 1282) │ 00:01:35 verbose #735 > > │ │ 00:01:35 verbose #736 > > │ Average Ranking │ 00:01:35 verbose #737 > > │ Test case 11. Average Time: 1006L │ 00:01:35 verbose #738 > > │ Test case 10. Average Time: 1359L │ 00:01:35 verbose #739 > > │ Test case 9. Average Time: 1405L │ 00:01:35 verbose #740 > > │ Test case 7. Average Time: 1439L │ 00:01:35 verbose #741 > > │ Test case 1. Average Time: 1451L │ 00:01:35 verbose #742 > > │ Test case 6. Average Time: 1453L │ 00:01:35 verbose #743 > > │ Test case 5. Average Time: 1454L │ 00:01:35 verbose #744 > > │ Test case 4. Average Time: 1504L │ 00:01:35 verbose #745 > > │ Test case 8. Average Time: 1535L │ 00:01:35 verbose #746 > > │ Test case 2. Average Time: 1836L │ 00:01:35 verbose #747 > > │ Test case 3. Average Time: 2523L │ 00:01:35 verbose #748 > > │ │ 00:01:35 verbose #749 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:35 verbose #750 > > 00:01:35 verbose #751 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:35 verbose #752 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:35 verbose #753 > > │ ## rotateStringsTests │ 00:01:35 verbose #754 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:35 verbose #755 > > 00:01:35 verbose #756 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:35 verbose #757 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:35 verbose #758 > > │ https://www.hackerrank.com/challenges/rotate-string/forum │ 00:01:35 verbose #759 > > │ │ 00:01:35 verbose #760 > > │ Test: RotateStrings │ 00:01:35 verbose #761 > > │ │ 00:01:35 verbose #762 > > │ Solution: abc │ 00:01:35 verbose #763 > > │ Test case 1. A. Time: 1842L │ 00:01:35 verbose #764 > > │ Test case 2. B. Time: 1846L │ 00:01:35 verbose #765 > > │ Test case 3. C. Time: 1936L │ 00:01:35 verbose #766 > > │ Test case 4. CA. Time: 2224L │ 00:01:35 verbose #767 > > │ Test case 5. CB. Time: 2329L │ 00:01:35 verbose #768 > > │ Test case 6. D. Time: 2474L │ 00:01:35 verbose #769 > > │ Test case 7. E. Time: 1664L │ 00:01:35 verbose #770 > > │ Test case 8. F. Time: 1517L │ 00:01:35 verbose #771 > > │ Test case 9. FA. Time: 1651L │ 00:01:35 verbose #772 > > │ Test case 10. FB. Time: 3764L │ 00:01:35 verbose #773 > > │ Test case 11. FC. Time: 5415L │ 00:01:35 verbose #774 > > │ │ 00:01:35 verbose #775 > > │ Solution: abcde │ 00:01:35 verbose #776 > > │ Test case 1. A. Time: 3356L │ 00:01:35 verbose #777 > > │ Test case 2. B. Time: 2592L │ 00:01:35 verbose #778 > > │ Test case 3. C. Time: 2346L │ 00:01:35 verbose #779 > > │ Test case 4. CA. Time: 2997L │ 00:01:35 verbose #780 > > │ Test case 5. CB. Time: 3061L │ 00:01:35 verbose #781 > > │ Test case 6. D. Time: 4051L │ 00:01:35 verbose #782 > > │ Test case 7. E. Time: 1905L │ 00:01:35 verbose #783 > > │ Test case 8. F. Time: 1771L │ 00:01:35 verbose #784 > > │ Test case 9. FA. Time: 2175L │ 00:01:35 verbose #785 > > │ Test case 10. FB. Time: 3275L │ 00:01:35 verbose #786 > > │ Test case 11. FC. Time: 5266L │ 00:01:35 verbose #787 > > │ │ 00:01:35 verbose #788 > > │ Solution: abcdefghi │ 00:01:35 verbose #789 > > │ Test case 1. A. Time: 4492L │ 00:01:35 verbose #790 > > │ Test case 2. B. Time: 3526L │ 00:01:35 verbose #791 > > │ Test case 3. C. Time: 3583L │ 00:01:35 verbose #792 > > │ Test case 4. CA. Time: 3711L │ 00:01:35 verbose #793 > > │ Test case 5. CB. Time: 4783L │ 00:01:35 verbose #794 > > │ Test case 6. D. Time: 7557L │ 00:01:35 verbose #795 > > │ Test case 7. E. Time: 3452L │ 00:01:35 verbose #796 > > │ Test case 8. F. Time: 3050L │ 00:01:35 verbose #797 > > │ Test case 9. FA. Time: 3275L │ 00:01:35 verbose #798 > > │ Test case 10. FB. Time: 4635L │ 00:01:35 verbose #799 > > │ Test case 11. FC. Time: 5616L │ 00:01:35 verbose #800 > > │ │ 00:01:35 verbose #801 > > │ Solution: abab │ 00:01:35 verbose #802 > > │ Test case 1. A. Time: 2093L │ 00:01:35 verbose #803 > > │ Test case 2. B. Time: 1843L │ 00:01:35 verbose #804 > > │ Test case 3. C. Time: 1746L │ 00:01:35 verbose #805 > > │ Test case 4. CA. Time: 2085L │ 00:01:35 verbose #806 > > │ Test case 5. CB. Time: 2139L │ 00:01:35 verbose #807 > > │ Test case 6. D. Time: 2095L │ 00:01:35 verbose #808 > > │ Test case 7. E. Time: 1723L │ 00:01:35 verbose #809 > > │ Test case 8. F. Time: 1558L │ 00:01:35 verbose #810 > > │ Test case 9. FA. Time: 1620L │ 00:01:35 verbose #811 > > │ Test case 10. FB. Time: 2319L │ 00:01:35 verbose #812 > > │ Test case 11. FC. Time: 3918L │ 00:01:35 verbose #813 > > │ │ 00:01:35 verbose #814 > > │ Solution: aa │ 00:01:35 verbose #815 > > │ Test case 1. A. Time: 1107L │ 00:01:35 verbose #816 > > │ Test case 2. B. Time: 1241L │ 00:01:35 verbose #817 > > │ Test case 3. C. Time: 1183L │ 00:01:35 verbose #818 > > │ Test case 4. CA. Time: 1563L │ 00:01:35 verbose #819 > > │ Test case 5. CB. Time: 1525L │ 00:01:35 verbose #820 > > │ Test case 6. D. Time: 1591L │ 00:01:35 verbose #821 > > │ Test case 7. E. Time: 1327L │ 00:01:35 verbose #822 > > │ Test case 8. F. Time: 1151L │ 00:01:35 verbose #823 > > │ Test case 9. FA. Time: 1180L │ 00:01:35 verbose #824 > > │ Test case 10. FB. Time: 1733L │ 00:01:35 verbose #825 > > │ Test case 11. FC. Time: 2817L │ 00:01:35 verbose #826 > > │ │ 00:01:35 verbose #827 > > │ Solution: z │ 00:01:35 verbose #828 > > │ Test case 1. A. Time: 816L │ 00:01:35 verbose #829 > > │ Test case 2. B. Time: 745L │ 00:01:35 verbose #830 > > │ Test case 3. C. Time: 928L │ 00:01:35 verbose #831 > > │ Test case 4. CA. Time: 1375L │ 00:01:35 verbose #832 > > │ Test case 5. CB. Time: 1029L │ 00:01:35 verbose #833 > > │ Test case 6. D. Time: 852L │ 00:01:35 verbose #834 > > │ Test case 7. E. Time: 712L │ 00:01:35 verbose #835 > > │ Test case 8. F. Time: 263L │ 00:01:35 verbose #836 > > │ Test case 9. FA. Time: 232L │ 00:01:35 verbose #837 > > │ Test case 10. FB. Time: 773L │ 00:01:35 verbose #838 > > │ Test case 11. FC. Time: 1789L │ 00:01:35 verbose #839 > > │ │ 00:01:35 verbose #840 > > │ Input | Expected │ 00:01:35 verbose #841 > > │ │ 00:01:35 verbose #842 > > │ | Result │ 00:01:35 verbose #843 > > │ │ 00:01:35 verbose #844 > > │ | Best │ 00:01:35 verbose #845 > > │ --- | --- │ 00:01:35 verbose #846 > > │ │ 00:01:35 verbose #847 > > │ | --- │ 00:01:35 verbose #848 > > │ │ 00:01:35 verbose #849 > > │ | --- │ 00:01:35 verbose #850 > > │ abc | bca cab abc │ 00:01:35 verbose #851 > > │ │ 00:01:35 verbose #852 > > │ | bca cab abc │ 00:01:35 verbose #853 > > │ │ 00:01:35 verbose #854 > > │ | (8, 1517) │ 00:01:35 verbose #855 > > │ abcde | bcdea cdeab deabc eabcd abcde │ 00:01:35 verbose #856 > > │ | bcdea cdeab deabc eabcd abcde │ 00:01:35 verbose #857 > > │ | (8, 1771) │ 00:01:35 verbose #858 > > │ abcdefghi | bcdefghia cdefghiab defghiabc efghiabcd fghiabcde │ 00:01:35 verbose #859 > > │ ghiabcdef hiabcdefg iabcdefgh abcdefghi | bcdefghia cdefghiab │ 00:01:35 verbose #860 > > │ defghiabc efghiabcd fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi │ 00:01:35 verbose #861 > > │ | (8, 3050) │ 00:01:35 verbose #862 > > │ abab | baba abab baba abab │ 00:01:35 verbose #863 > > │ │ 00:01:35 verbose #864 > > │ | baba abab baba abab │ 00:01:35 verbose #865 > > │ │ 00:01:35 verbose #866 > > │ | (8, 1558) │ 00:01:35 verbose #867 > > │ aa | aa aa │ 00:01:35 verbose #868 > > │ │ 00:01:35 verbose #869 > > │ | aa aa │ 00:01:35 verbose #870 > > │ │ 00:01:35 verbose #871 > > │ | (1, 1107) │ 00:01:35 verbose #872 > > │ z | z │ 00:01:35 verbose #873 > > │ │ 00:01:35 verbose #874 > > │ | z │ 00:01:35 verbose #875 > > │ │ 00:01:35 verbose #876 > > │ | (9, 232) │ 00:01:35 verbose #877 > > │ │ 00:01:35 verbose #878 > > │ Averages │ 00:01:35 verbose #879 > > │ Test case 1. Average Time: 2284L │ 00:01:35 verbose #880 > > │ Test case 2. Average Time: 1965L │ 00:01:35 verbose #881 > > │ Test case 3. Average Time: 1953L │ 00:01:35 verbose #882 > > │ Test case 4. Average Time: 2325L │ 00:01:35 verbose #883 > > │ Test case 5. Average Time: 2477L │ 00:01:35 verbose #884 > > │ Test case 6. Average Time: 3103L │ 00:01:35 verbose #885 > > │ Test case 7. Average Time: 1797L │ 00:01:35 verbose #886 > > │ Test case 8. Average Time: 1551L │ 00:01:35 verbose #887 > > │ Test case 9. Average Time: 1688L │ 00:01:35 verbose #888 > > │ Test case 10. Average Time: 2749L │ 00:01:35 verbose #889 > > │ Test case 11. Average Time: 4136L │ 00:01:35 verbose #890 > > │ │ 00:01:35 verbose #891 > > │ Ranking │ 00:01:35 verbose #892 > > │ Test case 11. Average Time: 4136L │ 00:01:35 verbose #893 > > │ Test case 6. Average Time: 3103L │ 00:01:35 verbose #894 > > │ Test case 10. Average Time: 2749L │ 00:01:35 verbose #895 > > │ Test case 5. Average Time: 2477L │ 00:01:35 verbose #896 > > │ Test case 4. Average Time: 2325L │ 00:01:35 verbose #897 > > │ Test case 1. Average Time: 2284L │ 00:01:35 verbose #898 > > │ Test case 2. Average Time: 1965L │ 00:01:35 verbose #899 > > │ Test case 3. Average Time: 1953L │ 00:01:35 verbose #900 > > │ Test case 7. Average Time: 1797L │ 00:01:35 verbose #901 > > │ Test case 9. Average Time: 1688L │ 00:01:35 verbose #902 > > │ Test case 8. Average Time: 1551L │ 00:01:35 verbose #903 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:35 verbose #904 > > 00:01:35 verbose #905 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:35 verbose #906 > > //// test 00:01:35 verbose #907 > > 00:01:35 verbose #908 > > let solutions = [[ 00:01:35 verbose #909 > > "A", 00:01:35 verbose #910 > > fun (input: string) -> 00:01:35 verbose #911 > > let resultList = 00:01:35 verbose #912 > > List.fold (fun acc x -> 00:01:35 verbose #913 > > let rotate (text: string) (letter: string) = (text |> 00:01:35 verbose #914 > > SpiralSm.slice 1 (input.Length - 1)) + letter 00:01:35 verbose #915 > > [[ rotate (if acc.IsEmpty then input else acc.Head) (string x) 00:01:35 verbose #916 > > ]] @ acc 00:01:35 verbose #917 > > ) [[]] (Seq.toList input) 00:01:35 verbose #918 > > 00:01:35 verbose #919 > > (resultList, "") 00:01:35 verbose #920 > > ||> List.foldBack (fun acc x -> x + acc + " ") 00:01:35 verbose #921 > > |> _.TrimEnd() 00:01:35 verbose #922 > > 00:01:35 verbose #923 > > "B", 00:01:35 verbose #924 > > fun input -> 00:01:35 verbose #925 > > input 00:01:35 verbose #926 > > |> Seq.toList 00:01:35 verbose #927 > > |> List.fold (fun (acc: string list) letter -> 00:01:35 verbose #928 > > let last = 00:01:35 verbose #929 > > if acc.IsEmpty 00:01:35 verbose #930 > > then input 00:01:35 verbose #931 > > else acc.Head 00:01:35 verbose #932 > > 00:01:35 verbose #933 > > let item = last.[[1 .. input.Length - 1]] + string letter 00:01:35 verbose #934 > > 00:01:35 verbose #935 > > item :: acc 00:01:35 verbose #936 > > ) [[]] 00:01:35 verbose #937 > > |> List.rev 00:01:35 verbose #938 > > |> SpiralSm.concat " " 00:01:35 verbose #939 > > 00:01:35 verbose #940 > > "C", 00:01:35 verbose #941 > > fun input -> 00:01:35 verbose #942 > > input 00:01:35 verbose #943 > > |> Seq.toList 00:01:35 verbose #944 > > |> List.fold (fun (acc: string list) letter -> acc.Head.[[ 1 .. 00:01:35 verbose #945 > > input.Length - 1 ]] + string letter :: acc) [[ input ]] 00:01:35 verbose #946 > > |> List.rev 00:01:35 verbose #947 > > |> List.skip 1 00:01:35 verbose #948 > > |> SpiralSm.concat " " 00:01:35 verbose #949 > > 00:01:35 verbose #950 > > "CA", 00:01:35 verbose #951 > > fun input -> 00:01:35 verbose #952 > > input 00:01:35 verbose #953 > > |> Seq.fold (fun (acc: string list) letter -> acc.Head.[[ 1 .. 00:01:35 verbose #954 > > input.Length - 1 ]] + string letter :: acc) [[ input ]] 00:01:35 verbose #955 > > |> Seq.rev 00:01:35 verbose #956 > > |> Seq.skip 1 00:01:35 verbose #957 > > |> SpiralSm.concat " " 00:01:35 verbose #958 > > 00:01:35 verbose #959 > > "CB", 00:01:35 verbose #960 > > fun input -> 00:01:35 verbose #961 > > input 00:01:35 verbose #962 > > |> Seq.toArray 00:01:35 verbose #963 > > |> Array.fold (fun (acc: string[[]]) letter -> acc |> Array.append [[| 00:01:35 verbose #964 > > acc.[[0]].[[ 1 .. input.Length - 1 ]] + string letter |]]) [[| input |]] 00:01:35 verbose #965 > > |> Array.rev 00:01:35 verbose #966 > > |> Array.skip 1 00:01:35 verbose #967 > > |> SpiralSm.concat " " 00:01:35 verbose #968 > > 00:01:35 verbose #969 > > "D", 00:01:35 verbose #970 > > fun input -> 00:01:35 verbose #971 > > input 00:01:35 verbose #972 > > |> Seq.toList 00:01:35 verbose #973 > > |> fun list -> 00:01:35 verbose #974 > > let rec loop (acc: char list list) = function 00:01:35 verbose #975 > > | _ when acc.Length = list.Length -> acc 00:01:35 verbose #976 > > | head :: tail -> 00:01:35 verbose #977 > > let item = tail @ [[ head ]] 00:01:35 verbose #978 > > loop (item :: acc) item 00:01:35 verbose #979 > > | [[]] -> [[]] 00:01:35 verbose #980 > > loop [[]] list 00:01:35 verbose #981 > > |> List.rev 00:01:35 verbose #982 > > |> List.map (List.toArray >> String) 00:01:35 verbose #983 > > |> SpiralSm.concat " " 00:01:35 verbose #984 > > 00:01:35 verbose #985 > > "E", 00:01:35 verbose #986 > > fun input -> 00:01:35 verbose #987 > > input 00:01:35 verbose #988 > > |> Seq.toList 00:01:35 verbose #989 > > |> fun list -> 00:01:35 verbose #990 > > let rec loop (last: string) = function 00:01:35 verbose #991 > > | head :: tail -> 00:01:35 verbose #992 > > let item = last.[[1 .. input.Length - 1]] + string head 00:01:35 verbose #993 > > item :: loop item tail 00:01:35 verbose #994 > > | [[]] -> [[]] 00:01:35 verbose #995 > > loop input list 00:01:35 verbose #996 > > |> SpiralSm.concat " " 00:01:35 verbose #997 > > 00:01:35 verbose #998 > > "F", 00:01:35 verbose #999 > > fun input -> 00:01:35 verbose #1000 > > Array.singleton 0 00:01:35 verbose #1001 > > |> Array.append [[| 1 .. input.Length - 1 |]] 00:01:35 verbose #1002 > > |> Array.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]]) 00:01:35 verbose #1003 > > |> SpiralSm.concat " " 00:01:35 verbose #1004 > > 00:01:35 verbose #1005 > > "FA", 00:01:35 verbose #1006 > > fun input -> 00:01:35 verbose #1007 > > List.singleton 0 00:01:35 verbose #1008 > > |> List.append [[ 1 .. input.Length - 1 ]] 00:01:35 verbose #1009 > > |> List.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]]) 00:01:35 verbose #1010 > > |> SpiralSm.concat " " 00:01:35 verbose #1011 > > 00:01:35 verbose #1012 > > "FB", 00:01:35 verbose #1013 > > fun input -> 00:01:35 verbose #1014 > > Seq.singleton 0 00:01:35 verbose #1015 > > |> Seq.append (seq { 1 .. input.Length - 1 }) 00:01:35 verbose #1016 > > |> Seq.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]]) 00:01:35 verbose #1017 > > |> SpiralSm.concat " " 00:01:35 verbose #1018 > > 00:01:35 verbose #1019 > > "FC", 00:01:35 verbose #1020 > > fun input -> 00:01:35 verbose #1021 > > Array.singleton 0 00:01:35 verbose #1022 > > |> Array.append [[| 1 .. input.Length - 1 |]] 00:01:35 verbose #1023 > > |> Array.Parallel.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]]) 00:01:35 verbose #1024 > > |> SpiralSm.concat " " 00:01:35 verbose #1025 > > ]] 00:01:35 verbose #1026 > > let testCases = seq { 00:01:35 verbose #1027 > > "abc", "bca cab abc" 00:01:35 verbose #1028 > > "abcde", "bcdea cdeab deabc eabcd abcde" 00:01:35 verbose #1029 > > "abcdefghi", "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde ghiabcdef 00:01:35 verbose #1030 > > hiabcdefg iabcdefgh abcdefghi" 00:01:35 verbose #1031 > > "abab", "baba abab baba abab" 00:01:35 verbose #1032 > > "aa", "aa aa" 00:01:35 verbose #1033 > > "z", "z" 00:01:35 verbose #1034 > > } 00:01:35 verbose #1035 > > let rec rotateStringsTests = runAll (nameof rotateStringsTests) _count solutions 00:01:35 verbose #1036 > > testCases 00:01:35 verbose #1037 > > rotateStringsTests 00:01:35 verbose #1038 > > |> sortResultList 00:03:24 verbose #1039 > > 00:03:24 verbose #1040 > > ╭─[ 1.81m - stdout ]───────────────────────────────────────────────────────────╮ 00:03:24 verbose #1041 > > │ │ 00:03:24 verbose #1042 > > │ │ 00:03:24 verbose #1043 > > │ Test: rotateStringsTests │ 00:03:24 verbose #1044 > > │ │ 00:03:24 verbose #1045 > > │ Solution: abc │ 00:03:24 verbose #1046 > > │ Test case 1. A. Time: 1274L │ 00:03:24 verbose #1047 > > │ Test case 2. B. Time: 1130L │ 00:03:24 verbose #1048 > > │ Test case 3. C. Time: 1141L │ 00:03:24 verbose #1049 > > │ Test case 4. CA. Time: 1220L │ 00:03:24 verbose #1050 > > │ Test case 5. CB. Time: 1242L │ 00:03:24 verbose #1051 > > │ Test case 6. D. Time: 1322L │ 00:03:24 verbose #1052 > > │ Test case 7. E. Time: 979L │ 00:03:24 verbose #1053 > > │ Test case 8. F. Time: 919L │ 00:03:24 verbose #1054 > > │ Test case 9. FA. Time: 1049L │ 00:03:24 verbose #1055 > > │ Test case 10. FB. Time: 1658L │ 00:03:24 verbose #1056 > > │ Test case 11. FC. Time: 2330L │ 00:03:24 verbose #1057 > > │ │ 00:03:24 verbose #1058 > > │ Solution: abcde │ 00:03:24 verbose #1059 > > │ Test case 1. A. Time: 1671L │ 00:03:24 verbose #1060 > > │ Test case 2. B. Time: 1460L │ 00:03:24 verbose #1061 > > │ Test case 3. C. Time: 1441L │ 00:03:24 verbose #1062 > > │ Test case 4. CA. Time: 1483L │ 00:03:24 verbose #1063 > > │ Test case 5. CB. Time: 1567L │ 00:03:24 verbose #1064 > > │ Test case 6. D. Time: 1847L │ 00:03:24 verbose #1065 > > │ Test case 7. E. Time: 1311L │ 00:03:24 verbose #1066 > > │ Test case 8. F. Time: 1095L │ 00:03:24 verbose #1067 > > │ Test case 9. FA. Time: 1359L │ 00:03:24 verbose #1068 > > │ Test case 10. FB. Time: 2046L │ 00:03:24 verbose #1069 > > │ Test case 11. FC. Time: 2643L │ 00:03:24 verbose #1070 > > │ │ 00:03:24 verbose #1071 > > │ Solution: abcdefghi │ 00:03:24 verbose #1072 > > │ Test case 1. A. Time: 2855L │ 00:03:24 verbose #1073 > > │ Test case 2. B. Time: 2186L │ 00:03:24 verbose #1074 > > │ Test case 3. C. Time: 2232L │ 00:03:24 verbose #1075 > > │ Test case 4. CA. Time: 2318L │ 00:03:24 verbose #1076 > > │ Test case 5. CB. Time: 2561L │ 00:03:24 verbose #1077 > > │ Test case 6. D. Time: 3853L │ 00:03:24 verbose #1078 > > │ Test case 7. E. Time: 2077L │ 00:03:24 verbose #1079 > > │ Test case 8. F. Time: 1786L │ 00:03:24 verbose #1080 > > │ Test case 9. FA. Time: 1990L │ 00:03:24 verbose #1081 > > │ Test case 10. FB. Time: 2900L │ 00:03:24 verbose #1082 > > │ Test case 11. FC. Time: 3177L │ 00:03:24 verbose #1083 > > │ │ 00:03:24 verbose #1084 > > │ Solution: abab │ 00:03:24 verbose #1085 > > │ Test case 1. A. Time: 1447L │ 00:03:24 verbose #1086 > > │ Test case 2. B. Time: 1206L │ 00:03:24 verbose #1087 > > │ Test case 3. C. Time: 1292L │ 00:03:24 verbose #1088 > > │ Test case 4. CA. Time: 1402L │ 00:03:24 verbose #1089 > > │ Test case 5. CB. Time: 1349L │ 00:03:24 verbose #1090 > > │ Test case 6. D. Time: 1518L │ 00:03:24 verbose #1091 > > │ Test case 7. E. Time: 1131L │ 00:03:24 verbose #1092 > > │ Test case 8. F. Time: 958L │ 00:03:24 verbose #1093 > > │ Test case 9. FA. Time: 1092L │ 00:03:24 verbose #1094 > > │ Test case 10. FB. Time: 1748L │ 00:03:24 verbose #1095 > > │ Test case 11. FC. Time: 2420L │ 00:03:24 verbose #1096 > > │ │ 00:03:24 verbose #1097 > > │ Solution: aa │ 00:03:24 verbose #1098 > > │ Test case 1. A. Time: 968L │ 00:03:24 verbose #1099 > > │ Test case 2. B. Time: 844L │ 00:03:24 verbose #1100 > > │ Test case 3. C. Time: 931L │ 00:03:24 verbose #1101 > > │ Test case 4. CA. Time: 1091L │ 00:03:24 verbose #1102 > > │ Test case 5. CB. Time: 1037L │ 00:03:24 verbose #1103 > > │ Test case 6. D. Time: 981L │ 00:03:24 verbose #1104 > > │ Test case 7. E. Time: 844L │ 00:03:24 verbose #1105 > > │ Test case 8. F. Time: 722L │ 00:03:24 verbose #1106 > > │ Test case 9. FA. Time: 843L │ 00:03:24 verbose #1107 > > │ Test case 10. FB. Time: 1487L │ 00:03:24 verbose #1108 > > │ Test case 11. FC. Time: 2051L │ 00:03:24 verbose #1109 > > │ │ 00:03:24 verbose #1110 > > │ Solution: z │ 00:03:24 verbose #1111 > > │ Test case 1. A. Time: 541L │ 00:03:24 verbose #1112 > > │ Test case 2. B. Time: 524L │ 00:03:24 verbose #1113 > > │ Test case 3. C. Time: 597L │ 00:03:24 verbose #1114 > > │ Test case 4. CA. Time: 878L │ 00:03:24 verbose #1115 > > │ Test case 5. CB. Time: 723L │ 00:03:24 verbose #1116 > > │ Test case 6. D. Time: 621L │ 00:03:24 verbose #1117 > > │ Test case 7. E. Time: 523L │ 00:03:24 verbose #1118 > > │ Test case 8. F. Time: 127L │ 00:03:24 verbose #1119 > > │ Test case 9. FA. Time: 132L │ 00:03:24 verbose #1120 > > │ Test case 10. FB. Time: 413L │ 00:03:24 verbose #1121 > > │ Test case 11. FC. Time: 787L │ 00:03:24 verbose #1122 > > │ │ 00:03:24 verbose #1123 > > │ Input | Expected │ 00:03:24 verbose #1124 > > │ │ 00:03:24 verbose #1125 > > │ | Result │ 00:03:24 verbose #1126 > > │ │ 00:03:24 verbose #1127 > > │ | Best │ 00:03:24 verbose #1128 > > │ --- | --- │ 00:03:24 verbose #1129 > > │ │ 00:03:24 verbose #1130 > > │ | --- │ 00:03:24 verbose #1131 > > │ │ 00:03:24 verbose #1132 > > │ | --- │ 00:03:24 verbose #1133 > > │ abc | bca cab abc │ 00:03:24 verbose #1134 > > │ │ 00:03:24 verbose #1135 > > │ | bca cab abc │ 00:03:24 verbose #1136 > > │ │ 00:03:24 verbose #1137 > > │ | (8, 919) │ 00:03:24 verbose #1138 > > │ abcde | bcdea cdeab deabc eabcd abcde │ 00:03:24 verbose #1139 > > │ | bcdea cdeab deabc eabcd abcde │ 00:03:24 verbose #1140 > > │ | (8, 1095) │ 00:03:24 verbose #1141 > > │ abcdefghi | bcdefghia cdefghiab defghiabc efghiabcd fghiabcde ghiabcdef │ 00:03:24 verbose #1142 > > │ hiabcdefg iabcdefgh abcdefghi | bcdefghia cdefghiab defghiabc efghiabcd │ 00:03:24 verbose #1143 > > │ fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi | (8, 1786) │ 00:03:24 verbose #1144 > > │ abab | baba abab baba abab │ 00:03:24 verbose #1145 > > │ | baba abab baba abab │ 00:03:24 verbose #1146 > > │ | (8, 958) │ 00:03:24 verbose #1147 > > │ aa | aa aa │ 00:03:24 verbose #1148 > > │ │ 00:03:24 verbose #1149 > > │ | aa aa │ 00:03:24 verbose #1150 > > │ │ 00:03:24 verbose #1151 > > │ | (8, 722) │ 00:03:24 verbose #1152 > > │ z | z │ 00:03:24 verbose #1153 > > │ │ 00:03:24 verbose #1154 > > │ | z │ 00:03:24 verbose #1155 > > │ │ 00:03:24 verbose #1156 > > │ | (8, 127) │ 00:03:24 verbose #1157 > > │ │ 00:03:24 verbose #1158 > > │ Average Ranking │ 00:03:24 verbose #1159 > > │ Test case 8. Average Time: 934L │ 00:03:24 verbose #1160 > > │ Test case 9. Average Time: 1077L │ 00:03:24 verbose #1161 > > │ Test case 7. Average Time: 1144L │ 00:03:24 verbose #1162 > > │ Test case 2. Average Time: 1225L │ 00:03:24 verbose #1163 > > │ Test case 3. Average Time: 1272L │ 00:03:24 verbose #1164 > > │ Test case 4. Average Time: 1398L │ 00:03:24 verbose #1165 > > │ Test case 5. Average Time: 1413L │ 00:03:24 verbose #1166 > > │ Test case 1. Average Time: 1459L │ 00:03:24 verbose #1167 > > │ Test case 6. Average Time: 1690L │ 00:03:24 verbose #1168 > > │ Test case 10. Average Time: 1708L │ 00:03:24 verbose #1169 > > │ Test case 11. Average Time: 2234L │ 00:03:24 verbose #1170 > > │ │ 00:03:24 verbose #1171 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:24 verbose #1172 > > 00:03:24 verbose #1173 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:24 verbose #1174 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:24 verbose #1175 > > │ ## rotate_strings_tests │ 00:03:24 verbose #1176 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:24 verbose #1177 > > 00:03:24 verbose #1178 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:24 verbose #1179 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:24 verbose #1180 > > │ ``` │ 00:03:24 verbose #1181 > > │ 02:21:12 verbose #1 benchmark.run_all / {count = 2000000; test_name = │ 00:03:24 verbose #1182 > > │ rotate_strings_tests} │ 00:03:24 verbose #1183 > > │ │ 00:03:24 verbose #1184 > > │ 02:21:12 verbose #2 benchmark.run / {input_str = "abc"} │ 00:03:24 verbose #1185 > > │ 02:21:13 verbose #3 benchmark.run / solutions.map / {i = 1; test_name = │ 00:03:24 verbose #1186 > > │ F; time = 638} │ 00:03:24 verbose #1187 > > │ 02:21:14 verbose #4 benchmark.run / solutions.map / {i = 2; test_name = │ 00:03:24 verbose #1188 > > │ FA; time = 779} │ 00:03:24 verbose #1189 > > │ │ 00:03:24 verbose #1190 > > │ 02:21:14 verbose #5 benchmark.run / {input_str = "abcde"} │ 00:03:24 verbose #1191 > > │ 02:21:15 verbose #6 benchmark.run / solutions.map / {i = 1; test_name = │ 00:03:24 verbose #1192 > > │ F; time = 745} │ 00:03:24 verbose #1193 > > │ 02:21:16 verbose #7 benchmark.run / solutions.map / {i = 2; test_name = │ 00:03:24 verbose #1194 > > │ FA; time = 809} │ 00:03:24 verbose #1195 > > │ │ 00:03:24 verbose #1196 > > │ 02:21:16 verbose #8 benchmark.run / {input_str = "abcdefghi"} │ 00:03:24 verbose #1197 > > │ 02:21:17 verbose #9 benchmark.run / solutions.map / {i = 1; test_name = │ 00:03:24 verbose #1198 > > │ F; time = 1092} │ 00:03:24 verbose #1199 > > │ 02:21:18 verbose #10 benchmark.run / solutions.map / {i = 2; test_name │ 00:03:24 verbose #1200 > > │ = FA; time = 1304} │ 00:03:24 verbose #1201 > > │ │ 00:03:24 verbose #1202 > > │ 02:21:18 verbose #11 benchmark.run / {input_str = "abab"} │ 00:03:24 verbose #1203 > > │ 02:21:19 verbose #12 benchmark.run / solutions.map / {i = 1; test_name │ 00:03:24 verbose #1204 > > │ = F; time = 536} │ 00:03:24 verbose #1205 > > │ 02:21:20 verbose #13 benchmark.run / solutions.map / {i = 2; test_name │ 00:03:24 verbose #1206 > > │ = FA; time = 620} │ 00:03:24 verbose #1207 > > │ │ 00:03:24 verbose #1208 > > │ 02:21:20 verbose #14 benchmark.run / {input_str = "aa"} │ 00:03:24 verbose #1209 > > │ 02:21:21 verbose #15 benchmark.run / solutions.map / {i = 1; test_name │ 00:03:24 verbose #1210 > > │ = F; time = 365} │ 00:03:24 verbose #1211 > > │ 02:21:21 verbose #16 benchmark.run / solutions.map / {i = 2; test_name │ 00:03:24 verbose #1212 > > │ = FA; time = 396} │ 00:03:24 verbose #1213 > > │ │ 00:03:24 verbose #1214 > > │ 02:21:21 verbose #17 benchmark.run / {input_str = "z"} │ 00:03:24 verbose #1215 > > │ 02:21:22 verbose #18 benchmark.run / solutions.map / {i = 1; test_name │ 00:03:24 verbose #1216 > > │ = F; time = 158} │ 00:03:24 verbose #1217 > > │ 02:21:22 verbose #19 benchmark.run / solutions.map / {i = 2; test_name │ 00:03:24 verbose #1218 > > │ = FA; time = 143} │ 00:03:24 verbose #1219 > > │ ``` │ 00:03:24 verbose #1220 > > │ input | expected │ 00:03:24 verbose #1221 > > │ │ 00:03:24 verbose #1222 > > │ | result │ 00:03:24 verbose #1223 > > │ │ 00:03:24 verbose #1224 > > │ | best │ 00:03:24 verbose #1225 > > │ --- | --- │ 00:03:24 verbose #1226 > > │ │ 00:03:24 verbose #1227 > > │ | --- │ 00:03:24 verbose #1228 > > │ │ 00:03:24 verbose #1229 > > │ | --- │ 00:03:24 verbose #1230 > > │ "abc" | "bca cab abc" │ 00:03:24 verbose #1231 > > │ │ 00:03:24 verbose #1232 > > │ | "bca cab abc" │ 00:03:24 verbose #1233 > > │ │ 00:03:24 verbose #1234 > > │ | 1, 638 │ 00:03:24 verbose #1235 > > │ "abcde" | "bcdea cdeab deabc eabcd abcde" │ 00:03:24 verbose #1236 > > │ | "bcdea cdeab deabc eabcd abcde" │ 00:03:24 verbose #1237 > > │ | 1, 745 │ 00:03:24 verbose #1238 > > │ "abcdefghi" | "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde ghiabcdef │ 00:03:24 verbose #1239 > > │ hiabcdefg iabcdefgh abcdefghi" | "bcdefghia cdefghiab defghiabc efghiabcd │ 00:03:24 verbose #1240 > > │ fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi" | 1, 1092 │ 00:03:24 verbose #1241 > > │ "abab" | "baba abab baba abab" │ 00:03:24 verbose #1242 > > │ | "baba abab baba abab" │ 00:03:24 verbose #1243 > > │ | 1, 536 │ 00:03:24 verbose #1244 > > │ "aa" | "aa aa" │ 00:03:24 verbose #1245 > > │ │ 00:03:24 verbose #1246 > > │ | "aa aa" │ 00:03:24 verbose #1247 > > │ │ 00:03:24 verbose #1248 > > │ | 1, 365 │ 00:03:24 verbose #1249 > > │ "z" | "z" │ 00:03:24 verbose #1250 > > │ │ 00:03:24 verbose #1251 > > │ | "z" │ 00:03:24 verbose #1252 > > │ │ 00:03:24 verbose #1253 > > │ | 2, 143 │ 00:03:24 verbose #1254 > > │ ``` │ 00:03:24 verbose #1255 > > │ 02:21:22 verbose #20 benchmark.sort_result_list / averages.iter / {avg │ 00:03:24 verbose #1256 > > │ = 589; i = 1} │ 00:03:24 verbose #1257 > > │ 02:21:22 verbose #21 benchmark.sort_result_list / averages.iter / {avg │ 00:03:24 verbose #1258 > > │ = 675; i = 2} │ 00:03:24 verbose #1259 > > │ ``` │ 00:03:24 verbose #1260 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:24 verbose #1261 > > 00:03:24 verbose #1262 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:24 verbose #1263 > > //// test 00:03:24 verbose #1264 > > //// timeout=60000 00:03:24 verbose #1265 > > 00:03:24 verbose #1266 > > inl get_solutions () = 00:03:24 verbose #1267 > > [[ 00:03:24 verbose #1268 > > // "A", 00:03:24 verbose #1269 > > // fun (input : string) => 00:03:24 verbose #1270 > > // let resultList = 00:03:24 verbose #1271 > > // List.fold (fun acc x => 00:03:24 verbose #1272 > > // let rotate (text : string) (letter : string) = 00:03:24 verbose #1273 > > text.Substring (1, input.Length - 1) + letter 00:03:24 verbose #1274 > > // [[ rotate (if acc.IsEmpty then input else acc.Head) 00:03:24 verbose #1275 > > (string x) ]] ++ acc 00:03:24 verbose #1276 > > // ) [[]] (Seq.toList input) 00:03:24 verbose #1277 > > 00:03:24 verbose #1278 > > // List.foldBack (fun acc x => x + acc + " ") resultList "" 00:03:24 verbose #1279 > > // |> fun x => x.TrimEnd () 00:03:24 verbose #1280 > > 00:03:24 verbose #1281 > > // "B", 00:03:24 verbose #1282 > > // fun input => 00:03:24 verbose #1283 > > // input 00:03:24 verbose #1284 > > // |> Seq.toList 00:03:24 verbose #1285 > > // |> List.fold (fun (acc : string list) letter => 00:03:24 verbose #1286 > > // let last = 00:03:24 verbose #1287 > > // if acc.IsEmpty 00:03:24 verbose #1288 > > // then input 00:03:24 verbose #1289 > > // else acc.Head 00:03:24 verbose #1290 > > 00:03:24 verbose #1291 > > // let item = last.[[1 .. input.Length - 1]] + string letter 00:03:24 verbose #1292 > > 00:03:24 verbose #1293 > > // item :: acc 00:03:24 verbose #1294 > > // ) [[]] 00:03:24 verbose #1295 > > // |> List.rev 00:03:24 verbose #1296 > > // |> SpiralSm.concat " " 00:03:24 verbose #1297 > > 00:03:24 verbose #1298 > > // "C", 00:03:24 verbose #1299 > > // fun input => 00:03:24 verbose #1300 > > // input 00:03:24 verbose #1301 > > // |> Seq.toList 00:03:24 verbose #1302 > > // |> List.fold (fun (acc : list string) letter => acc.Head.[[ 1 .. 00:03:24 verbose #1303 > > input.Length - 1 ]] + string letter :: acc) [[ input ]] 00:03:24 verbose #1304 > > // |> List.rev 00:03:24 verbose #1305 > > // |> List.skip 1 00:03:24 verbose #1306 > > // |> SpiralSm.concat " " 00:03:24 verbose #1307 > > 00:03:24 verbose #1308 > > // "CA", 00:03:24 verbose #1309 > > // fun input => 00:03:24 verbose #1310 > > // input 00:03:24 verbose #1311 > > // |> Seq.fold (fun (acc : list string) letter => acc.Head.[[ 1 .. 00:03:24 verbose #1312 > > input.Length - 1 ]] + string letter :: acc) [[ input ]] 00:03:24 verbose #1313 > > // |> Seq.rev 00:03:24 verbose #1314 > > // |> Seq.skip 1 00:03:24 verbose #1315 > > // |> SpiralSm.concat " " 00:03:24 verbose #1316 > > 00:03:24 verbose #1317 > > // "CB", 00:03:24 verbose #1318 > > // fun input => 00:03:24 verbose #1319 > > // input 00:03:24 verbose #1320 > > // |> Seq.toArray 00:03:24 verbose #1321 > > // |> Array.fold (fun (acc : a _ string) letter => acc |> 00:03:24 verbose #1322 > > Array.append (a ;[[ acc.[[0]].[[ 1 .. input.Length - 1 ]] + string letter ]])) 00:03:24 verbose #1323 > > (a ;[[ input ]]) 00:03:24 verbose #1324 > > // |> Array.rev 00:03:24 verbose #1325 > > // |> Array.skip 1 00:03:24 verbose #1326 > > // |> SpiralSm.concat " " 00:03:24 verbose #1327 > > 00:03:24 verbose #1328 > > // "D", 00:03:24 verbose #1329 > > // fun input => 00:03:24 verbose #1330 > > // input 00:03:24 verbose #1331 > > // |> Seq.toList 00:03:24 verbose #1332 > > // |> fun list => 00:03:24 verbose #1333 > > // let rec loop (acc : list (list char)) = function 00:03:24 verbose #1334 > > // | _ when acc.Length = list.Length => acc 00:03:24 verbose #1335 > > // | head :: tail => 00:03:24 verbose #1336 > > // let item = tail ++ [[ head ]] 00:03:24 verbose #1337 > > // loop (item :: acc) item 00:03:24 verbose #1338 > > // | [[]] => [[]] 00:03:24 verbose #1339 > > // loop [[]] list 00:03:24 verbose #1340 > > // |> List.rev 00:03:24 verbose #1341 > > // |> List.map (List.toArray >> String) 00:03:24 verbose #1342 > > // |> SpiralSm.concat " " 00:03:24 verbose #1343 > > 00:03:24 verbose #1344 > > // "E", 00:03:24 verbose #1345 > > // fun input => 00:03:24 verbose #1346 > > // input 00:03:24 verbose #1347 > > // |> Seq.toList 00:03:24 verbose #1348 > > // |> fun list => 00:03:24 verbose #1349 > > // let rec loop (last : string) = function 00:03:24 verbose #1350 > > // | head :: tail => 00:03:24 verbose #1351 > > // let item = last.[[1 .. input.Length - 1]] + string 00:03:24 verbose #1352 > > head 00:03:24 verbose #1353 > > // item :: loop item tail 00:03:24 verbose #1354 > > // | [[]] => [[]] 00:03:24 verbose #1355 > > // loop input list 00:03:24 verbose #1356 > > // |> SpiralSm.concat " " 00:03:24 verbose #1357 > > 00:03:24 verbose #1358 > > "F", 00:03:24 verbose #1359 > > fun input => 00:03:24 verbose #1360 > > // Array.singleton 0 00:03:24 verbose #1361 > > // |> Array.append [[| 1 .. input.Length - 1 |]] 00:03:24 verbose #1362 > > // |> Array.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]]) 00:03:24 verbose #1363 > > // |> SpiralSm.concat " " 00:03:24 verbose #1364 > > inl input_length = input |> sm.length 00:03:24 verbose #1365 > > am.singleton 0i32 00:03:24 verbose #1366 > > |> am.append (am'.init_series 1 (input_length - 1) 1 |> fun x => a x 00:03:24 verbose #1367 > > : _ int _) 00:03:24 verbose #1368 > > |> fun (a x) => x 00:03:24 verbose #1369 > > |> am'.map_base fun i => 00:03:24 verbose #1370 > > inl a = input |> sm'.slice i (input_length - 1) 00:03:24 verbose #1371 > > inl b = input |> sm'.slice 0 (i - 1) 00:03:24 verbose #1372 > > a +. b 00:03:24 verbose #1373 > > |> fun x => a x : _ int _ 00:03:24 verbose #1374 > > |> seq.of_array 00:03:24 verbose #1375 > > |> sm'.concat " " 00:03:24 verbose #1376 > > 00:03:24 verbose #1377 > > "FA", 00:03:24 verbose #1378 > > fun input => 00:03:24 verbose #1379 > > // List.singleton 0 00:03:24 verbose #1380 > > // |> List.append [[ 1 .. input.Length - 1 ]] 00:03:24 verbose #1381 > > // // |> List.map (fun i => input.[[ i .. ]] + input.[[ .. i - 1 ]]) 00:03:24 verbose #1382 > > // |> SpiralSm.concat " " 00:03:24 verbose #1383 > > inl input_length = input |> sm.length 00:03:24 verbose #1384 > > listm.singleton 0i32 00:03:24 verbose #1385 > > |> listm.append (listm'.init_series 1 (input_length - 1) 1) 00:03:24 verbose #1386 > > |> listm.map (fun i => 00:03:24 verbose #1387 > > inl a = input |> sm'.slice i (input_length - 1) 00:03:24 verbose #1388 > > inl b = if i = 0 then "" else input |> sm'.slice 0 (i - 1) 00:03:24 verbose #1389 > > a +. b 00:03:24 verbose #1390 > > ) 00:03:24 verbose #1391 > > |> listm'.box 00:03:24 verbose #1392 > > |> listm'.to_array' 00:03:24 verbose #1393 > > |> fun x => a x : _ int _ 00:03:24 verbose #1394 > > |> seq.of_array 00:03:24 verbose #1395 > > |> sm'.concat " " 00:03:24 verbose #1396 > > 00:03:24 verbose #1397 > > // "FB", 00:03:24 verbose #1398 > > // fun input => 00:03:24 verbose #1399 > > // Seq.singleton 0 00:03:24 verbose #1400 > > // // |> Seq.append (seq { 1 .. input.Length - 1 }) 00:03:24 verbose #1401 > > // // |> Seq.map (fun i => input.[[ i .. ]] + input.[[ .. i - 1 ]]) 00:03:24 verbose #1402 > > // |> SpiralSm.concat " " 00:03:24 verbose #1403 > > 00:03:24 verbose #1404 > > // "FC", 00:03:24 verbose #1405 > > // fun input => 00:03:24 verbose #1406 > > // Array.singleton 0 00:03:24 verbose #1407 > > // |> Array.append (a ;[[ 1 .. input.Length - 1 ]]) 00:03:24 verbose #1408 > > //// |> Array.Parallel.map (fun i => input.[[ i .. ]] + input.[[ .. i 00:03:24 verbose #1409 > > - 1 ]]) 00:03:24 verbose #1410 > > // |> SpiralSm.concat " " 00:03:24 verbose #1411 > > ]] 00:03:24 verbose #1412 > > 00:03:24 verbose #1413 > > inl rec rotate_strings_tests () = 00:03:24 verbose #1414 > > inl test_cases = [[ 00:03:24 verbose #1415 > > "abc", "bca cab abc" 00:03:24 verbose #1416 > > "abcde", "bcdea cdeab deabc eabcd abcde" 00:03:24 verbose #1417 > > "abcdefghi", "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde 00:03:24 verbose #1418 > > ghiabcdef hiabcdefg iabcdefgh abcdefghi" 00:03:24 verbose #1419 > > "abab", "baba abab baba abab" 00:03:24 verbose #1420 > > "aa", "aa aa" 00:03:24 verbose #1421 > > "z", "z" 00:03:24 verbose #1422 > > ]] 00:03:24 verbose #1423 > > 00:03:24 verbose #1424 > > inl solutions = get_solutions () 00:03:24 verbose #1425 > > 00:03:24 verbose #1426 > > // inl is_fast () = true 00:03:24 verbose #1427 > > 00:03:24 verbose #1428 > > inl count = 00:03:24 verbose #1429 > > if is_fast () 00:03:24 verbose #1430 > > then 1000i32 00:03:24 verbose #1431 > > else 2000000i32 00:03:24 verbose #1432 > > 00:03:24 verbose #1433 > > run_all (reflection.nameof { rotate_strings_tests }) count solutions 00:03:24 verbose #1434 > > test_cases 00:03:24 verbose #1435 > > |> sort_result_list 00:03:24 verbose #1436 > > 00:03:24 verbose #1437 > > rotate_strings_tests () 00:03:40 verbose #1438 > > 00:03:40 verbose #1439 > > ╭─[ 16.26s - stdout ]──────────────────────────────────────────────────────────╮ 00:03:40 verbose #1440 > > │ │ 00:03:40 verbose #1441 > > │ ``` │ 00:03:40 verbose #1442 > > │ 00:00:00 verbose #1 benchmark.run_all / { test_name = │ 00:03:40 verbose #1443 > > │ rotate_strings_tests; count = 2000000 } │ 00:03:40 verbose #1444 > > │ │ 00:03:40 verbose #1445 > > │ 00:00:00 verbose #2 benchmark.run / { input_str = "abc" } │ 00:03:40 verbose #1446 > > │ 00:00:01 verbose #3 benchmark.run / solutions.map / { i = 1; test_name │ 00:03:40 verbose #1447 > > │ = F; time = 1015 } │ 00:03:40 verbose #1448 > > │ 00:00:02 verbose #4 benchmark.run / solutions.map / { i = 2; test_name │ 00:03:40 verbose #1449 > > │ = FA; time = 1245 } │ 00:03:40 verbose #1450 > > │ │ 00:03:40 verbose #1451 > > │ 00:00:02 verbose #5 benchmark.run / { input_str = "abcde" } │ 00:03:40 verbose #1452 > > │ 00:00:03 verbose #6 benchmark.run / solutions.map / { i = 1; test_name │ 00:03:40 verbose #1453 > > │ = F; time = 1108 } │ 00:03:40 verbose #1454 > > │ 00:00:05 verbose #7 benchmark.run / solutions.map / { i = 2; test_name │ 00:03:40 verbose #1455 > > │ = FA; time = 1322 } │ 00:03:40 verbose #1456 > > │ │ 00:03:40 verbose #1457 > > │ 00:00:05 verbose #8 benchmark.run / { input_str = "abcdefghi" } │ 00:03:40 verbose #1458 > > │ 00:00:07 verbose #9 benchmark.run / solutions.map / { i = 1; test_name │ 00:03:40 verbose #1459 > > │ = F; time = 1809 } │ 00:03:40 verbose #1460 > > │ 00:00:10 verbose #10 benchmark.run / solutions.map / { i = 2; test_name │ 00:03:40 verbose #1461 > > │ = FA; time = 2341 } │ 00:03:40 verbose #1462 > > │ │ 00:03:40 verbose #1463 > > │ 00:00:10 verbose #11 benchmark.run / { input_str = "abab" } │ 00:03:40 verbose #1464 > > │ 00:00:11 verbose #12 benchmark.run / solutions.map / { i = 1; test_name │ 00:03:40 verbose #1465 > > │ = F; time = 939 } │ 00:03:40 verbose #1466 > > │ 00:00:12 verbose #13 benchmark.run / solutions.map / { i = 2; test_name │ 00:03:40 verbose #1467 > > │ = FA; time = 1205 } │ 00:03:40 verbose #1468 > > │ │ 00:03:40 verbose #1469 > > │ 00:00:12 verbose #14 benchmark.run / { input_str = "aa" } │ 00:03:40 verbose #1470 > > │ 00:00:13 verbose #15 benchmark.run / solutions.map / { i = 1; test_name │ 00:03:40 verbose #1471 > > │ = F; time = 687 } │ 00:03:40 verbose #1472 > > │ 00:00:14 verbose #16 benchmark.run / solutions.map / { i = 2; test_name │ 00:03:40 verbose #1473 > > │ = FA; time = 780 } │ 00:03:40 verbose #1474 > > │ │ 00:03:40 verbose #1475 > > │ 00:00:14 verbose #17 benchmark.run / { input_str = "z" } │ 00:03:40 verbose #1476 > > │ 00:00:15 verbose #18 benchmark.run / solutions.map / { i = 1; test_name │ 00:03:40 verbose #1477 > > │ = F; time = 130 } │ 00:03:40 verbose #1478 > > │ 00:00:15 verbose #19 benchmark.run / solutions.map / { i = 2; test_name │ 00:03:40 verbose #1479 > > │ = FA; time = 123 } │ 00:03:40 verbose #1480 > > │ ``` │ 00:03:40 verbose #1481 > > │ input | expected │ 00:03:40 verbose #1482 > > │ │ 00:03:40 verbose #1483 > > │ | result │ 00:03:40 verbose #1484 > > │ │ 00:03:40 verbose #1485 > > │ | best │ 00:03:40 verbose #1486 > > │ --- | --- │ 00:03:40 verbose #1487 > > │ │ 00:03:40 verbose #1488 > > │ | --- │ 00:03:40 verbose #1489 > > │ │ 00:03:40 verbose #1490 > > │ | --- │ 00:03:40 verbose #1491 > > │ "abc" | "bca cab abc" │ 00:03:40 verbose #1492 > > │ │ 00:03:40 verbose #1493 > > │ | "bca cab abc" │ 00:03:40 verbose #1494 > > │ │ 00:03:40 verbose #1495 > > │ | 1, 1015 │ 00:03:40 verbose #1496 > > │ "abcde" | "bcdea cdeab deabc eabcd abcde" │ 00:03:40 verbose #1497 > > │ | "bcdea cdeab deabc eabcd abcde" │ 00:03:40 verbose #1498 > > │ | 1, 1108 │ 00:03:40 verbose #1499 > > │ "abcdefghi" | "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde ghiabcdef │ 00:03:40 verbose #1500 > > │ hiabcdefg iabcdefgh abcdefghi" | "bcdefghia cdefghiab defghiabc efghiabcd │ 00:03:40 verbose #1501 > > │ fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi" | 1, 1809 │ 00:03:40 verbose #1502 > > │ "abab" | "baba abab baba abab" │ 00:03:40 verbose #1503 > > │ | "baba abab baba abab" │ 00:03:40 verbose #1504 > > │ | 1, 939 │ 00:03:40 verbose #1505 > > │ "aa" | "aa aa" │ 00:03:40 verbose #1506 > > │ │ 00:03:40 verbose #1507 > > │ | "aa aa" │ 00:03:40 verbose #1508 > > │ │ 00:03:40 verbose #1509 > > │ | 1, 687 │ 00:03:40 verbose #1510 > > │ "z" | "z" │ 00:03:40 verbose #1511 > > │ │ 00:03:40 verbose #1512 > > │ | "z" │ 00:03:40 verbose #1513 > > │ │ 00:03:40 verbose #1514 > > │ | 2, 123 │ 00:03:40 verbose #1515 > > │ ``` │ 00:03:40 verbose #1516 > > │ 00:00:15 verbose #20 benchmark.sort_result_list / averages.iter / { i = │ 00:03:40 verbose #1517 > > │ 1; avg = 948 } │ 00:03:40 verbose #1518 > > │ 00:00:15 verbose #21 benchmark.sort_result_list / averages.iter / { i = │ 00:03:40 verbose #1519 > > │ 2; avg = 1169 } │ 00:03:40 verbose #1520 > > │ ``` │ 00:03:40 verbose #1521 > > │ │ 00:03:40 verbose #1522 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:40 verbose #1523 > > 00:03:40 verbose #1524 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:40 verbose #1525 > > //// test 00:03:40 verbose #1526 > > 00:03:40 verbose #1527 > > // rotate_strings_tests () 00:03:40 verbose #1528 > > () 00:03:40 verbose #1529 > > 00:03:40 verbose #1530 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:40 verbose #1531 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:40 verbose #1532 > > │ ## binary_search_tests │ 00:03:40 verbose #1533 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:40 verbose #1534 > > 00:03:40 verbose #1535 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:40 verbose #1536 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:40 verbose #1537 > > │ ``` │ 00:03:40 verbose #1538 > > │ 02:19:29 verbose #1 benchmark.run_all / {count = 10000000; test_name = │ 00:03:40 verbose #1539 > > │ binary_search_tests} │ 00:03:40 verbose #1540 > > │ │ 00:03:40 verbose #1541 > > │ 02:19:29 verbose #2 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │ 00:03:40 verbose #1542 > > │ 8; 9; 11|], 6, 7)} │ 00:03:40 verbose #1543 > > │ 02:19:30 verbose #3 benchmark.run / solutions.map / {i = 1; test_name = │ 00:03:40 verbose #1544 > > │ semi_open_1; time = 662} │ 00:03:40 verbose #1545 > > │ 02:19:30 verbose #4 benchmark.run / solutions.map / {i = 2; test_name = │ 00:03:40 verbose #1546 > > │ closed_1; time = 619} │ 00:03:40 verbose #1547 > > │ 02:19:31 verbose #5 benchmark.run / solutions.map / {i = 3; test_name = │ 00:03:40 verbose #1548 > > │ semi_open_2; time = 644} │ 00:03:40 verbose #1549 > > │ 02:19:32 verbose #6 benchmark.run / solutions.map / {i = 4; test_name = │ 00:03:40 verbose #1550 > > │ closed_2; time = 610} │ 00:03:40 verbose #1551 > > │ │ 00:03:40 verbose #1552 > > │ 02:19:32 verbose #7 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │ 00:03:40 verbose #1553 > > │ 8; 9; 11|], 1, 7)} │ 00:03:40 verbose #1554 > > │ 02:19:33 verbose #8 benchmark.run / solutions.map / {i = 1; test_name = │ 00:03:40 verbose #1555 > > │ semi_open_1; time = 607} │ 00:03:40 verbose #1556 > > │ 02:19:33 verbose #9 benchmark.run / solutions.map / {i = 2; test_name = │ 00:03:40 verbose #1557 > > │ closed_1; time = 559} │ 00:03:40 verbose #1558 > > │ 02:19:34 verbose #10 benchmark.run / solutions.map / {i = 3; test_name │ 00:03:40 verbose #1559 > > │ = semi_open_2; time = 612} │ 00:03:40 verbose #1560 > > │ 02:19:35 verbose #11 benchmark.run / solutions.map / {i = 4; test_name │ 00:03:40 verbose #1561 > > │ = closed_2; time = 577} │ 00:03:40 verbose #1562 > > │ │ 00:03:40 verbose #1563 > > │ 02:19:35 verbose #12 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │ 00:03:40 verbose #1564 > > │ 8; 9; 11|], 11, 7)} │ 00:03:40 verbose #1565 > > │ 02:19:35 verbose #13 benchmark.run / solutions.map / {i = 1; test_name │ 00:03:40 verbose #1566 > > │ = semi_open_1; time = 550} │ 00:03:40 verbose #1567 > > │ 02:19:36 verbose #14 benchmark.run / solutions.map / {i = 2; test_name │ 00:03:40 verbose #1568 > > │ = closed_1; time = 580} │ 00:03:40 verbose #1569 > > │ 02:19:37 verbose #15 benchmark.run / solutions.map / {i = 3; test_name │ 00:03:40 verbose #1570 > > │ = semi_open_2; time = 624} │ 00:03:40 verbose #1571 > > │ 02:19:37 verbose #16 benchmark.run / solutions.map / {i = 4; test_name │ 00:03:40 verbose #1572 > > │ = closed_2; time = 590} │ 00:03:40 verbose #1573 > > │ │ 00:03:40 verbose #1574 > > │ 02:19:37 verbose #17 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │ 00:03:40 verbose #1575 > > │ 8; 9; 11|], 12, 7)} │ 00:03:40 verbose #1576 > > │ 02:19:38 verbose #18 benchmark.run / solutions.map / {i = 1; test_name │ 00:03:40 verbose #1577 > > │ = semi_open_1; time = 574} │ 00:03:40 verbose #1578 > > │ 02:19:39 verbose #19 benchmark.run / solutions.map / {i = 2; test_name │ 00:03:40 verbose #1579 > > │ = closed_1; time = 577} │ 00:03:40 verbose #1580 > > │ 02:19:39 verbose #20 benchmark.run / solutions.map / {i = 3; test_name │ 00:03:40 verbose #1581 > > │ = semi_open_2; time = 582} │ 00:03:40 verbose #1582 > > │ 02:19:40 verbose #21 benchmark.run / solutions.map / {i = 4; test_name │ 00:03:40 verbose #1583 > > │ = closed_2; time = 585} │ 00:03:40 verbose #1584 > > │ │ 00:03:40 verbose #1585 > > │ 02:19:40 verbose #22 benchmark.run / {input_str = struct ([|1; 2; 3; │ 00:03:40 verbose #1586 > > │ 4...00; ...|], 60, 1000)} │ 00:03:40 verbose #1587 > > │ 02:19:41 verbose #23 benchmark.run / solutions.map / {i = 1; test_name │ 00:03:40 verbose #1588 > > │ = semi_open_1; time = 610} │ 00:03:40 verbose #1589 > > │ 02:19:42 verbose #24 benchmark.run / solutions.map / {i = 2; test_name │ 00:03:40 verbose #1590 > > │ = closed_1; time = 672} │ 00:03:40 verbose #1591 > > │ 02:19:42 verbose #25 benchmark.run / solutions.map / {i = 3; test_name │ 00:03:40 verbose #1592 > > │ = semi_open_2; time = 636} │ 00:03:40 verbose #1593 > > │ 02:19:43 verbose #26 benchmark.run / solutions.map / {i = 4; test_name │ 00:03:40 verbose #1594 > > │ = closed_2; time = 629} │ 00:03:40 verbose #1595 > > │ │ 00:03:40 verbose #1596 > > │ 02:19:43 verbose #27 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │ 00:03:40 verbose #1597 > > │ 8; 9; 11|], 6, 7)} │ 00:03:40 verbose #1598 > > │ 02:19:44 verbose #28 benchmark.run / solutions.map / {i = 1; test_name │ 00:03:40 verbose #1599 > > │ = semi_open_1; time = 599} │ 00:03:40 verbose #1600 > > │ 02:19:44 verbose #29 benchmark.run / solutions.map / {i = 2; test_name │ 00:03:40 verbose #1601 > > │ = closed_1; time = 561} │ 00:03:40 verbose #1602 > > │ 02:19:45 verbose #30 benchmark.run / solutions.map / {i = 3; test_name │ 00:03:40 verbose #1603 > > │ = semi_open_2; time = 604} │ 00:03:40 verbose #1604 > > │ 02:19:46 verbose #31 benchmark.run / solutions.map / {i = 4; test_name │ 00:03:40 verbose #1605 > > │ = closed_2; time = 573} │ 00:03:40 verbose #1606 > > │ │ 00:03:40 verbose #1607 > > │ 02:19:46 verbose #32 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │ 00:03:40 verbose #1608 > > │ 8; 9; 11|], 1, 7)} │ 00:03:40 verbose #1609 > > │ 02:19:47 verbose #33 benchmark.run / solutions.map / {i = 1; test_name │ 00:03:40 verbose #1610 > > │ = semi_open_1; time = 635} │ 00:03:40 verbose #1611 > > │ 02:19:47 verbose #34 benchmark.run / solutions.map / {i = 2; test_name │ 00:03:40 verbose #1612 > > │ = closed_1; time = 603} │ 00:03:40 verbose #1613 > > │ 02:19:48 verbose #35 benchmark.run / solutions.map / {i = 3; test_name │ 00:03:40 verbose #1614 > > │ = semi_open_2; time = 644} │ 00:03:40 verbose #1615 > > │ 02:19:49 verbose #36 benchmark.run / solutions.map / {i = 4; test_name │ 00:03:40 verbose #1616 > > │ = closed_2; time = 628} │ 00:03:40 verbose #1617 > > │ │ 00:03:40 verbose #1618 > > │ 02:19:49 verbose #37 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │ 00:03:40 verbose #1619 > > │ 8; 9; 11|], 11, 7)} │ 00:03:40 verbose #1620 > > │ 02:19:49 verbose #38 benchmark.run / solutions.map / {i = 1; test_name │ 00:03:40 verbose #1621 > > │ = semi_open_1; time = 643} │ 00:03:40 verbose #1622 > > │ 02:19:50 verbose #39 benchmark.run / solutions.map / {i = 2; test_name │ 00:03:40 verbose #1623 > > │ = closed_1; time = 606} │ 00:03:40 verbose #1624 > > │ 02:19:51 verbose #40 benchmark.run / solutions.map / {i = 3; test_name │ 00:03:40 verbose #1625 > > │ = semi_open_2; time = 636} │ 00:03:40 verbose #1626 > > │ 02:19:52 verbose #41 benchmark.run / solutions.map / {i = 4; test_name │ 00:03:40 verbose #1627 > > │ = closed_2; time = 624} │ 00:03:40 verbose #1628 > > │ │ 00:03:40 verbose #1629 > > │ 02:19:52 verbose #42 benchmark.run / {input_str = struct ([|1; 3; 4; 6; │ 00:03:40 verbose #1630 > > │ 8; 9; 11|], 12, 7)} │ 00:03:40 verbose #1631 > > │ 02:19:52 verbose #43 benchmark.run / solutions.map / {i = 1; test_name │ 00:03:40 verbose #1632 > > │ = semi_open_1; time = 689} │ 00:03:40 verbose #1633 > > │ 02:19:53 verbose #44 benchmark.run / solutions.map / {i = 2; test_name │ 00:03:40 verbose #1634 > > │ = closed_1; time = 613} │ 00:03:40 verbose #1635 > > │ 02:19:54 verbose #45 benchmark.run / solutions.map / {i = 3; test_name │ 00:03:40 verbose #1636 > > │ = semi_open_2; time = 623} │ 00:03:40 verbose #1637 > > │ 02:19:55 verbose #46 benchmark.run / solutions.map / {i = 4; test_name │ 00:03:40 verbose #1638 > > │ = closed_2; time = 613} │ 00:03:40 verbose #1639 > > │ │ 00:03:40 verbose #1640 > > │ 02:19:55 verbose #47 benchmark.run / {input_str = struct ([|1; 2; 3; │ 00:03:40 verbose #1641 > > │ 4...100; ...|], 60, 100)} │ 00:03:40 verbose #1642 > > │ 02:19:55 verbose #48 benchmark.run / solutions.map / {i = 1; test_name │ 00:03:40 verbose #1643 > > │ = semi_open_1; time = 630} │ 00:03:40 verbose #1644 > > │ 02:19:56 verbose #49 benchmark.run / solutions.map / {i = 2; test_name │ 00:03:40 verbose #1645 > > │ = closed_1; time = 633} │ 00:03:40 verbose #1646 > > │ 02:19:57 verbose #50 benchmark.run / solutions.map / {i = 3; test_name │ 00:03:40 verbose #1647 > > │ = semi_open_2; time = 653} │ 00:03:40 verbose #1648 > > │ 02:19:58 verbose #51 benchmark.run / solutions.map / {i = 4; test_name │ 00:03:40 verbose #1649 > > │ = closed_2; time = 646} │ 00:03:40 verbose #1650 > > │ ``` │ 00:03:40 verbose #1651 > > │ input | expected | result | best │ 00:03:40 verbose #1652 > > │ --- | --- | --- | --- │ 00:03:40 verbose #1653 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7) | US4_0 3 | US4_0 3 | 4, 610 │ 00:03:40 verbose #1654 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7) | US4_0 0 | US4_0 0 | 2, 559 │ 00:03:40 verbose #1655 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7) | US4_0 6 | US4_0 6 | 1, 550 │ 00:03:40 verbose #1656 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7) | US4_1 | US4_1 | 1, 574 │ 00:03:40 verbose #1657 > > │ struct ([1; 2; 3; 4...00; ...], 60, 1000) | US4_0 59 | US4_0 59 | 1, 610 │ 00:03:40 verbose #1658 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7) | US4_0 3 | US4_0 3 | 2, 561 │ 00:03:40 verbose #1659 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7) | US4_0 0 | US4_0 0 | 2, 603 │ 00:03:40 verbose #1660 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7) | US4_0 6 | US4_0 6 | 2, 606 │ 00:03:40 verbose #1661 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7) | US4_1 | US4_1 | 2, 613 │ 00:03:40 verbose #1662 > > │ struct ([1; 2; 3; 4...100; ...], 60, 100) | US4_0 59 | US4_0 59 | 1, 630 │ 00:03:40 verbose #1663 > > │ ``` │ 00:03:40 verbose #1664 > > │ 02:19:58 verbose #52 benchmark.sort_result_list / averages.iter / {avg │ 00:03:40 verbose #1665 > > │ = 602; i = 2} │ 00:03:40 verbose #1666 > > │ 02:19:58 verbose #53 benchmark.sort_result_list / averages.iter / {avg │ 00:03:40 verbose #1667 > > │ = 607; i = 4} │ 00:03:40 verbose #1668 > > │ 02:19:58 verbose #54 benchmark.sort_result_list / averages.iter / {avg │ 00:03:40 verbose #1669 > > │ = 619; i = 1} │ 00:03:40 verbose #1670 > > │ 02:19:58 verbose #55 benchmark.sort_result_list / averages.iter / {avg │ 00:03:40 verbose #1671 > > │ = 625; i = 3} │ 00:03:40 verbose #1672 > > │ ``` │ 00:03:40 verbose #1673 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:40 verbose #1674 > > 00:03:40 verbose #1675 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:40 verbose #1676 > > //// test 00:03:40 verbose #1677 > > //// timeout=90000 00:03:40 verbose #1678 > > 00:03:40 verbose #1679 > > inl binary_search_semi_open_1 arr target left right = 00:03:40 verbose #1680 > > inl rec body left right = 00:03:40 verbose #1681 > > if left >= right 00:03:40 verbose #1682 > > then None 00:03:40 verbose #1683 > > else 00:03:40 verbose #1684 > > inl mid = (left + right) / 2 00:03:40 verbose #1685 > > inl item = index arr mid 00:03:40 verbose #1686 > > if item = target 00:03:40 verbose #1687 > > then Some mid 00:03:40 verbose #1688 > > elif item < target 00:03:40 verbose #1689 > > then loop (mid + 1) right 00:03:40 verbose #1690 > > else loop left mid 00:03:40 verbose #1691 > > and inl loop left right = 00:03:40 verbose #1692 > > if var_is right |> not 00:03:40 verbose #1693 > > then body left right 00:03:40 verbose #1694 > > else 00:03:40 verbose #1695 > > inl left = dyn left 00:03:40 verbose #1696 > > join body left right 00:03:40 verbose #1697 > > loop left right 00:03:40 verbose #1698 > > 00:03:40 verbose #1699 > > inl binary_search_closed_1 arr target left right = 00:03:40 verbose #1700 > > inl rec body left right = 00:03:40 verbose #1701 > > if left > right 00:03:40 verbose #1702 > > then None 00:03:40 verbose #1703 > > else 00:03:40 verbose #1704 > > inl mid = (left + right) / 2 00:03:40 verbose #1705 > > inl item = index arr mid 00:03:40 verbose #1706 > > if item = target 00:03:40 verbose #1707 > > then Some mid 00:03:40 verbose #1708 > > elif item < target 00:03:40 verbose #1709 > > then loop (mid + 1) right 00:03:40 verbose #1710 > > else loop left (mid - 1) 00:03:40 verbose #1711 > > and inl loop left right = 00:03:40 verbose #1712 > > if var_is right |> not 00:03:40 verbose #1713 > > then body left right 00:03:40 verbose #1714 > > else 00:03:40 verbose #1715 > > inl left = dyn left 00:03:40 verbose #1716 > > join body left right 00:03:40 verbose #1717 > > loop left right 00:03:40 verbose #1718 > > 00:03:40 verbose #1719 > > inl binary_search_semi_open_2 arr target left right = 00:03:40 verbose #1720 > > let rec body left right = 00:03:40 verbose #1721 > > if left >= right 00:03:40 verbose #1722 > > then None 00:03:40 verbose #1723 > > else 00:03:40 verbose #1724 > > inl mid = (left + right) / 2 00:03:40 verbose #1725 > > inl item = index arr mid 00:03:40 verbose #1726 > > if item = target 00:03:40 verbose #1727 > > then Some mid 00:03:40 verbose #1728 > > elif item < target 00:03:40 verbose #1729 > > then loop (mid + 1) right 00:03:40 verbose #1730 > > else loop left mid 00:03:40 verbose #1731 > > and inl loop left right = body left right 00:03:40 verbose #1732 > > loop left right 00:03:40 verbose #1733 > > 00:03:40 verbose #1734 > > inl binary_search_closed_2 arr target left right = 00:03:40 verbose #1735 > > let rec body left right = 00:03:40 verbose #1736 > > if left > right 00:03:40 verbose #1737 > > then None 00:03:40 verbose #1738 > > else 00:03:40 verbose #1739 > > inl mid = (left + right) / 2 00:03:40 verbose #1740 > > inl item = index arr mid 00:03:40 verbose #1741 > > if item = target 00:03:40 verbose #1742 > > then Some mid 00:03:40 verbose #1743 > > elif item < target 00:03:40 verbose #1744 > > then loop (mid + 1) right 00:03:40 verbose #1745 > > else loop left (mid - 1) 00:03:40 verbose #1746 > > and inl loop left right = body left right 00:03:40 verbose #1747 > > loop left right 00:03:40 verbose #1748 > > 00:03:40 verbose #1749 > > inl get_solutions () = 00:03:40 verbose #1750 > > [[ 00:03:40 verbose #1751 > > "semi_open_1", 00:03:40 verbose #1752 > > fun (arr, (target, len)) => 00:03:40 verbose #1753 > > binary_search_semi_open_1 arr target 0 len 00:03:40 verbose #1754 > > 00:03:40 verbose #1755 > > "closed_1", 00:03:40 verbose #1756 > > fun (arr, (target, len)) => 00:03:40 verbose #1757 > > binary_search_closed_1 arr target 0 (len - 1) 00:03:40 verbose #1758 > > 00:03:40 verbose #1759 > > "semi_open_2", 00:03:40 verbose #1760 > > fun (arr, (target, len)) => 00:03:40 verbose #1761 > > binary_search_semi_open_2 arr target 0 len 00:03:40 verbose #1762 > > 00:03:40 verbose #1763 > > "closed_2", 00:03:40 verbose #1764 > > fun (arr, (target, len)) => 00:03:40 verbose #1765 > > binary_search_closed_2 arr target 0 (len - 1) 00:03:40 verbose #1766 > > ]] 00:03:40 verbose #1767 > > 00:03:40 verbose #1768 > > inl rec binary_search_tests () = 00:03:40 verbose #1769 > > inl arr_with_len target len arr = 00:03:40 verbose #1770 > > arr, (target, (len |> optionm'.default_with fun () => length arr)) 00:03:40 verbose #1771 > > 00:03:40 verbose #1772 > > inl test_cases = [[ 00:03:40 verbose #1773 > > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 6 None), (Some 3i32) 00:03:40 verbose #1774 > > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 1 None), (Some 0i32) 00:03:40 verbose #1775 > > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 11 None), (Some 6i32) 00:03:40 verbose #1776 > > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 12 None), None 00:03:40 verbose #1777 > > ((am'.init_series 1i32 1000 1 |> fun x => a x : _ int _) |> arr_with_len 00:03:40 verbose #1778 > > 60 None), (Some 59) 00:03:40 verbose #1779 > > 00:03:40 verbose #1780 > > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 6 (Some 7)), (Some 00:03:40 verbose #1781 > > 3i32) 00:03:40 verbose #1782 > > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 1 (Some 7)), (Some 00:03:40 verbose #1783 > > 0i32) 00:03:40 verbose #1784 > > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 11 (Some 7)), (Some 00:03:40 verbose #1785 > > 6i32) 00:03:40 verbose #1786 > > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 12 (Some 7)), None 00:03:40 verbose #1787 > > ((am'.init_series 1i32 1000 1 |> fun x => a x : _ int _) |> arr_with_len 00:03:40 verbose #1788 > > 60 (Some 100)), (Some 59) 00:03:40 verbose #1789 > > ]] 00:03:40 verbose #1790 > > 00:03:40 verbose #1791 > > inl solutions = get_solutions () 00:03:40 verbose #1792 > > 00:03:40 verbose #1793 > > // inl is_fast () = true 00:03:40 verbose #1794 > > 00:03:40 verbose #1795 > > inl count = 00:03:40 verbose #1796 > > if is_fast () 00:03:40 verbose #1797 > > then 1000i32 00:03:40 verbose #1798 > > else 10000000i32 00:03:40 verbose #1799 > > 00:03:40 verbose #1800 > > run_all (reflection.nameof { binary_search_tests }) count solutions 00:03:40 verbose #1801 > > test_cases 00:03:40 verbose #1802 > > |> sort_result_list 00:03:40 verbose #1803 > > 00:03:40 verbose #1804 > > 00:03:40 verbose #1805 > > let main () = 00:03:40 verbose #1806 > > binary_search_tests () 00:03:51 verbose #1807 > > 00:03:51 verbose #1808 > > ╭─[ 11.47s - stdout ]──────────────────────────────────────────────────────────╮ 00:03:51 verbose #1809 > > │ │ 00:03:51 verbose #1810 > > │ ``` │ 00:03:51 verbose #1811 > > │ 00:00:00 verbose #1 benchmark.run_all / { test_name = │ 00:03:51 verbose #1812 > > │ binary_search_tests; count = 10000000 } │ 00:03:51 verbose #1813 > > │ │ 00:03:51 verbose #1814 > > │ 00:00:00 verbose #2 benchmark.run / { input_str = struct ([|1; 3; 4; 6; │ 00:03:51 verbose #1815 > > │ 8; 9; 11|], 6, 7) } │ 00:03:51 verbose #1816 > > │ 00:00:00 verbose #3 benchmark.run / solutions.map / { i = 1; test_name │ 00:03:51 verbose #1817 > > │ = semi_open_1; time = 259 } │ 00:03:51 verbose #1818 > > │ 00:00:00 verbose #4 benchmark.run / solutions.map / { i = 2; test_name │ 00:03:51 verbose #1819 > > │ = closed_1; time = 155 } │ 00:03:51 verbose #1820 > > │ 00:00:01 verbose #5 benchmark.run / solutions.map / { i = 3; test_name │ 00:03:51 verbose #1821 > > │ = semi_open_2; time = 243 } │ 00:03:51 verbose #1822 > > │ 00:00:01 verbose #6 benchmark.run / solutions.map / { i = 4; test_name │ 00:03:51 verbose #1823 > > │ = closed_2; time = 158 } │ 00:03:51 verbose #1824 > > │ │ 00:03:51 verbose #1825 > > │ 00:00:01 verbose #7 benchmark.run / { input_str = struct ([|1; 3; 4; 6; │ 00:03:51 verbose #1826 > > │ 8; 9; 11|], 1, 7) } │ 00:03:51 verbose #1827 > > │ 00:00:01 verbose #8 benchmark.run / solutions.map / { i = 1; test_name │ 00:03:51 verbose #1828 > > │ = semi_open_1; time = 184 } │ 00:03:51 verbose #1829 > > │ 00:00:02 verbose #9 benchmark.run / solutions.map / { i = 2; test_name │ 00:03:51 verbose #1830 > > │ = closed_1; time = 83 } │ 00:03:51 verbose #1831 > > │ 00:00:02 verbose #10 benchmark.run / solutions.map / { i = 3; test_name │ 00:03:51 verbose #1832 > > │ = semi_open_2; time = 83 } │ 00:03:51 verbose #1833 > > │ 00:00:02 verbose #11 benchmark.run / solutions.map / { i = 4; test_name │ 00:03:51 verbose #1834 > > │ = closed_2; time = 86 } │ 00:03:51 verbose #1835 > > │ │ 00:03:51 verbose #1836 > > │ 00:00:02 verbose #12 benchmark.run / { input_str = struct ([|1; 3; 4; │ 00:03:51 verbose #1837 > > │ 6; 8; 9; 11|], 11, 7) } │ 00:03:51 verbose #1838 > > │ 00:00:02 verbose #13 benchmark.run / solutions.map / { i = 1; test_name │ 00:03:51 verbose #1839 > > │ = semi_open_1; time = 83 } │ 00:03:51 verbose #1840 > > │ 00:00:02 verbose #14 benchmark.run / solutions.map / { i = 2; test_name │ 00:03:51 verbose #1841 > > │ = closed_1; time = 85 } │ 00:03:51 verbose #1842 > > │ 00:00:03 verbose #15 benchmark.run / solutions.map / { i = 3; test_name │ 00:03:51 verbose #1843 > > │ = semi_open_2; time = 82 } │ 00:03:51 verbose #1844 > > │ 00:00:03 verbose #16 benchmark.run / solutions.map / { i = 4; test_name │ 00:03:51 verbose #1845 > > │ = closed_2; time = 89 } │ 00:03:51 verbose #1846 > > │ │ 00:03:51 verbose #1847 > > │ 00:00:03 verbose #17 benchmark.run / { input_str = struct ([|1; 3; 4; │ 00:03:51 verbose #1848 > > │ 6; 8; 9; 11|], 12, 7) } │ 00:03:51 verbose #1849 > > │ 00:00:03 verbose #18 benchmark.run / solutions.map / { i = 1; test_name │ 00:03:51 verbose #1850 > > │ = semi_open_1; time = 88 } │ 00:03:51 verbose #1851 > > │ 00:00:03 verbose #19 benchmark.run / solutions.map / { i = 2; test_name │ 00:03:51 verbose #1852 > > │ = closed_1; time = 88 } │ 00:03:51 verbose #1853 > > │ 00:00:04 verbose #20 benchmark.run / solutions.map / { i = 3; test_name │ 00:03:51 verbose #1854 > > │ = semi_open_2; time = 86 } │ 00:03:51 verbose #1855 > > │ 00:00:04 verbose #21 benchmark.run / solutions.map / { i = 4; test_name │ 00:03:51 verbose #1856 > > │ = closed_2; time = 86 } │ 00:03:51 verbose #1857 > > │ │ 00:03:51 verbose #1858 > > │ 00:00:04 verbose #22 benchmark.run / { input_str = struct ([|1; 2; 3; │ 00:03:51 verbose #1859 > > │ 4...00; ...|], 60, 1000) } │ 00:03:51 verbose #1860 > > │ 00:00:04 verbose #23 benchmark.run / solutions.map / { i = 1; test_name │ 00:03:51 verbose #1861 > > │ = semi_open_1; time = 106 } │ 00:03:51 verbose #1862 > > │ 00:00:04 verbose #24 benchmark.run / solutions.map / { i = 2; test_name │ 00:03:51 verbose #1863 > > │ = closed_1; time = 116 } │ 00:03:51 verbose #1864 > > │ 00:00:05 verbose #25 benchmark.run / solutions.map / { i = 3; test_name │ 00:03:51 verbose #1865 > > │ = semi_open_2; time = 107 } │ 00:03:51 verbose #1866 > > │ 00:00:05 verbose #26 benchmark.run / solutions.map / { i = 4; test_name │ 00:03:51 verbose #1867 > > │ = closed_2; time = 118 } │ 00:03:51 verbose #1868 > > │ │ 00:03:51 verbose #1869 > > │ 00:00:05 verbose #27 benchmark.run / { input_str = struct ([|1; 3; 4; │ 00:03:51 verbose #1870 > > │ 6; 8; 9; 11|], 6, 7) } │ 00:03:51 verbose #1871 > > │ 00:00:05 verbose #28 benchmark.run / solutions.map / { i = 1; test_name │ 00:03:51 verbose #1872 > > │ = semi_open_1; time = 76 } │ 00:03:51 verbose #1873 > > │ 00:00:05 verbose #29 benchmark.run / solutions.map / { i = 2; test_name │ 00:03:51 verbose #1874 > > │ = closed_1; time = 73 } │ 00:03:51 verbose #1875 > > │ 00:00:06 verbose #30 benchmark.run / solutions.map / { i = 3; test_name │ 00:03:51 verbose #1876 > > │ = semi_open_2; time = 77 } │ 00:03:51 verbose #1877 > > │ 00:00:06 verbose #31 benchmark.run / solutions.map / { i = 4; test_name │ 00:03:51 verbose #1878 > > │ = closed_2; time = 72 } │ 00:03:51 verbose #1879 > > │ │ 00:03:51 verbose #1880 > > │ 00:00:06 verbose #32 benchmark.run / { input_str = struct ([|1; 3; 4; │ 00:03:51 verbose #1881 > > │ 6; 8; 9; 11|], 1, 7) } │ 00:03:51 verbose #1882 > > │ 00:00:06 verbose #33 benchmark.run / solutions.map / { i = 1; test_name │ 00:03:51 verbose #1883 > > │ = semi_open_1; time = 80 } │ 00:03:51 verbose #1884 > > │ 00:00:06 verbose #34 benchmark.run / solutions.map / { i = 2; test_name │ 00:03:51 verbose #1885 > > │ = closed_1; time = 82 } │ 00:03:51 verbose #1886 > > │ 00:00:07 verbose #35 benchmark.run / solutions.map / { i = 3; test_name │ 00:03:51 verbose #1887 > > │ = semi_open_2; time = 79 } │ 00:03:51 verbose #1888 > > │ 00:00:07 verbose #36 benchmark.run / solutions.map / { i = 4; test_name │ 00:03:51 verbose #1889 > > │ = closed_2; time = 81 } │ 00:03:51 verbose #1890 > > │ │ 00:03:51 verbose #1891 > > │ 00:00:07 verbose #37 benchmark.run / { input_str = struct ([|1; 3; 4; │ 00:03:51 verbose #1892 > > │ 6; 8; 9; 11|], 11, 7) } │ 00:03:51 verbose #1893 > > │ 00:00:07 verbose #38 benchmark.run / solutions.map / { i = 1; test_name │ 00:03:51 verbose #1894 > > │ = semi_open_1; time = 86 } │ 00:03:51 verbose #1895 > > │ 00:00:07 verbose #39 benchmark.run / solutions.map / { i = 2; test_name │ 00:03:51 verbose #1896 > > │ = closed_1; time = 83 } │ 00:03:51 verbose #1897 > > │ 00:00:07 verbose #40 benchmark.run / solutions.map / { i = 3; test_name │ 00:03:51 verbose #1898 > > │ = semi_open_2; time = 83 } │ 00:03:51 verbose #1899 > > │ 00:00:08 verbose #41 benchmark.run / solutions.map / { i = 4; test_name │ 00:03:51 verbose #1900 > > │ = closed_2; time = 83 } │ 00:03:51 verbose #1901 > > │ │ 00:03:51 verbose #1902 > > │ 00:00:08 verbose #42 benchmark.run / { input_str = struct ([|1; 3; 4; │ 00:03:51 verbose #1903 > > │ 6; 8; 9; 11|], 12, 7) } │ 00:03:51 verbose #1904 > > │ 00:00:08 verbose #43 benchmark.run / solutions.map / { i = 1; test_name │ 00:03:51 verbose #1905 > > │ = semi_open_1; time = 85 } │ 00:03:51 verbose #1906 > > │ 00:00:08 verbose #44 benchmark.run / solutions.map / { i = 2; test_name │ 00:03:51 verbose #1907 > > │ = closed_1; time = 86 } │ 00:03:51 verbose #1908 > > │ 00:00:08 verbose #45 benchmark.run / solutions.map / { i = 3; test_name │ 00:03:51 verbose #1909 > > │ = semi_open_2; time = 85 } │ 00:03:51 verbose #1910 > > │ 00:00:09 verbose #46 benchmark.run / solutions.map / { i = 4; test_name │ 00:03:51 verbose #1911 > > │ = closed_2; time = 86 } │ 00:03:51 verbose #1912 > > │ │ 00:03:51 verbose #1913 > > │ 00:00:09 verbose #47 benchmark.run / { input_str = struct ([|1; 2; 3; │ 00:03:51 verbose #1914 > > │ 4...100; ...|], 60, 100) } │ 00:03:51 verbose #1915 > > │ 00:00:09 verbose #48 benchmark.run / solutions.map / { i = 1; test_name │ 00:03:51 verbose #1916 > > │ = semi_open_1; time = 98 } │ 00:03:51 verbose #1917 > > │ 00:00:09 verbose #49 benchmark.run / solutions.map / { i = 2; test_name │ 00:03:51 verbose #1918 > > │ = closed_1; time = 104 } │ 00:03:51 verbose #1919 > > │ 00:00:09 verbose #50 benchmark.run / solutions.map / { i = 3; test_name │ 00:03:51 verbose #1920 > > │ = semi_open_2; time = 99 } │ 00:03:51 verbose #1921 > > │ 00:00:10 verbose #51 benchmark.run / solutions.map / { i = 4; test_name │ 00:03:51 verbose #1922 > > │ = closed_2; time = 104 } │ 00:03:51 verbose #1923 > > │ ``` │ 00:03:51 verbose #1924 > > │ input | expected | result | best │ 00:03:51 verbose #1925 > > │ --- | --- | --- | --- │ 00:03:51 verbose #1926 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7) | US4_0 3 | US4_0 3 | 2, 155 │ 00:03:51 verbose #1927 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7) | US4_0 0 | US4_0 0 | 2, 83 │ 00:03:51 verbose #1928 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7) | US4_0 6 | US4_0 6 | 3, 82 │ 00:03:51 verbose #1929 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7) | US4_1 | US4_1 | 3, 86 │ 00:03:51 verbose #1930 > > │ struct ([1; 2; 3; 4...00; ...], 60, 1000) | US4_0 59 | US4_0 59 | 1, 106 │ 00:03:51 verbose #1931 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7) | US4_0 3 | US4_0 3 | 4, 72 │ 00:03:51 verbose #1932 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7) | US4_0 0 | US4_0 0 | 3, 79 │ 00:03:51 verbose #1933 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7) | US4_0 6 | US4_0 6 | 2, 83 │ 00:03:51 verbose #1934 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7) | US4_1 | US4_1 | 1, 85 │ 00:03:51 verbose #1935 > > │ struct ([1; 2; 3; 4...100; ...], 60, 100) | US4_0 59 | US4_0 59 | 1, 98 │ 00:03:51 verbose #1936 > > │ ``` │ 00:03:51 verbose #1937 > > │ 00:00:10 verbose #52 benchmark.sort_result_list / averages.iter / { i = │ 00:03:51 verbose #1938 > > │ 2; avg = 95 } │ 00:03:51 verbose #1939 > > │ 00:00:10 verbose #53 benchmark.sort_result_list / averages.iter / { i = │ 00:03:51 verbose #1940 > > │ 4; avg = 96 } │ 00:03:51 verbose #1941 > > │ 00:00:10 verbose #54 benchmark.sort_result_list / averages.iter / { i = │ 00:03:51 verbose #1942 > > │ 3; avg = 102 } │ 00:03:51 verbose #1943 > > │ 00:00:10 verbose #55 benchmark.sort_result_list / averages.iter / { i = │ 00:03:51 verbose #1944 > > │ 1; avg = 114 } │ 00:03:51 verbose #1945 > > │ ``` │ 00:03:51 verbose #1946 > > │ │ 00:03:51 verbose #1947 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:51 verbose #1948 > > 00:03:51 verbose #1949 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:51 verbose #1950 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:51 verbose #1951 > > │ ## returnLettersWithOddCountTests │ 00:03:51 verbose #1952 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:51 verbose #1953 > > 00:03:51 verbose #1954 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:51 verbose #1955 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:51 verbose #1956 > > │ Test: ReturnLettersWithOddCount │ 00:03:51 verbose #1957 > > │ │ 00:03:51 verbose #1958 > > │ Solution: 1 │ 00:03:51 verbose #1959 > > │ Test case 1. A. Time: 645L │ 00:03:51 verbose #1960 > > │ │ 00:03:51 verbose #1961 > > │ Solution: 2 │ 00:03:51 verbose #1962 > > │ Test case 1. A. Time: 663L │ 00:03:51 verbose #1963 > > │ │ 00:03:51 verbose #1964 > > │ Solution: 3 │ 00:03:51 verbose #1965 > > │ Test case 1. A. Time: 680L │ 00:03:51 verbose #1966 > > │ │ 00:03:51 verbose #1967 > > │ Solution: 9 │ 00:03:51 verbose #1968 > > │ Test case 1. A. Time: 730L │ 00:03:51 verbose #1969 > > │ │ 00:03:51 verbose #1970 > > │ Solution: 10 │ 00:03:51 verbose #1971 > > │ Test case 1. A. Time: 815L │ 00:03:51 verbose #1972 > > │ │ 00:03:51 verbose #1973 > > │ Input | Expected | Result | Best │ 00:03:51 verbose #1974 > > │ --- | --- | --- | --- │ 00:03:51 verbose #1975 > > │ 1 | a | a | (1, 645) │ 00:03:51 verbose #1976 > > │ 2 | ba | ba | (1, 663) │ 00:03:51 verbose #1977 > > │ 3 | aaa | aaa | (1, 680) │ 00:03:51 verbose #1978 > > │ 9 | aaaaaaaaa | aaaaaaaaa | (1, 730) │ 00:03:51 verbose #1979 > > │ 10 | baaaaaaaaa | baaaaaaaaa | (1, 815) │ 00:03:51 verbose #1980 > > │ │ 00:03:51 verbose #1981 > > │ Averages │ 00:03:51 verbose #1982 > > │ Test case 1. Average Time: 706L │ 00:03:51 verbose #1983 > > │ │ 00:03:51 verbose #1984 > > │ Ranking │ 00:03:51 verbose #1985 > > │ Test case 1. Average Time: 706L │ 00:03:51 verbose #1986 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:51 verbose #1987 > > 00:03:51 verbose #1988 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:03:51 verbose #1989 > > //// test 00:03:51 verbose #1990 > > 00:03:51 verbose #1991 > > let solutions = [[ 00:03:51 verbose #1992 > > "A", 00:03:51 verbose #1993 > > fun n -> 00:03:51 verbose #1994 > > let mutable _builder = StringBuilder (new string('a', n)) 00:03:51 verbose #1995 > > if n % 2 = 0 then 00:03:51 verbose #1996 > > _builder.[[0]] <- 'b' 00:03:51 verbose #1997 > > 00:03:51 verbose #1998 > > _builder.ToString () 00:03:51 verbose #1999 > > ]] 00:03:51 verbose #2000 > > let testCases = seq { 00:03:51 verbose #2001 > > 1, "a" 00:03:51 verbose #2002 > > 2, "ba" 00:03:51 verbose #2003 > > 3, "aaa" 00:03:51 verbose #2004 > > 9, "aaaaaaaaa" 00:03:51 verbose #2005 > > 10, "baaaaaaaaa" 00:03:51 verbose #2006 > > } 00:03:51 verbose #2007 > > let rec returnLettersWithOddCountTests = 00:03:51 verbose #2008 > > runAll (nameof returnLettersWithOddCountTests) _count solutions testCases 00:03:51 verbose #2009 > > returnLettersWithOddCountTests 00:03:51 verbose #2010 > > |> sortResultList 00:03:54 verbose #2011 > > 00:03:54 verbose #2012 > > ╭─[ 2.81s - stdout ]───────────────────────────────────────────────────────────╮ 00:03:54 verbose #2013 > > │ │ 00:03:54 verbose #2014 > > │ │ 00:03:54 verbose #2015 > > │ Test: returnLettersWithOddCountTests │ 00:03:54 verbose #2016 > > │ │ 00:03:54 verbose #2017 > > │ Solution: 1 │ 00:03:54 verbose #2018 > > │ Test case 1. A. Time: 340L │ 00:03:54 verbose #2019 > > │ │ 00:03:54 verbose #2020 > > │ Solution: 2 │ 00:03:54 verbose #2021 > > │ Test case 1. A. Time: 390L │ 00:03:54 verbose #2022 > > │ │ 00:03:54 verbose #2023 > > │ Solution: 3 │ 00:03:54 verbose #2024 > > │ Test case 1. A. Time: 403L │ 00:03:54 verbose #2025 > > │ │ 00:03:54 verbose #2026 > > │ Solution: 9 │ 00:03:54 verbose #2027 > > │ Test case 1. A. Time: 375L │ 00:03:54 verbose #2028 > > │ │ 00:03:54 verbose #2029 > > │ Solution: 10 │ 00:03:54 verbose #2030 > > │ Test case 1. A. Time: 373L │ 00:03:54 verbose #2031 > > │ │ 00:03:54 verbose #2032 > > │ Input | Expected | Result | Best │ 00:03:54 verbose #2033 > > │ --- | --- | --- | --- │ 00:03:54 verbose #2034 > > │ 1 | a | a | (1, 340) │ 00:03:54 verbose #2035 > > │ 2 | ba | ba | (1, 390) │ 00:03:54 verbose #2036 > > │ 3 | aaa | aaa | (1, 403) │ 00:03:54 verbose #2037 > > │ 9 | aaaaaaaaa | aaaaaaaaa | (1, 375) │ 00:03:54 verbose #2038 > > │ 10 | baaaaaaaaa | baaaaaaaaa | (1, 373) │ 00:03:54 verbose #2039 > > │ │ 00:03:54 verbose #2040 > > │ Average Ranking │ 00:03:54 verbose #2041 > > │ Test case 1. Average Time: 376L │ 00:03:54 verbose #2042 > > │ │ 00:03:54 verbose #2043 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:54 verbose #2044 > > 00:03:54 verbose #2045 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:54 verbose #2046 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:54 verbose #2047 > > │ ## hasAnyPairCloseToEachotherTests │ 00:03:54 verbose #2048 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:54 verbose #2049 > > 00:03:54 verbose #2050 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:54 verbose #2051 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:54 verbose #2052 > > │ Test: HasAnyPairCloseToEachother │ 00:03:54 verbose #2053 > > │ │ 00:03:54 verbose #2054 > > │ Solution: 0 │ 00:03:54 verbose #2055 > > │ Test case 1. A. Time: 137L │ 00:03:54 verbose #2056 > > │ │ 00:03:54 verbose #2057 > > │ Solution: 1,2 │ 00:03:54 verbose #2058 > > │ Test case 1. A. Time: 186L │ 00:03:54 verbose #2059 > > │ │ 00:03:54 verbose #2060 > > │ Solution: 3,5 │ 00:03:54 verbose #2061 > > │ Test case 1. A. Time: 206L │ 00:03:54 verbose #2062 > > │ │ 00:03:54 verbose #2063 > > │ Solution: 3,4,6 │ 00:03:54 verbose #2064 > > │ Test case 1. A. Time: 149L │ 00:03:54 verbose #2065 > > │ │ 00:03:54 verbose #2066 > > │ Solution: 2,4,6 │ 00:03:54 verbose #2067 > > │ Test case 1. A. Time: 150L │ 00:03:54 verbose #2068 > > │ │ 00:03:54 verbose #2069 > > │ Input | Expected | Result | Best │ 00:03:54 verbose #2070 > > │ --- | --- | --- | --- │ 00:03:54 verbose #2071 > > │ 0 | False | False | (1, 137) │ 00:03:54 verbose #2072 > > │ 1,2 | True | True | (1, 186) │ 00:03:54 verbose #2073 > > │ 3,5 | False | False | (1, 206) │ 00:03:54 verbose #2074 > > │ 3,4,6 | True | True | (1, 149) │ 00:03:54 verbose #2075 > > │ 2,4,6 | False | False | (1, 150) │ 00:03:54 verbose #2076 > > │ │ 00:03:54 verbose #2077 > > │ Averages │ 00:03:54 verbose #2078 > > │ Test case 1. Average Time: 165L │ 00:03:54 verbose #2079 > > │ │ 00:03:54 verbose #2080 > > │ Ranking │ 00:03:54 verbose #2081 > > │ Test case 1. Average Time: 165L │ 00:03:54 verbose #2082 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:54 verbose #2083 > > 00:03:54 verbose #2084 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:03:54 verbose #2085 > > //// test 00:03:54 verbose #2086 > > 00:03:54 verbose #2087 > > let solutions = [[ 00:03:54 verbose #2088 > > "A", 00:03:54 verbose #2089 > > fun (a: int[[]]) -> 00:03:54 verbose #2090 > > let indices = System.Linq.Enumerable.Range(0, a.Length) |> 00:03:54 verbose #2091 > > System.Linq.Enumerable.ToArray 00:03:54 verbose #2092 > > System.Array.Sort (a, indices) 00:03:54 verbose #2093 > > 00:03:54 verbose #2094 > > indices 00:03:54 verbose #2095 > > |> Array.take (a.Length - 1) 00:03:54 verbose #2096 > > |> Array.exists (fun i -> a.[[i + 1]] - a.[[i]] = 1) 00:03:54 verbose #2097 > > ]] 00:03:54 verbose #2098 > > let testCases = seq { 00:03:54 verbose #2099 > > [[| 0 |]], false 00:03:54 verbose #2100 > > [[| 1; 2 |]], true 00:03:54 verbose #2101 > > [[| 3; 5 |]], false 00:03:54 verbose #2102 > > [[| 3; 4; 6 |]], true 00:03:54 verbose #2103 > > [[| 2; 4; 6 |]], false 00:03:54 verbose #2104 > > } 00:03:54 verbose #2105 > > let rec hasAnyPairCloseToEachotherTests = 00:03:54 verbose #2106 > > runAll (nameof hasAnyPairCloseToEachotherTests) _count solutions testCases 00:03:54 verbose #2107 > > hasAnyPairCloseToEachotherTests 00:03:54 verbose #2108 > > |> sortResultList 00:03:56 verbose #2109 > > 00:03:56 verbose #2110 > > ╭─[ 1.39s - stdout ]───────────────────────────────────────────────────────────╮ 00:03:56 verbose #2111 > > │ │ 00:03:56 verbose #2112 > > │ │ 00:03:56 verbose #2113 > > │ Test: hasAnyPairCloseToEachotherTests │ 00:03:56 verbose #2114 > > │ │ 00:03:56 verbose #2115 > > │ Solution: 0 │ 00:03:56 verbose #2116 > > │ Test case 1. A. Time: 152L │ 00:03:56 verbose #2117 > > │ │ 00:03:56 verbose #2118 > > │ Solution: 1,2 │ 00:03:56 verbose #2119 > > │ Test case 1. A. Time: 172L │ 00:03:56 verbose #2120 > > │ │ 00:03:56 verbose #2121 > > │ Solution: 3,5 │ 00:03:56 verbose #2122 > > │ Test case 1. A. Time: 78L │ 00:03:56 verbose #2123 > > │ │ 00:03:56 verbose #2124 > > │ Solution: 3,4,6 │ 00:03:56 verbose #2125 > > │ Test case 1. A. Time: 70L │ 00:03:56 verbose #2126 > > │ │ 00:03:56 verbose #2127 > > │ Solution: 2,4,6 │ 00:03:56 verbose #2128 > > │ Test case 1. A. Time: 70L │ 00:03:56 verbose #2129 > > │ │ 00:03:56 verbose #2130 > > │ Input | Expected | Result | Best │ 00:03:56 verbose #2131 > > │ --- | --- | --- | --- │ 00:03:56 verbose #2132 > > │ 0 | False | False | (1, 152) │ 00:03:56 verbose #2133 > > │ 1,2 | True | True | (1, 172) │ 00:03:56 verbose #2134 > > │ 3,5 | False | False | (1, 78) │ 00:03:56 verbose #2135 > > │ 3,4,6 | True | True | (1, 70) │ 00:03:56 verbose #2136 > > │ 2,4,6 | False | False | (1, 70) │ 00:03:56 verbose #2137 > > │ │ 00:03:56 verbose #2138 > > │ Average Ranking │ 00:03:56 verbose #2139 > > │ Test case 1. Average Time: 108L │ 00:03:56 verbose #2140 > > │ │ 00:03:56 verbose #2141 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:56 verbose #2142 > 00:03:55 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 158708 } 00:03:56 verbose #2143 > 00:03:55 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:03:56 verbose #2144 > "nbconvert", 00:03:56 verbose #2145 > "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb", 00:03:56 verbose #2146 > "--to", 00:03:56 verbose #2147 > "html", 00:03:56 verbose #2148 > "--HTMLExporter.theme=dark", 00:03:56 verbose #2149 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:03:56 verbose #2150 > 00:03:56 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb to html 00:03:56 verbose #2151 > 00:03:56 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:03:56 verbose #2152 > 00:03:56 verbose #7 ! validate(nb) 00:03:57 verbose #2153 > 00:03:56 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:03:57 verbose #2154 > 00:03:56 verbose #9 ! return _pygments_highlight( 00:03:57 verbose #2155 > 00:03:57 verbose #10 ! [NbConvertApp] Writing 458566 bytes to /home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.html 00:03:57 verbose #2156 > 00:03:57 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 890 } 00:03:57 verbose #2157 > 00:03:57 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 890 } 00:03:57 verbose #2158 > 00:03:57 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:03:57 verbose #2159 > "-c", 00:03:57 verbose #2160 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:03:57 verbose #2161 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:03:58 verbose #2162 > 00:03:57 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:03:58 verbose #2163 > 00:03:57 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:03:58 verbose #2164 > 00:03:57 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 159657 } 00:03:58 debug #2165 runtime.execute_with_options_async / { exit_code = 0; output_length = 166739 } 00:03:58 debug #1 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path Perf.dib --retries 3 00:00:00 debug #1 writeDibCode / output: Fs / path: Perf.dib 00:00:00 debug #2 parseDibCode / output: Fs / file: Perf.dib
In [ ]:
{ pwsh ../apps/dir-tree-html/build.ps1 } | Invoke-Block
00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 debug #1 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path DirTreeHtml.dib; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:00 verbose #2 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "DirTreeHtml.dib"])) } 00:00:00 verbose #3 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:00:00 verbose #4 > "repl", 00:00:00 verbose #5 > "--exit-after-run", 00:00:00 verbose #6 > "--run", 00:00:00 verbose #7 > "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib", 00:00:00 verbose #8 > "--output-path", 00:00:00 verbose #9 > "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb", 00:00:00 verbose #10 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:01 verbose #11 > > 00:00:01 verbose #12 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:01 verbose #13 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:01 verbose #14 > > │ # DirTreeHtml (Polyglot) │ 00:00:01 verbose #15 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:04 verbose #16 > > 00:00:04 verbose #17 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:04 verbose #18 > > #r 00:00:04 verbose #19 > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan 00:00:04 verbose #20 > > dard2.1/FSharp.Control.AsyncSeq.dll" 00:00:04 verbose #21 > > #r 00:00:04 verbose #22 > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. 00:00:04 verbose #23 > > 0/System.Reactive.dll" 00:00:04 verbose #24 > > #r 00:00:04 verbose #25 > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib 00:00:04 verbose #26 > > netstandard2.0/System.Reactive.Linq.dll" 00:00:04 verbose #27 > > #r 00:00:04 verbose #28 > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" 00:00:04 verbose #29 > > #r 00:00:04 verbose #30 > > @"../../../../../../../.nuget/packages/falco.markup/1.1.1/lib/netstandard2.0/Fal 00:00:04 verbose #31 > > co.Markup.dll" 00:00:16 verbose #32 > > 00:00:16 verbose #33 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #34 > > #if !INTERACTIVE 00:00:16 verbose #35 > > open Lib 00:00:16 verbose #36 > > #endif 00:00:16 verbose #37 > > 00:00:16 verbose #38 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #39 > > open SpiralFileSystem.Operators 00:00:16 verbose #40 > > open Falco.Markup 00:00:16 verbose #41 > > 00:00:16 verbose #42 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #43 > > type FileSystemNode = 00:00:16 verbose #44 > > | File of string * string * int64 00:00:16 verbose #45 > > | Folder of string * string * FileSystemNode list 00:00:16 verbose #46 > > | Root of FileSystemNode list 00:00:16 verbose #47 > > 00:00:16 verbose #48 > > let rec scanDirectory isRoot (basePath : string) (path : string) = 00:00:16 verbose #49 > > let relativePath = 00:00:16 verbose #50 > > path 00:00:16 verbose #51 > > |> SpiralSm.replace basePath "" 00:00:16 verbose #52 > > |> SpiralSm.replace "\\" "/" 00:00:16 verbose #53 > > |> SpiralSm.replace "//" "/" 00:00:16 verbose #54 > > |> SpiralSm.trim_start [[| '/' |]] 00:00:16 verbose #55 > > 00:00:16 verbose #56 > > let directories = 00:00:16 verbose #57 > > path 00:00:16 verbose #58 > > |> System.IO.Directory.GetDirectories 00:00:16 verbose #59 > > |> Array.toList 00:00:16 verbose #60 > > |> List.sort 00:00:16 verbose #61 > > |> List.map (scanDirectory false basePath) 00:00:16 verbose #62 > > let files = 00:00:16 verbose #63 > > path 00:00:16 verbose #64 > > |> System.IO.Directory.GetFiles 00:00:16 verbose #65 > > |> Array.toList 00:00:16 verbose #66 > > |> List.sort 00:00:16 verbose #67 > > |> List.map (fun f -> File (System.IO.Path.GetFileName f, relativePath, 00:00:16 verbose #68 > > System.IO.FileInfo(f).Length)) 00:00:16 verbose #69 > > 00:00:16 verbose #70 > > let children = directories @ files 00:00:16 verbose #71 > > if isRoot 00:00:16 verbose #72 > > then Root children 00:00:16 verbose #73 > > else Folder (path |> System.IO.Path.GetFileName, relativePath, children) 00:00:16 verbose #74 > > 00:00:16 verbose #75 > > let rec generateHtml fsNode = 00:00:16 verbose #76 > > let sizeLabel size = 00:00:16 verbose #77 > > match float size with 00:00:16 verbose #78 > > | size when size > 1024.0 * 1024.0 -> $"%.2f{size / 1024.0 / 1024.0} MB" 00:00:16 verbose #79 > > | size when size > 1024.0 -> $"%.2f{size / 1024.0} KB" 00:00:16 verbose #80 > > | size -> $"%.2f{size} B" 00:00:16 verbose #81 > > match fsNode with 00:00:16 verbose #82 > > | File (fileName, relativePath, size) -> 00:00:16 verbose #83 > > Elem.div [[]] [[ 00:00:16 verbose #84 > > Text.raw "📄 " 00:00:16 verbose #85 > > Elem.a [[ 00:00:16 verbose #86 > > Attr.href $"""{relativePath}{if relativePath = "" then "" else 00:00:16 verbose #87 > > "/"}{fileName}""" 00:00:16 verbose #88 > > ]] [[ 00:00:16 verbose #89 > > Text.raw fileName 00:00:16 verbose #90 > > ]] 00:00:16 verbose #91 > > Elem.span [[]] [[ 00:00:16 verbose #92 > > Text.raw $" ({size |> sizeLabel})" 00:00:16 verbose #93 > > ]] 00:00:16 verbose #94 > > ]] 00:00:16 verbose #95 > > | Folder (folderName, relativePath, children) -> 00:00:16 verbose #96 > > let size = 00:00:16 verbose #97 > > let rec loop children = 00:00:16 verbose #98 > > children 00:00:16 verbose #99 > > |> List.sumBy (function 00:00:16 verbose #100 > > | File (_, _, size) -> size 00:00:16 verbose #101 > > | Folder (_, _, children) 00:00:16 verbose #102 > > | Root children -> loop children 00:00:16 verbose #103 > > ) 00:00:16 verbose #104 > > loop children 00:00:16 verbose #105 > > Elem.details [[ 00:00:16 verbose #106 > > Attr.open' "true" 00:00:16 verbose #107 > > ]] [[ 00:00:16 verbose #108 > > Elem.summary [[]] [[ 00:00:16 verbose #109 > > Text.raw "📂 " 00:00:16 verbose #110 > > Elem.a [[ 00:00:16 verbose #111 > > Attr.href relativePath 00:00:16 verbose #112 > > ]] [[ 00:00:16 verbose #113 > > Text.raw folderName 00:00:16 verbose #114 > > ]] 00:00:16 verbose #115 > > Elem.span [[]] [[ 00:00:16 verbose #116 > > Text.raw $" ({size |> sizeLabel})" 00:00:16 verbose #117 > > ]] 00:00:16 verbose #118 > > ]] 00:00:16 verbose #119 > > Elem.div [[]] [[ 00:00:16 verbose #120 > > yield! children |> List.map generateHtml 00:00:16 verbose #121 > > ]] 00:00:16 verbose #122 > > ]] 00:00:16 verbose #123 > > | Root children -> 00:00:16 verbose #124 > > Elem.div [[]] [[ 00:00:16 verbose #125 > > yield! children |> List.map generateHtml 00:00:16 verbose #126 > > ]] 00:00:16 verbose #127 > > 00:00:16 verbose #128 > > let generateHtmlForFileSystem root = 00:00:16 verbose #129 > > $"""<!DOCTYPE html> 00:00:16 verbose #130 > > <html lang="en"> 00:00:16 verbose #131 > > <head> 00:00:16 verbose #132 > > <meta charset="UTF-8"> 00:00:16 verbose #133 > > <style> 00:00:16 verbose #134 > > body {{ 00:00:16 verbose #135 > > background-color: #222; 00:00:16 verbose #136 > > color: #ccc; 00:00:16 verbose #137 > > }} 00:00:16 verbose #138 > > a {{ 00:00:16 verbose #139 > > color: #777; 00:00:16 verbose #140 > > font-size: 15px; 00:00:16 verbose #141 > > }} 00:00:16 verbose #142 > > span {{ 00:00:16 verbose #143 > > font-size: 11px; 00:00:16 verbose #144 > > }} 00:00:16 verbose #145 > > div > div {{ 00:00:16 verbose #146 > > padding-left: 10px; 00:00:16 verbose #147 > > }} 00:00:16 verbose #148 > > details > div {{ 00:00:16 verbose #149 > > padding-left: 19px; 00:00:16 verbose #150 > > }} 00:00:16 verbose #151 > > </style> 00:00:16 verbose #152 > > </head> 00:00:16 verbose #153 > > <body> 00:00:16 verbose #154 > > {root |> generateHtml |> renderNode} 00:00:16 verbose #155 > > </body> 00:00:16 verbose #156 > > </html> 00:00:16 verbose #157 > > """ 00:00:16 verbose #158 > > 00:00:16 verbose #159 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #160 > > //// test 00:00:16 verbose #161 > > 00:00:16 verbose #162 > > let expected = """<!DOCTYPE html> 00:00:16 verbose #163 > > <html lang="en"> 00:00:16 verbose #164 > > <head> 00:00:16 verbose #165 > > <meta charset="UTF-8"> 00:00:16 verbose #166 > > <style> 00:00:16 verbose #167 > > body { 00:00:16 verbose #168 > > background-color: #222; 00:00:16 verbose #169 > > color: #ccc; 00:00:16 verbose #170 > > } 00:00:16 verbose #171 > > a { 00:00:16 verbose #172 > > color: #777; 00:00:16 verbose #173 > > font-size: 15px; 00:00:16 verbose #174 > > } 00:00:16 verbose #175 > > span { 00:00:16 verbose #176 > > font-size: 11px; 00:00:16 verbose #177 > > } 00:00:16 verbose #178 > > div > div { 00:00:16 verbose #179 > > padding-left: 10px; 00:00:16 verbose #180 > > } 00:00:16 verbose #181 > > details > div { 00:00:16 verbose #182 > > padding-left: 19px; 00:00:16 verbose #183 > > } 00:00:16 verbose #184 > > </style> 00:00:16 verbose #185 > > </head> 00:00:16 verbose #186 > > <body> 00:00:16 verbose #187 > > <div><details open="true"><summary>📂 <a href="_.root">_.root</a><span> 00:00:16 verbose #188 > > (10.00 B)</span></summary><div><details open="true"><summary>📂 <a 00:00:16 verbose #189 > > href="_.root/3">3</a><span> (6.00 B)</span></summary><div><details 00:00:16 verbose #190 > > open="true"><summary>📂 <a href="_.root/3/2">2</a><span> (3.00 00:00:16 verbose #191 > > B)</span></summary><div><details open="true"><summary>📂 <a 00:00:16 verbose #192 > > href="_.root/3/2/1">1</a><span> (1.00 B)</span></summary><div><div>📄 <a 00:00:16 verbose #193 > > href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00 00:00:16 verbose #194 > > B)</span></div></div></details><div>📄 <a 00:00:16 verbose #195 > > href="_.root/3/2/file.txt">file.txt</a><span> (2.00 00:00:16 verbose #196 > > B)</span></div></div></details><div>📄 <a 00:00:16 verbose #197 > > href="_.root/3/file.txt">file.txt</a><span> (3.00 00:00:16 verbose #198 > > B)</span></div></div></details><div>📄 <a 00:00:16 verbose #199 > > href="_.root/file.txt">file.txt</a><span> (4.00 00:00:16 verbose #200 > > B)</span></div></div></details></div> 00:00:16 verbose #201 > > </body> 00:00:16 verbose #202 > > </html> 00:00:16 verbose #203 > > """ 00:00:16 verbose #204 > > 00:00:16 verbose #205 > > let struct (tempFolder, disposable) = expected |> SpiralCrypto.hash_text |> 00:00:16 verbose #206 > > SpiralFileSystem.create_temp_dir' 00:00:16 verbose #207 > > let rec loop d n = async { 00:00:16 verbose #208 > > if n >= 0 then 00:00:16 verbose #209 > > tempFolder </> d |> System.IO.Directory.CreateDirectory |> ignore 00:00:16 verbose #210 > > do! 00:00:16 verbose #211 > > n 00:00:16 verbose #212 > > |> string 00:00:16 verbose #213 > > |> String.replicate (n + 1) 00:00:16 verbose #214 > > |> SpiralFileSystem.write_all_text_async (tempFolder </> d </> 00:00:16 verbose #215 > > $"file.txt") 00:00:16 verbose #216 > > do! loop $"{d}/{n}" (n - 1) 00:00:16 verbose #217 > > } 00:00:16 verbose #218 > > loop "_.root" 3 00:00:16 verbose #219 > > |> Async.RunSynchronously 00:00:16 verbose #220 > > 00:00:16 verbose #221 > > let html = 00:00:16 verbose #222 > > scanDirectory true tempFolder tempFolder 00:00:16 verbose #223 > > |> generateHtmlForFileSystem 00:00:16 verbose #224 > > 00:00:16 verbose #225 > > html 00:00:16 verbose #226 > > |> _assertEqual expected 00:00:16 verbose #227 > > 00:00:16 verbose #228 > > disposable.Dispose () 00:00:16 verbose #229 > > 00:00:16 verbose #230 > > html |> Microsoft.DotNet.Interactive.Formatting.Html.ToHtmlContent 00:00:16 verbose #231 > > 00:00:16 verbose #232 > > ╭─[ 116.54ms - return value ]──────────────────────────────────────────────────╮ 00:00:16 verbose #233 > > │ <!DOCTYPE html> │ 00:00:16 verbose #234 > > │ <html lang="en"> │ 00:00:16 verbose #235 > > │ <head> │ 00:00:16 verbose #236 > > │ <meta charset="UTF-8"> │ 00:00:16 verbose #237 > > │ <style> │ 00:00:16 verbose #238 > > │ body { │ 00:00:16 verbose #239 > > │ background-color: #222; │ 00:00:16 verbose #240 > > │ color: #ccc; │ 00:00:16 verbose #241 > > │ } │ 00:00:16 verbose #242 > > │ a { │ 00:00:16 verbose #243 > > │ color: #777; │ 00:00:16 verbose #244 > > │ font-size: 15px; │ 00:00:16 verbose #245 > > │ } │ 00:00:16 verbose #246 > > │ span { │ 00:00:16 verbose #247 > > │ font-size: 11px; │ 00:00:16 verbose #248 > > │ } │ 00:00:16 verbose #249 > > │ div > div { │ 00:00:16 verbose #250 > > │ padding-left: 10px; │ 00:00:16 verbose #251 > > │ } │ 00:00:16 verbose #252 > > │ details > div { │ 00:00:16 verbose #253 > > │ padding-left: 19px; │ 00:00:16 verbose #254 > > │ } │ 00:00:16 verbose #255 > > │ </style> │ 00:00:16 verbose #256 > > │ </head> │ 00:00:16 verbose #257 > > │ <body> │ 00:00:16 verbose #258 > > │ <div><details open="true"><summary>📂 <a │ 00:00:16 verbose #259 > > │ href="_.root">_.root</a><span> (10.00 B)</span></summary><div><details │ 00:00:16 verbose #260 > > │ open="true"><summary>📂 <a href="_.root/3">3</a><span> (6.00 │ 00:00:16 verbose #261 > > │ B)</span></summary><div><details open="true"><summary>📂 <a │ 00:00:16 verbose #262 > > │ href="_.root/3/2">2</a><span> (3.00 B)</span></summary><div><details │ 00:00:16 verbose #263 > > │ open="true"><summary>📂 <a href="_.root/3/2/1">1</a><span> (1.00 │ 00:00:16 verbose #264 > > │ B)</span></summary><div><div>📄 <a │ 00:00:16 verbose #265 > > │ href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00 │ 00:00:16 verbose #266 > > │ B)</span></div></div></details><div>📄 <a │ 00:00:16 verbose #267 > > │ href="_.root/3/2/file.txt">file.txt</a><span> (2.00 │ 00:00:16 verbose #268 > > │ B)</span></div></div></details><div>📄 <a │ 00:00:16 verbose #269 > > │ href="_.root/3/file.txt">file.txt</a><span> (3.00 │ 00:00:16 verbose #270 > > │ B)</span></div></div></details><div>📄 <a │ 00:00:16 verbose #271 > > │ href="_.root/file.txt">file.txt</a><span> (4.00 │ 00:00:16 verbose #272 > > │ B)</span></div></div></details></div> │ 00:00:16 verbose #273 > > │ </body> │ 00:00:16 verbose #274 > > │ </html> │ 00:00:16 verbose #275 > > │ │ 00:00:16 verbose #276 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #277 > > 00:00:16 verbose #278 > > ╭─[ 120.33ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:16 verbose #279 > > │ "<!DOCTYPE html> │ 00:00:16 verbose #280 > > │ <html lang="en"> │ 00:00:16 verbose #281 > > │ <head> │ 00:00:16 verbose #282 > > │ <meta charset="UTF-8"> │ 00:00:16 verbose #283 > > │ <style> │ 00:00:16 verbose #284 > > │ body { │ 00:00:16 verbose #285 > > │ background-color: #222; │ 00:00:16 verbose #286 > > │ color: #ccc; │ 00:00:16 verbose #287 > > │ } │ 00:00:16 verbose #288 > > │ a { │ 00:00:16 verbose #289 > > │ color: #777; │ 00:00:16 verbose #290 > > │ font-size: 15px; │ 00:00:16 verbose #291 > > │ } │ 00:00:16 verbose #292 > > │ span { │ 00:00:16 verbose #293 > > │ font-size: 11px; │ 00:00:16 verbose #294 > > │ } │ 00:00:16 verbose #295 > > │ div > div { │ 00:00:16 verbose #296 > > │ padding-left: 10px; │ 00:00:16 verbose #297 > > │ } │ 00:00:16 verbose #298 > > │ details > div { │ 00:00:16 verbose #299 > > │ padding-left: 19px; │ 00:00:16 verbose #300 > > │ } │ 00:00:16 verbose #301 > > │ </style> │ 00:00:16 verbose #302 > > │ </head> │ 00:00:16 verbose #303 > > │ <body> │ 00:00:16 verbose #304 > > │ <div><details open="true"><summary>📂 <a │ 00:00:16 verbose #305 > > │ href="_.root">_.root</a><span> (10.00 B)</span></summary><div><details │ 00:00:16 verbose #306 > > │ open="true"><summary>📂 <a href="_.root/3">3</a><span> (6.00 │ 00:00:16 verbose #307 > > │ B)</span></summary><div><details open="true"><summary>📂 <a │ 00:00:16 verbose #308 > > │ href="_.root/3/2">2</a><span> (3.00 B)</span></summary><div><details │ 00:00:16 verbose #309 > > │ open="true"><summary>📂 <a href="_.root/3/2/1">1</a><span> (1.00 │ 00:00:16 verbose #310 > > │ B)</span></summary><div><div>📄 <a │ 00:00:16 verbose #311 > > │ href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00 │ 00:00:16 verbose #312 > > │ B)</span></div></div></details><div>📄 <a │ 00:00:16 verbose #313 > > │ href="_.root/3/2/file.txt">file.txt</a><span> (2.00 │ 00:00:16 verbose #314 > > │ B)</span></div></div></details><div>📄 <a │ 00:00:16 verbose #315 > > │ href="_.root/3/file.txt">file.txt</a><span> (3.00 │ 00:00:16 verbose #316 > > │ B)</span></div></div></details><div>📄 <a │ 00:00:16 verbose #317 > > │ href="_.root/file.txt">file.txt</a><span> (4.00 │ 00:00:16 verbose #318 > > │ B)</span></div></div></details></div> │ 00:00:16 verbose #319 > > │ </body> │ 00:00:16 verbose #320 > > │ </html> │ 00:00:16 verbose #321 > > │ " │ 00:00:16 verbose #322 > > │ │ 00:00:16 verbose #323 > > │ │ 00:00:16 verbose #324 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #325 > > 00:00:16 verbose #326 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 verbose #327 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:16 verbose #328 > > │ ## Arguments │ 00:00:16 verbose #329 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #330 > > 00:00:16 verbose #331 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #332 > > [[<RequireQualifiedAccess>]] 00:00:16 verbose #333 > > type Arguments = 00:00:16 verbose #334 > > | [[<Argu.ArguAttributes.ExactlyOnce>]] Dir of string 00:00:16 verbose #335 > > | [[<Argu.ArguAttributes.ExactlyOnce>]] Html of string 00:00:16 verbose #336 > > 00:00:16 verbose #337 > > interface Argu.IArgParserTemplate with 00:00:16 verbose #338 > > member s.Usage = 00:00:16 verbose #339 > > match s with 00:00:16 verbose #340 > > | Dir _ -> nameof Dir 00:00:16 verbose #341 > > | Html _ -> nameof Html 00:00:16 verbose #342 > > 00:00:16 verbose #343 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #344 > > //// test 00:00:16 verbose #345 > > 00:00:16 verbose #346 > > Argu.ArgumentParser.Create<Arguments>().PrintUsage () 00:00:16 verbose #347 > > 00:00:16 verbose #348 > > ╭─[ 65.98ms - return value ]───────────────────────────────────────────────────╮ 00:00:16 verbose #349 > > │ "USAGE: dotnet-repl [--help] --dir <string> --html <string> │ 00:00:16 verbose #350 > > │ │ 00:00:16 verbose #351 > > │ OPTIONS: │ 00:00:16 verbose #352 > > │ │ 00:00:16 verbose #353 > > │ --dir <string> Dir │ 00:00:16 verbose #354 > > │ --html <string> Html │ 00:00:16 verbose #355 > > │ --help display this list of options. │ 00:00:16 verbose #356 > > │ " │ 00:00:16 verbose #357 > > │ │ 00:00:16 verbose #358 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #359 > > 00:00:16 verbose #360 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 verbose #361 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:16 verbose #362 > > │ ## main │ 00:00:16 verbose #363 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #364 > > 00:00:16 verbose #365 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #366 > > let main args = 00:00:16 verbose #367 > > let argsMap = args |> Runtime.parseArgsMap<Arguments> 00:00:16 verbose #368 > > 00:00:16 verbose #369 > > let dir = 00:00:16 verbose #370 > > match argsMap.[[nameof Arguments.Dir]] with 00:00:16 verbose #371 > > | [[ Arguments.Dir dir ]] -> Some dir 00:00:16 verbose #372 > > | _ -> None 00:00:16 verbose #373 > > |> Option.get 00:00:16 verbose #374 > > 00:00:16 verbose #375 > > let htmlPath = 00:00:16 verbose #376 > > match argsMap.[[nameof Arguments.Html]] with 00:00:16 verbose #377 > > | [[ Arguments.Html html ]] -> Some html 00:00:16 verbose #378 > > | _ -> None 00:00:16 verbose #379 > > |> Option.get 00:00:16 verbose #380 > > 00:00:16 verbose #381 > > let fileSystem = scanDirectory true dir dir 00:00:16 verbose #382 > > let html = generateHtmlForFileSystem fileSystem 00:00:16 verbose #383 > > 00:00:16 verbose #384 > > html |> SpiralFileSystem.write_all_text_async htmlPath 00:00:16 verbose #385 > > |> Async.runWithTimeout 30000 00:00:16 verbose #386 > > |> function 00:00:16 verbose #387 > > | Some () -> 0 00:00:16 verbose #388 > > | None -> 1 00:00:16 verbose #389 > > 00:00:16 verbose #390 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 verbose #391 > > //// test 00:00:16 verbose #392 > > 00:00:16 verbose #393 > > let args = 00:00:16 verbose #394 > > System.Environment.GetEnvironmentVariable "ARGS" 00:00:16 verbose #395 > > |> SpiralRuntime.split_args 00:00:16 verbose #396 > > |> Result.toArray 00:00:16 verbose #397 > > |> Array.collect id 00:00:16 verbose #398 > > 00:00:16 verbose #399 > > match args with 00:00:16 verbose #400 > > | [[||]] -> 0 00:00:16 verbose #401 > > | args -> if main args = 0 then 0 else failwith "main failed" 00:00:16 verbose #402 > > 00:00:16 verbose #403 > > ╭─[ 61.94ms - return value ]───────────────────────────────────────────────────╮ 00:00:16 verbose #404 > > │ <div class="dni-plaintext"><pre>0 │ 00:00:16 verbose #405 > > │ </pre></div><style> │ 00:00:16 verbose #406 > > │ .dni-code-hint { │ 00:00:16 verbose #407 > > │ font-style: italic; │ 00:00:16 verbose #408 > > │ overflow: hidden; │ 00:00:16 verbose #409 > > │ white-space: nowrap; │ 00:00:16 verbose #410 > > │ } │ 00:00:16 verbose #411 > > │ .dni-treeview { │ 00:00:16 verbose #412 > > │ white-space: nowrap; │ 00:00:16 verbose #413 > > │ } │ 00:00:16 verbose #414 > > │ .dni-treeview td { │ 00:00:16 verbose #415 > > │ vertical-align: top; │ 00:00:16 verbose #416 > > │ text-align: start; │ 00:00:16 verbose #417 > > │ } │ 00:00:16 verbose #418 > > │ details.dni-treeview { │ 00:00:16 verbose #419 > > │ padding-left: 1em; │ 00:00:16 verbose #420 > > │ } │ 00:00:16 verbose #421 > > │ table td { │ 00:00:16 verbose #422 > > │ text-align: start; │ 00:00:16 verbose #423 > > │ } │ 00:00:16 verbose #424 > > │ table tr { │ 00:00:16 verbose #425 > > │ vertical-align: top; │ 00:00:16 verbose #426 > > │ margin: 0em 0px; │ 00:00:16 verbose #427 > > │ } │ 00:00:16 verbose #428 > > │ table tr td pre │ 00:00:16 verbose #429 > > │ { │ 00:00:16 verbose #430 > > │ vertical-align: top !important; │ 00:00:16 verbose #431 > > │ margin: 0em 0px !important; │ 00:00:16 verbose #432 > > │ } │ 00:00:16 verbose #433 > > │ table th { │ 00:00:16 verbose #434 > > │ text-align: start; │ 00:00:16 verbose #435 > > │ } │ 00:00:16 verbose #436 > > │ </style> │ 00:00:16 verbose #437 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:16 verbose #438 > 00:00:16 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 23599 } 00:00:16 verbose #439 > 00:00:16 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:00:16 verbose #440 > "nbconvert", 00:00:16 verbose #441 > "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb", 00:00:16 verbose #442 > "--to", 00:00:16 verbose #443 > "html", 00:00:16 verbose #444 > "--HTMLExporter.theme=dark", 00:00:16 verbose #445 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:17 verbose #446 > 00:00:17 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb to html 00:00:17 verbose #447 > 00:00:17 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:17 verbose #448 > 00:00:17 verbose #7 ! validate(nb) 00:00:18 verbose #449 > 00:00:17 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:18 verbose #450 > 00:00:17 verbose #9 ! return _pygments_highlight( 00:00:18 verbose #451 > 00:00:17 verbose #10 ! [NbConvertApp] Writing 310017 bytes to /home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html 00:00:18 verbose #452 > 00:00:17 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 922 } 00:00:18 verbose #453 > 00:00:17 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 922 } 00:00:18 verbose #454 > 00:00:17 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:00:18 verbose #455 > "-c", 00:00:18 verbose #456 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:00:18 verbose #457 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:18 verbose #458 > 00:00:18 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:18 verbose #459 > 00:00:18 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:18 verbose #460 > 00:00:18 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 24580 } 00:00:18 debug #461 runtime.execute_with_options_async / { exit_code = 0; output_length = 28369 } 00:00:18 debug #1 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path DirTreeHtml.dib #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] #endif type std_string_String = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] #endif type Ref<'T> = class end module State = let mutable trace_state = None #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>] #endif type std_env_VarError = class end type IOsEnviron = abstract environ: x: unit -> obj #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("str")>] #endif type Str = class end type [<Struct>] US0 = | US0_0 | US0_1 | US0_2 | US0_3 | US0_4 and Mut0 = {mutable l0 : int64} and Mut1 = {mutable l0 : (string -> unit)} and Mut2 = {mutable l0 : bool} and Mut3 = {mutable l0 : US0} and [<Struct>] US1 = | US1_0 of f0_0 : string | US1_1 and [<Struct>] US2 = | US2_0 of f0_0 : US0 | US2_1 and [<Struct>] US3 = | US3_0 of f0_0 : int64 | US3_1 and Mut4 = {mutable l0 : string} and [<Struct>] US4 = | US4_0 of f0_0 : bool | US4_1 and [<Struct>] US5 = | US5_0 of f0_0 : bool | US5_1 of f1_0 : exn and [<Struct>] US6 = | US6_0 of f0_0 : bool | US6_1 of f1_0 : exn and [<Struct>] US7 = | US7_0 of f0_0 : int32 | US7_1 let rec method1 () : string = let v0 : string = "TRACE_LEVEL" v0 and method3 () : string = let v0 : string = "" v0 and closure1 (v0 : US1 option ref) (v1 : US1 option) : US1 option ref = v0.Value <- v1 v0 and closure2 (v0 : string option, v1 : (US1 option -> US1 option ref)) () : unit = match v0 with | Some x -> ( (fun () -> (fun () -> let v2 : string = x let v3 : US1 = US1_0(v2) v3 ) |> fun x -> x () |> Some ) () ) | None -> None |> v1 |> ignore () and method2 (v0 : string) : string = let v1 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v2 : string = "std::env::var(&*$0)" let v3 : Result<std_string_String, std_env_VarError> = Fable.Core.RustInterop.emitRustExpr v0 v2 let v4 : string = "true; let _result_map_ = $0.map(|x| { //" let v5 : bool = Fable.Core.RustInterop.emitRustExpr v3 v4 let v6 : string = "x" let v7 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v6 let v8 : string = "fable_library_rust::String_::fromString($0)" let v9 : string = Fable.Core.RustInterop.emitRustExpr v7 v8 let v10 : string = "true; $0 })" let v11 : bool = Fable.Core.RustInterop.emitRustExpr v9 v10 let v12 : string = "_result_map_" let v13 : Result<string, std_env_VarError> = Fable.Core.RustInterop.emitRustExpr () v12 let v14 : string = method3() let v15 : string = "$0.unwrap_or($1)" let v16 : string = Fable.Core.RustInterop.emitRustExpr struct (v13, v14) v15 let _v1 = v16 #endif #if FABLE_COMPILER_RUST && WASM let v17 : string = "std::env::var(&*$0)" let v18 : Result<std_string_String, std_env_VarError> = Fable.Core.RustInterop.emitRustExpr v0 v17 let v19 : string = "true; let _result_map_ = $0.map(|x| { //" let v20 : bool = Fable.Core.RustInterop.emitRustExpr v18 v19 let v21 : string = "x" let v22 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v21 let v23 : string = "fable_library_rust::String_::fromString($0)" let v24 : string = Fable.Core.RustInterop.emitRustExpr v22 v23 let v25 : string = "true; $0 })" let v26 : bool = Fable.Core.RustInterop.emitRustExpr v24 v25 let v27 : string = "_result_map_" let v28 : Result<string, std_env_VarError> = Fable.Core.RustInterop.emitRustExpr () v27 let v29 : string = method3() let v30 : string = "$0.unwrap_or($1)" let v31 : string = Fable.Core.RustInterop.emitRustExpr struct (v28, v29) v30 let _v1 = v31 #endif #if FABLE_COMPILER_RUST && CONTRACT let v32 : string = "std::env::var(&*$0)" let v33 : Result<std_string_String, std_env_VarError> = Fable.Core.RustInterop.emitRustExpr v0 v32 let v34 : string = "true; let _result_map_ = $0.map(|x| { //" let v35 : bool = Fable.Core.RustInterop.emitRustExpr v33 v34 let v36 : string = "x" let v37 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v36 let v38 : string = "fable_library_rust::String_::fromString($0)" let v39 : string = Fable.Core.RustInterop.emitRustExpr v37 v38 let v40 : string = "true; $0 })" let v41 : bool = Fable.Core.RustInterop.emitRustExpr v39 v40 let v42 : string = "_result_map_" let v43 : Result<string, std_env_VarError> = Fable.Core.RustInterop.emitRustExpr () v42 let v44 : string = method3() let v45 : string = "$0.unwrap_or($1)" let v46 : string = Fable.Core.RustInterop.emitRustExpr struct (v43, v44) v45 let _v1 = v46 #endif #if FABLE_COMPILER_TYPESCRIPT let v47 : string = "process.env[$0] ?? \"\"" let v48 : string = Fable.Core.JsInterop.emitJsExpr v0 v47 let _v1 = v48 #endif #if FABLE_COMPILER_PYTHON let v49 : string = "os" let v50 : IOsEnviron = Fable.Core.PyInterop.importAll v49 let v51 : string = "v50.environ" let v52 : obj = Fable.Core.PyInterop.emitPyExpr () v51 let v55 : string = "v52.get($0)" let v56 : string = Fable.Core.PyInterop.emitPyExpr v0 v55 let mutable _v56 = None #if !FABLE_COMPILER && !WASM && !CONTRACT let v59 : (string -> string option) = Option.ofObj let v60 : string option = v59 v56 v60 #else Some v56 #endif |> fun x -> _v56 <- Some x let v61 : string option = match _v56 with Some x -> x | None -> failwith "optionm'.of_obj / _v56=None" let v64 : US1 option = None let _v64 = ref v64 let v65 : US1 option ref = _v64 let v66 : (US1 option -> US1 option ref) = closure1(v65) let v67 : unit = () let v68 : (unit -> unit) = closure2(v61, v66) let v69 : unit = (fun () -> v68 (); v67) () let v72 : US1 option = _v64.Value let v83 : US1 = US1_1 let v84 : US1 = v72 |> Option.defaultValue v83 let v91 : string = match v84 with | US1_1 -> (* None *) let v89 : string = "" v89 | US1_0(v88) -> (* Some *) v88 let _v1 = v91 #endif #else let v92 : (string -> string) = System.Environment.GetEnvironmentVariable let v93 : string = v92 v0 let mutable _v93 = None #if !FABLE_COMPILER && !WASM && !CONTRACT let v94 : (string -> string option) = Option.ofObj let v95 : string option = v94 v93 v95 #else Some v93 #endif |> fun x -> _v93 <- Some x let v96 : string option = match _v93 with Some x -> x | None -> failwith "optionm'.of_obj / _v93=None" let v99 : US1 option = None let _v99 = ref v99 let v100 : US1 option ref = _v99 let v101 : (US1 option -> US1 option ref) = closure1(v100) let v102 : unit = () let v103 : (unit -> unit) = closure2(v96, v101) let v104 : unit = (fun () -> v103 (); v102) () let v107 : US1 option = _v99.Value let v118 : US1 = US1_1 let v119 : US1 = v107 |> Option.defaultValue v118 let v126 : string = match v119 with | US1_1 -> (* None *) let v124 : string = "" v124 | US1_0(v123) -> (* Some *) v123 let _v1 = v126 #endif let v127 : string = _v1 v127 and method4 () : string = let v0 : string = "AUTOMATION" v0 and closure3 () (v0 : string) : unit = () and method0 (v0 : US0) : struct (Mut0 * Mut1 * Mut2 * Mut3 * int64 option) = let v1 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v2 : string = method1() let v3 : string = method2(v2) let v4 : bool = "Verbose" = v3 let v8 : US2 = if v4 then let v5 : US0 = US0_0 US2_0(v5) else US2_1 let v49 : US2 = match v8 with | US2_1 -> (* None *) let v11 : bool = "Debug" = v3 let v15 : US2 = if v11 then let v12 : US0 = US0_1 US2_0(v12) else US2_1 match v15 with | US2_1 -> (* None *) let v18 : bool = "Info" = v3 let v22 : US2 = if v18 then let v19 : US0 = US0_2 US2_0(v19) else US2_1 match v22 with | US2_1 -> (* None *) let v25 : bool = "Warning" = v3 let v29 : US2 = if v25 then let v26 : US0 = US0_3 US2_0(v26) else US2_1 match v29 with | US2_1 -> (* None *) let v32 : bool = "Critical" = v3 let v36 : US2 = if v32 then let v33 : US0 = US0_4 US2_0(v33) else US2_1 match v36 with | US2_1 -> (* None *) US2_1 | US2_0(v37) -> (* Some *) US2_0(v37) | US2_0(v30) -> (* Some *) US2_0(v30) | US2_0(v23) -> (* Some *) US2_0(v23) | US2_0(v16) -> (* Some *) US2_0(v16) | US2_0(v9) -> (* Some *) US2_0(v9) let v50 : string = method4() let v51 : string = method2(v50) let v52 : bool = v51 = "True" let v62 : US3 = if v52 then let v53 : System.DateTime = System.DateTime.Now let v56 : (System.DateTime -> int64) = _.Ticks let v57 : int64 = v56 v53 US3_0(v57) else US3_1 let _v1 = struct (v49, v62) #endif #if FABLE_COMPILER_RUST && WASM let v63 : US2 = US2_1 let v64 : US3 = US3_1 let _v1 = struct (v63, v64) #endif #if FABLE_COMPILER_RUST && CONTRACT let v65 : string = "AUTOMATION" let v66 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v67 : string = "env!(\"" + v65 + "\")" let v68 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v67 let v69 : string = "String::from($0)" let v70 : std_string_String = Fable.Core.RustInterop.emitRustExpr v68 v69 let v71 : string = "fable_library_rust::String_::fromString($0)" let v72 : string = Fable.Core.RustInterop.emitRustExpr v70 v71 let _v66 = v72 #endif #if FABLE_COMPILER_RUST && WASM let v73 : string = "env!(\"" + v65 + "\")" let v74 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v73 let v75 : string = "String::from($0)" let v76 : std_string_String = Fable.Core.RustInterop.emitRustExpr v74 v75 let v77 : string = "fable_library_rust::String_::fromString($0)" let v78 : string = Fable.Core.RustInterop.emitRustExpr v76 v77 let _v66 = v78 #endif #if FABLE_COMPILER_RUST && CONTRACT let v79 : string = "env!(\"" + v65 + "\")" let v80 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v79 let v81 : string = "String::from($0)" let v82 : std_string_String = Fable.Core.RustInterop.emitRustExpr v80 v81 let v83 : string = "fable_library_rust::String_::fromString($0)" let v84 : string = Fable.Core.RustInterop.emitRustExpr v82 v83 let _v66 = v84 #endif #if FABLE_COMPILER_TYPESCRIPT let v85 : string = null |> unbox<string> let _v66 = v85 #endif #if FABLE_COMPILER_PYTHON let v88 : string = null |> unbox<string> let _v66 = v88 #endif #else let v91 : string = null |> unbox<string> let _v66 = v91 #endif let v94 : string = _v66 let v99 : string = "True" let v100 : bool = v94 <> v99 let v109 : US3 = if v100 then US3_1 else let v104 : string = $"near_sdk::env::block_timestamp()" let v105 : uint64 = Fable.Core.RustInterop.emitRustExpr () v104 let v106 : (uint64 -> int64) = int64 let v107 : int64 = v106 v105 US3_0(v107) let v110 : US2 = US2_1 let _v1 = struct (v110, v109) #endif #if FABLE_COMPILER_TYPESCRIPT let v111 : string = method1() let v112 : string = method2(v111) let v113 : bool = "Verbose" = v112 let v117 : US2 = if v113 then let v114 : US0 = US0_0 US2_0(v114) else US2_1 let v158 : US2 = match v117 with | US2_1 -> (* None *) let v120 : bool = "Debug" = v112 let v124 : US2 = if v120 then let v121 : US0 = US0_1 US2_0(v121) else US2_1 match v124 with | US2_1 -> (* None *) let v127 : bool = "Info" = v112 let v131 : US2 = if v127 then let v128 : US0 = US0_2 US2_0(v128) else US2_1 match v131 with | US2_1 -> (* None *) let v134 : bool = "Warning" = v112 let v138 : US2 = if v134 then let v135 : US0 = US0_3 US2_0(v135) else US2_1 match v138 with | US2_1 -> (* None *) let v141 : bool = "Critical" = v112 let v145 : US2 = if v141 then let v142 : US0 = US0_4 US2_0(v142) else US2_1 match v145 with | US2_1 -> (* None *) US2_1 | US2_0(v146) -> (* Some *) US2_0(v146) | US2_0(v139) -> (* Some *) US2_0(v139) | US2_0(v132) -> (* Some *) US2_0(v132) | US2_0(v125) -> (* Some *) US2_0(v125) | US2_0(v118) -> (* Some *) US2_0(v118) let v159 : string = method4() let v160 : string = method2(v159) let v161 : bool = v160 = "True" let v171 : US3 = if v161 then let v162 : System.DateTime = System.DateTime.Now let v165 : (System.DateTime -> int64) = _.Ticks let v166 : int64 = v165 v162 US3_0(v166) else US3_1 let _v1 = struct (v158, v171) #endif #if FABLE_COMPILER_PYTHON let v172 : string = method1() let v173 : string = method2(v172) let v174 : bool = "Verbose" = v173 let v178 : US2 = if v174 then let v175 : US0 = US0_0 US2_0(v175) else US2_1 let v219 : US2 = match v178 with | US2_1 -> (* None *) let v181 : bool = "Debug" = v173 let v185 : US2 = if v181 then let v182 : US0 = US0_1 US2_0(v182) else US2_1 match v185 with | US2_1 -> (* None *) let v188 : bool = "Info" = v173 let v192 : US2 = if v188 then let v189 : US0 = US0_2 US2_0(v189) else US2_1 match v192 with | US2_1 -> (* None *) let v195 : bool = "Warning" = v173 let v199 : US2 = if v195 then let v196 : US0 = US0_3 US2_0(v196) else US2_1 match v199 with | US2_1 -> (* None *) let v202 : bool = "Critical" = v173 let v206 : US2 = if v202 then let v203 : US0 = US0_4 US2_0(v203) else US2_1 match v206 with | US2_1 -> (* None *) US2_1 | US2_0(v207) -> (* Some *) US2_0(v207) | US2_0(v200) -> (* Some *) US2_0(v200) | US2_0(v193) -> (* Some *) US2_0(v193) | US2_0(v186) -> (* Some *) US2_0(v186) | US2_0(v179) -> (* Some *) US2_0(v179) let v220 : string = method4() let v221 : string = method2(v220) let v222 : bool = v221 = "True" let v232 : US3 = if v222 then let v223 : System.DateTime = System.DateTime.Now let v226 : (System.DateTime -> int64) = _.Ticks let v227 : int64 = v226 v223 US3_0(v227) else US3_1 let _v1 = struct (v219, v232) #endif #else let v233 : string = method1() let v234 : string = method2(v233) let v235 : bool = "Verbose" = v234 let v239 : US2 = if v235 then let v236 : US0 = US0_0 US2_0(v236) else US2_1 let v280 : US2 = match v239 with | US2_1 -> (* None *) let v242 : bool = "Debug" = v234 let v246 : US2 = if v242 then let v243 : US0 = US0_1 US2_0(v243) else US2_1 match v246 with | US2_1 -> (* None *) let v249 : bool = "Info" = v234 let v253 : US2 = if v249 then let v250 : US0 = US0_2 US2_0(v250) else US2_1 match v253 with | US2_1 -> (* None *) let v256 : bool = "Warning" = v234 let v260 : US2 = if v256 then let v257 : US0 = US0_3 US2_0(v257) else US2_1 match v260 with | US2_1 -> (* None *) let v263 : bool = "Critical" = v234 let v267 : US2 = if v263 then let v264 : US0 = US0_4 US2_0(v264) else US2_1 match v267 with | US2_1 -> (* None *) US2_1 | US2_0(v268) -> (* Some *) US2_0(v268) | US2_0(v261) -> (* Some *) US2_0(v261) | US2_0(v254) -> (* Some *) US2_0(v254) | US2_0(v247) -> (* Some *) US2_0(v247) | US2_0(v240) -> (* Some *) US2_0(v240) let v281 : string = method4() let v282 : string = method2(v281) let v283 : bool = v282 = "True" let v293 : US3 = if v283 then let v284 : System.DateTime = System.DateTime.Now let v287 : (System.DateTime -> int64) = _.Ticks let v288 : int64 = v287 v284 US3_0(v288) else US3_1 let _v1 = struct (v280, v293) #endif let struct (v294 : US2, v295 : US3) = _v1 let v359 : Mut2 = {l0 = true} : Mut2 let v360 : Mut0 = {l0 = 0L} : Mut0 let v363 : US0 = match v294 with | US2_1 -> (* None *) v0 | US2_0(v361) -> (* Some *) v361 let v364 : Mut3 = {l0 = v363} : Mut3 let v365 : (string -> unit) = closure3() let v366 : Mut1 = {l0 = v365} : Mut1 let v373 : int64 option = match v295 with | US3_1 -> (* None *) let v371 : int64 option = None v371 | US3_0(v367) -> (* Some *) let v368 : int64 option = Some v367 v368 struct (v360, v366, v359, v364, v373) and closure0 () () : unit = let v0 : bool = State.trace_state.IsNone if v0 then let v1 : US0 = US0_0 let struct (v2 : Mut0, v3 : Mut1, v4 : Mut2, v5 : Mut3, v6 : int64 option) = method0(v1) let v7 : struct (Mut0 * Mut1 * Mut2 * Mut3 * int64 option) option = Some struct (v2, v3, v4, v5, v6) State.trace_state <- v7 () and closure7 (v0 : Mut0) () : unit = let v1 : int64 = v0.l0 let v2 : int64 = v1 + 1L v0.l0 <- v2 () and closure8 (v0 : US3 option ref) (v1 : US3 option) : US3 option ref = v0.Value <- v1 v0 and closure9 (v0 : int64 option, v1 : (US3 option -> US3 option ref)) () : unit = match v0 with | Some x -> ( (fun () -> (fun () -> let v2 : int64 = x let v3 : US3 = US3_0(v2) v3 ) |> fun x -> x () |> Some ) () ) | None -> None |> v1 |> ignore () and method5 () : string = let v0 : string = "hh:mm:ss" v0 and method6 () : string = let v0 : string = "HH:mm:ss" v0 and method7 () : string = let v0 : string = "\u001b[0m" v0 and method8 () : string = let v0 : string = "" v0 and closure10 (v0 : Mut4, v1 : string) () : unit = let v2 : string = v0.l0 let v3 : string = v2 + v1 v0.l0 <- v3 () and closure11 () () : string = let v0 : string = $"networking.test_port_open" v0 and closure13 (v0 : string) () : unit = let v1 : (string -> unit) = System.Console.WriteLine v1 v0 and closure12 () (v0 : string) : unit = let v1 : unit = () let v2 : (unit -> unit) = closure13(v0) let v3 : unit = (fun () -> v2 (); v1) () () and closure6 (v0 : int32, v1 : string) () : unit = let v2 : unit = () let v3 : (unit -> unit) = closure0() let v4 : unit = (fun () -> v3 (); v2) () let struct (v17 : Mut0, v18 : Mut1, v19 : Mut2, v20 : Mut3, v21 : int64 option) = State.trace_state.Value let v32 : unit = () let v33 : unit = (fun () -> v3 (); v32) () let struct (v46 : Mut0, v47 : Mut1, v48 : Mut2, v49 : Mut3, v50 : int64 option) = State.trace_state.Value let v61 : US0 = v49.l0 let v62 : bool = v48.l0 let v63 : bool = v62 = false let v66 : bool = if v63 then false else let v64 : int32 = [ US0_0, 0; US0_1, 1; US0_2, 2; US0_3, 3; US0_4, 4 ] |> Map |> Map.find v61 let v65 : bool = 0 >= v64 v65 if v66 then let v67 : unit = () let v68 : (unit -> unit) = closure7(v17) let v69 : unit = (fun () -> v68 (); v67) () let v72 : unit = () let v73 : unit = (fun () -> v3 (); v72) () let struct (v86 : Mut0, v87 : Mut1, v88 : Mut2, v89 : Mut3, v90 : int64 option) = State.trace_state.Value let v101 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v102 : US3 option = None let _v102 = ref v102 let v103 : US3 option ref = _v102 let v104 : (US3 option -> US3 option ref) = closure8(v103) let v105 : unit = () let v106 : (unit -> unit) = closure9(v90, v104) let v107 : unit = (fun () -> v106 (); v105) () let v110 : US3 option = _v102.Value let v121 : US3 = US3_1 let v122 : US3 = v110 |> Option.defaultValue v121 let v162 : System.DateTime = match v122 with | US3_1 -> (* None *) let v158 : System.DateTime = System.DateTime.Now v158 | US3_0(v126) -> (* Some *) let v127 : System.DateTime = System.DateTime.Now let v130 : (System.DateTime -> int64) = _.Ticks let v131 : int64 = v130 v127 let v134 : int64 = v131 - v126 let v135 : (int64 -> System.TimeSpan) = System.TimeSpan let v136 : System.TimeSpan = v135 v134 let v139 : (System.TimeSpan -> int32) = _.Hours let v140 : int32 = v139 v136 let v143 : (System.TimeSpan -> int32) = _.Minutes let v144 : int32 = v143 v136 let v147 : (System.TimeSpan -> int32) = _.Seconds let v148 : int32 = v147 v136 let v151 : (System.TimeSpan -> int32) = _.Milliseconds let v152 : int32 = v151 v136 let v155 : System.DateTime = System.DateTime (1, 1, 1, v140, v144, v148, v152) v155 let v163 : string = method5() let v166 : (string -> string) = v162.ToString let v167 : string = v166 v163 let _v101 = v167 #endif #if FABLE_COMPILER_RUST && WASM let v170 : US3 option = None let _v170 = ref v170 let v171 : US3 option ref = _v170 let v172 : (US3 option -> US3 option ref) = closure8(v171) let v173 : unit = () let v174 : (unit -> unit) = closure9(v90, v172) let v175 : unit = (fun () -> v174 (); v173) () let v178 : US3 option = _v170.Value let v189 : US3 = US3_1 let v190 : US3 = v178 |> Option.defaultValue v189 let v230 : System.DateTime = match v190 with | US3_1 -> (* None *) let v226 : System.DateTime = System.DateTime.Now v226 | US3_0(v194) -> (* Some *) let v195 : System.DateTime = System.DateTime.Now let v198 : (System.DateTime -> int64) = _.Ticks let v199 : int64 = v198 v195 let v202 : int64 = v199 - v194 let v203 : (int64 -> System.TimeSpan) = System.TimeSpan let v204 : System.TimeSpan = v203 v202 let v207 : (System.TimeSpan -> int32) = _.Hours let v208 : int32 = v207 v204 let v211 : (System.TimeSpan -> int32) = _.Minutes let v212 : int32 = v211 v204 let v215 : (System.TimeSpan -> int32) = _.Seconds let v216 : int32 = v215 v204 let v219 : (System.TimeSpan -> int32) = _.Milliseconds let v220 : int32 = v219 v204 let v223 : System.DateTime = System.DateTime (1, 1, 1, v208, v212, v216, v220) v223 let v231 : string = method5() let v234 : (string -> string) = v230.ToString let v235 : string = v234 v231 let _v101 = v235 #endif #if FABLE_COMPILER_RUST && CONTRACT let v238 : string = $"near_sdk::env::block_timestamp()" let v239 : uint64 = Fable.Core.RustInterop.emitRustExpr () v238 let v240 : US3 option = None let _v240 = ref v240 let v241 : US3 option ref = _v240 let v242 : (US3 option -> US3 option ref) = closure8(v241) let v243 : unit = () let v244 : (unit -> unit) = closure9(v90, v242) let v245 : unit = (fun () -> v244 (); v243) () let v248 : US3 option = _v240.Value let v259 : US3 = US3_1 let v260 : US3 = v248 |> Option.defaultValue v259 let v269 : uint64 = match v260 with | US3_1 -> (* None *) v239 | US3_0(v264) -> (* Some *) let v265 : (int64 -> uint64) = uint64 let v266 : uint64 = v265 v264 let v267 : uint64 = v239 - v266 v267 let v270 : uint64 = v269 / 1000000000UL let v271 : uint64 = v270 % 60UL let v272 : uint64 = v270 / 60UL let v273 : uint64 = v272 % 60UL let v274 : uint64 = v270 / 3600UL let v275 : uint64 = v274 % 24UL let v276 : string = $"format!(\"{{:02}}:{{:02}}:{{:02}}\", $0, $1, $2)" let v277 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v275, v273, v271) v276 let v278 : string = "fable_library_rust::String_::fromString($0)" let v279 : string = Fable.Core.RustInterop.emitRustExpr v277 v278 let _v101 = v279 #endif #if FABLE_COMPILER_TYPESCRIPT let v280 : US3 option = None let _v280 = ref v280 let v281 : US3 option ref = _v280 let v282 : (US3 option -> US3 option ref) = closure8(v281) let v283 : unit = () let v284 : (unit -> unit) = closure9(v90, v282) let v285 : unit = (fun () -> v284 (); v283) () let v288 : US3 option = _v280.Value let v299 : US3 = US3_1 let v300 : US3 = v288 |> Option.defaultValue v299 let v340 : System.DateTime = match v300 with | US3_1 -> (* None *) let v336 : System.DateTime = System.DateTime.Now v336 | US3_0(v304) -> (* Some *) let v305 : System.DateTime = System.DateTime.Now let v308 : (System.DateTime -> int64) = _.Ticks let v309 : int64 = v308 v305 let v312 : int64 = v309 - v304 let v313 : (int64 -> System.TimeSpan) = System.TimeSpan let v314 : System.TimeSpan = v313 v312 let v317 : (System.TimeSpan -> int32) = _.Hours let v318 : int32 = v317 v314 let v321 : (System.TimeSpan -> int32) = _.Minutes let v322 : int32 = v321 v314 let v325 : (System.TimeSpan -> int32) = _.Seconds let v326 : int32 = v325 v314 let v329 : (System.TimeSpan -> int32) = _.Milliseconds let v330 : int32 = v329 v314 let v333 : System.DateTime = System.DateTime (1, 1, 1, v318, v322, v326, v330) v333 let v341 : string = method6() let v344 : (string -> string) = v340.ToString let v345 : string = v344 v341 let _v101 = v345 #endif #if FABLE_COMPILER_PYTHON let v348 : US3 option = None let _v348 = ref v348 let v349 : US3 option ref = _v348 let v350 : (US3 option -> US3 option ref) = closure8(v349) let v351 : unit = () let v352 : (unit -> unit) = closure9(v90, v350) let v353 : unit = (fun () -> v352 (); v351) () let v356 : US3 option = _v348.Value let v367 : US3 = US3_1 let v368 : US3 = v356 |> Option.defaultValue v367 let v408 : System.DateTime = match v368 with | US3_1 -> (* None *) let v404 : System.DateTime = System.DateTime.Now v404 | US3_0(v372) -> (* Some *) let v373 : System.DateTime = System.DateTime.Now let v376 : (System.DateTime -> int64) = _.Ticks let v377 : int64 = v376 v373 let v380 : int64 = v377 - v372 let v381 : (int64 -> System.TimeSpan) = System.TimeSpan let v382 : System.TimeSpan = v381 v380 let v385 : (System.TimeSpan -> int32) = _.Hours let v386 : int32 = v385 v382 let v389 : (System.TimeSpan -> int32) = _.Minutes let v390 : int32 = v389 v382 let v393 : (System.TimeSpan -> int32) = _.Seconds let v394 : int32 = v393 v382 let v397 : (System.TimeSpan -> int32) = _.Milliseconds let v398 : int32 = v397 v382 let v401 : System.DateTime = System.DateTime (1, 1, 1, v386, v390, v394, v398) v401 let v409 : string = method6() let v412 : (string -> string) = v408.ToString let v413 : string = v412 v409 let _v101 = v413 #endif #else let v416 : US3 option = None let _v416 = ref v416 let v417 : US3 option ref = _v416 let v418 : (US3 option -> US3 option ref) = closure8(v417) let v419 : unit = () let v420 : (unit -> unit) = closure9(v90, v418) let v421 : unit = (fun () -> v420 (); v419) () let v424 : US3 option = _v416.Value let v435 : US3 = US3_1 let v436 : US3 = v424 |> Option.defaultValue v435 let v476 : System.DateTime = match v436 with | US3_1 -> (* None *) let v472 : System.DateTime = System.DateTime.Now v472 | US3_0(v440) -> (* Some *) let v441 : System.DateTime = System.DateTime.Now let v444 : (System.DateTime -> int64) = _.Ticks let v445 : int64 = v444 v441 let v448 : int64 = v445 - v440 let v449 : (int64 -> System.TimeSpan) = System.TimeSpan let v450 : System.TimeSpan = v449 v448 let v453 : (System.TimeSpan -> int32) = _.Hours let v454 : int32 = v453 v450 let v457 : (System.TimeSpan -> int32) = _.Minutes let v458 : int32 = v457 v450 let v461 : (System.TimeSpan -> int32) = _.Seconds let v462 : int32 = v461 v450 let v465 : (System.TimeSpan -> int32) = _.Milliseconds let v466 : int32 = v465 v450 let v469 : System.DateTime = System.DateTime (1, 1, 1, v454, v458, v462, v466) v469 let v477 : string = method6() let v480 : (string -> string) = v476.ToString let v481 : string = v480 v477 let _v101 = v481 #endif let v484 : string = _v101 let v554 : string = "Verbose" let v555 : (unit -> string) = v554.ToLower let v556 : string = v555 () let v559 : string = v556.PadLeft (7, ' ') let v573 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v574 : string = "inline_colorization::color_bright_black" let v575 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v574 let v576 : string = "&*$0" let v577 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v559 v576 let v578 : string = "inline_colorization::color_reset" let v579 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v578 let v580 : string = "\"{v575}{v577}{v579}\"" let v581 : string = @$"format!(" + v580 + ")" let v582 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v581 let v583 : string = "fable_library_rust::String_::fromString($0)" let v584 : string = Fable.Core.RustInterop.emitRustExpr v582 v583 let _v573 = v584 #endif #if FABLE_COMPILER_RUST && WASM let v585 : string = "inline_colorization::color_bright_black" let v586 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v585 let v587 : string = "&*$0" let v588 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v559 v587 let v589 : string = "inline_colorization::color_reset" let v590 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v589 let v591 : string = "\"{v586}{v588}{v590}\"" let v592 : string = @$"format!(" + v591 + ")" let v593 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v592 let v594 : string = "fable_library_rust::String_::fromString($0)" let v595 : string = Fable.Core.RustInterop.emitRustExpr v593 v594 let _v573 = v595 #endif #if FABLE_COMPILER_RUST && CONTRACT let v596 : string = "inline_colorization::color_bright_black" let v597 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v596 let v598 : string = "&*$0" let v599 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v559 v598 let v600 : string = "inline_colorization::color_reset" let v601 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v600 let v602 : string = "\"{v597}{v599}{v601}\"" let v603 : string = @$"format!(" + v602 + ")" let v604 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v603 let v605 : string = "fable_library_rust::String_::fromString($0)" let v606 : string = Fable.Core.RustInterop.emitRustExpr v604 v605 let _v573 = v606 #endif #if FABLE_COMPILER_TYPESCRIPT let v607 : string = "\u001b[90m" let v608 : string = method7() let v609 : string = v607 + v559 let v610 : string = v609 + v608 let _v573 = v610 #endif #if FABLE_COMPILER_PYTHON let v611 : string = "\u001b[90m" let v612 : string = method7() let v613 : string = v611 + v559 let v614 : string = v613 + v612 let _v573 = v614 #endif #else let v615 : string = "\u001b[90m" let v616 : string = method7() let v617 : string = v615 + v559 let v618 : string = v617 + v616 let _v573 = v618 #endif let v619 : string = _v573 let v625 : int64 = v86.l0 let v626 : string = method8() let v627 : Mut4 = {l0 = v626} : Mut4 let v628 : string = "{ " let v629 : string = $"{v628}" let v632 : unit = () let v633 : (unit -> unit) = closure10(v627, v629) let v634 : unit = (fun () -> v633 (); v632) () let v637 : string = "port" let v638 : string = $"{v637}" let v641 : unit = () let v642 : (unit -> unit) = closure10(v627, v638) let v643 : unit = (fun () -> v642 (); v641) () let v646 : string = " = " let v647 : string = $"{v646}" let v650 : unit = () let v651 : (unit -> unit) = closure10(v627, v647) let v652 : unit = (fun () -> v651 (); v650) () let v655 : string = $"{v0}" let v658 : unit = () let v659 : (unit -> unit) = closure10(v627, v655) let v660 : unit = (fun () -> v659 (); v658) () let v663 : string = "; " let v664 : string = $"{v663}" let v667 : unit = () let v668 : (unit -> unit) = closure10(v627, v664) let v669 : unit = (fun () -> v668 (); v667) () let v672 : string = "ex" let v673 : string = $"{v672}" let v676 : unit = () let v677 : (unit -> unit) = closure10(v627, v673) let v678 : unit = (fun () -> v677 (); v676) () let v681 : string = $"{v646}" let v684 : unit = () let v685 : (unit -> unit) = closure10(v627, v681) let v686 : unit = (fun () -> v685 (); v684) () let v689 : string = $"{v1}" let v692 : unit = () let v693 : (unit -> unit) = closure10(v627, v689) let v694 : unit = (fun () -> v693 (); v692) () let v697 : string = " }" let v698 : string = $"{v697}" let v701 : unit = () let v702 : (unit -> unit) = closure10(v627, v698) let v703 : unit = (fun () -> v702 (); v701) () let v706 : string = v627.l0 let v707 : (unit -> string) = closure11() let v708 : string = $"{v484} {v619} #{v625} %s{v707 ()} / {v706}" let v711 : char list = [] let v712 : (char list -> (char [])) = List.toArray let v713 : (char []) = v712 v711 let v716 : string = v708.TrimStart v713 let v734 : char list = [] let v735 : char list = '/' :: v734 let v738 : char list = ' ' :: v735 let v741 : (char list -> (char [])) = List.toArray let v742 : (char []) = v741 v738 let v745 : string = v716.TrimEnd v742 let v763 : (string -> unit) = closure12() let v764 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v765 : string = @"println!(""{}"", $0)" Fable.Core.RustInterop.emitRustExpr v745 v765 let _v764 = () #endif #if FABLE_COMPILER_RUST && WASM let v766 : string = @"println!(""{}"", $0)" Fable.Core.RustInterop.emitRustExpr v745 v766 let _v764 = () #endif #if FABLE_COMPILER_RUST && CONTRACT let v767 : string = $"near_sdk::log!(\"{{}}\", $0)" Fable.Core.RustInterop.emitRustExpr v745 v767 let _v764 = () #endif #if FABLE_COMPILER_TYPESCRIPT v763 v745 let _v764 = () #endif #if FABLE_COMPILER_PYTHON v763 v745 let _v764 = () #endif #else v763 v745 let _v764 = () #endif _v764 let v768 : (string -> unit) = v18.l0 v768 v745 and closure5 (v0 : string) (v1 : int32) : Async<bool> = let v2 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v3 : Async<bool> = null |> unbox<Async<bool>> let _v2 = v3 #endif #if FABLE_COMPILER_RUST && WASM let v6 : Async<bool> = null |> unbox<Async<bool>> let _v2 = v6 #endif #if FABLE_COMPILER_RUST && CONTRACT let v9 : Async<bool> = null |> unbox<Async<bool>> let _v2 = v9 #endif #if FABLE_COMPILER_TYPESCRIPT let v12 : Async<bool> = null |> unbox<Async<bool>> let _v2 = v12 #endif #if FABLE_COMPILER_PYTHON let v15 : Async<bool> = null |> unbox<Async<bool>> let _v2 = v15 #endif #else let v18 : Async<bool> option = None let mutable _v18 = v18 async { let v19 : Async<System.Threading.CancellationToken> = Async.CancellationToken let! v19 = v19 let v20 : System.Threading.CancellationToken = v19 let v21 : System.Net.Sockets.TcpClient = new System.Net.Sockets.TcpClient () use v21 = v21 let v22 : System.Net.Sockets.TcpClient = v21 try let v23 : System.Threading.Tasks.ValueTask = v22.ConnectAsync (v0, v1, v20) let v24 : (unit -> System.Threading.Tasks.Task) = v23.AsTask let v25 : System.Threading.Tasks.Task = v24 () let v26 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v27 : Async<unit> = null |> unbox<Async<unit>> let _v26 = v27 #endif #if FABLE_COMPILER_RUST && WASM let v30 : Async<unit> = null |> unbox<Async<unit>> let _v26 = v30 #endif #if FABLE_COMPILER_RUST && CONTRACT let v33 : Async<unit> = null |> unbox<Async<unit>> let _v26 = v33 #endif #if FABLE_COMPILER_TYPESCRIPT let v36 : Async<unit> = null |> unbox<Async<unit>> let _v26 = v36 #endif #if FABLE_COMPILER_PYTHON let v39 : Async<unit> = null |> unbox<Async<unit>> let _v26 = v39 #endif #else let v42 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v43 : Async<unit> = v42 v25 let _v26 = v43 #endif let v44 : Async<unit> = _v26 do! v44 return true with ex -> let v49 : exn = ex let v50 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v51 : string = $"%A{v49}" let _v50 = v51 #endif #if FABLE_COMPILER_RUST && WASM let v54 : string = $"%A{v49}" let _v50 = v54 #endif #if FABLE_COMPILER_RUST && CONTRACT let v57 : string = $"%A{v49}" let _v50 = v57 #endif #if FABLE_COMPILER_TYPESCRIPT let v60 : string = $"%A{v49}" let _v50 = v60 #endif #if FABLE_COMPILER_PYTHON let v63 : string = $"%A{v49}" let _v50 = v63 #endif #else let v66 : string = $"{v49.GetType ()}: {v49.Message}" let _v50 = v66 #endif let v67 : string = _v50 let v72 : unit = () let v73 : (unit -> unit) = closure6(v1, v67) let v74 : unit = (fun () -> v73 (); v72) () return false (* let v842 : bool = *) } |> fun x -> _v18 <- Some x let v843 : Async<bool> = match _v18 with Some x -> x | None -> failwith "async.new_async_unit / _v18=None" let _v2 = v843 #endif let v844 : Async<bool> = _v2 v844 and closure4 () (v0 : string) : (int32 -> Async<bool>) = closure5(v0) and closure17 () (v0 : bool) : US5 = US5_0(v0) and closure18 () (v0 : exn) : US5 = US5_1(v0) and closure20 () () : string = let v0 : string = "async.run_with_timeout_async" v0 and closure19 (v0 : int32) () : unit = let v1 : unit = () let v2 : (unit -> unit) = closure0() let v3 : unit = (fun () -> v2 (); v1) () let struct (v16 : Mut0, v17 : Mut1, v18 : Mut2, v19 : Mut3, v20 : int64 option) = State.trace_state.Value let v31 : unit = () let v32 : unit = (fun () -> v2 (); v31) () let struct (v45 : Mut0, v46 : Mut1, v47 : Mut2, v48 : Mut3, v49 : int64 option) = State.trace_state.Value let v60 : US0 = v48.l0 let v61 : bool = v47.l0 let v62 : bool = v61 = false let v65 : bool = if v62 then false else let v63 : int32 = [ US0_0, 0; US0_1, 1; US0_2, 2; US0_3, 3; US0_4, 4 ] |> Map |> Map.find v60 let v64 : bool = 0 >= v63 v64 if v65 then let v66 : unit = () let v67 : (unit -> unit) = closure7(v16) let v68 : unit = (fun () -> v67 (); v66) () let v71 : unit = () let v72 : unit = (fun () -> v2 (); v71) () let struct (v85 : Mut0, v86 : Mut1, v87 : Mut2, v88 : Mut3, v89 : int64 option) = State.trace_state.Value let v100 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v101 : US3 option = None let _v101 = ref v101 let v102 : US3 option ref = _v101 let v103 : (US3 option -> US3 option ref) = closure8(v102) let v104 : unit = () let v105 : (unit -> unit) = closure9(v89, v103) let v106 : unit = (fun () -> v105 (); v104) () let v109 : US3 option = _v101.Value let v120 : US3 = US3_1 let v121 : US3 = v109 |> Option.defaultValue v120 let v161 : System.DateTime = match v121 with | US3_1 -> (* None *) let v157 : System.DateTime = System.DateTime.Now v157 | US3_0(v125) -> (* Some *) let v126 : System.DateTime = System.DateTime.Now let v129 : (System.DateTime -> int64) = _.Ticks let v130 : int64 = v129 v126 let v133 : int64 = v130 - v125 let v134 : (int64 -> System.TimeSpan) = System.TimeSpan let v135 : System.TimeSpan = v134 v133 let v138 : (System.TimeSpan -> int32) = _.Hours let v139 : int32 = v138 v135 let v142 : (System.TimeSpan -> int32) = _.Minutes let v143 : int32 = v142 v135 let v146 : (System.TimeSpan -> int32) = _.Seconds let v147 : int32 = v146 v135 let v150 : (System.TimeSpan -> int32) = _.Milliseconds let v151 : int32 = v150 v135 let v154 : System.DateTime = System.DateTime (1, 1, 1, v139, v143, v147, v151) v154 let v162 : string = method5() let v165 : (string -> string) = v161.ToString let v166 : string = v165 v162 let _v100 = v166 #endif #if FABLE_COMPILER_RUST && WASM let v169 : US3 option = None let _v169 = ref v169 let v170 : US3 option ref = _v169 let v171 : (US3 option -> US3 option ref) = closure8(v170) let v172 : unit = () let v173 : (unit -> unit) = closure9(v89, v171) let v174 : unit = (fun () -> v173 (); v172) () let v177 : US3 option = _v169.Value let v188 : US3 = US3_1 let v189 : US3 = v177 |> Option.defaultValue v188 let v229 : System.DateTime = match v189 with | US3_1 -> (* None *) let v225 : System.DateTime = System.DateTime.Now v225 | US3_0(v193) -> (* Some *) let v194 : System.DateTime = System.DateTime.Now let v197 : (System.DateTime -> int64) = _.Ticks let v198 : int64 = v197 v194 let v201 : int64 = v198 - v193 let v202 : (int64 -> System.TimeSpan) = System.TimeSpan let v203 : System.TimeSpan = v202 v201 let v206 : (System.TimeSpan -> int32) = _.Hours let v207 : int32 = v206 v203 let v210 : (System.TimeSpan -> int32) = _.Minutes let v211 : int32 = v210 v203 let v214 : (System.TimeSpan -> int32) = _.Seconds let v215 : int32 = v214 v203 let v218 : (System.TimeSpan -> int32) = _.Milliseconds let v219 : int32 = v218 v203 let v222 : System.DateTime = System.DateTime (1, 1, 1, v207, v211, v215, v219) v222 let v230 : string = method5() let v233 : (string -> string) = v229.ToString let v234 : string = v233 v230 let _v100 = v234 #endif #if FABLE_COMPILER_RUST && CONTRACT let v237 : string = $"near_sdk::env::block_timestamp()" let v238 : uint64 = Fable.Core.RustInterop.emitRustExpr () v237 let v239 : US3 option = None let _v239 = ref v239 let v240 : US3 option ref = _v239 let v241 : (US3 option -> US3 option ref) = closure8(v240) let v242 : unit = () let v243 : (unit -> unit) = closure9(v89, v241) let v244 : unit = (fun () -> v243 (); v242) () let v247 : US3 option = _v239.Value let v258 : US3 = US3_1 let v259 : US3 = v247 |> Option.defaultValue v258 let v268 : uint64 = match v259 with | US3_1 -> (* None *) v238 | US3_0(v263) -> (* Some *) let v264 : (int64 -> uint64) = uint64 let v265 : uint64 = v264 v263 let v266 : uint64 = v238 - v265 v266 let v269 : uint64 = v268 / 1000000000UL let v270 : uint64 = v269 % 60UL let v271 : uint64 = v269 / 60UL let v272 : uint64 = v271 % 60UL let v273 : uint64 = v269 / 3600UL let v274 : uint64 = v273 % 24UL let v275 : string = $"format!(\"{{:02}}:{{:02}}:{{:02}}\", $0, $1, $2)" let v276 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v274, v272, v270) v275 let v277 : string = "fable_library_rust::String_::fromString($0)" let v278 : string = Fable.Core.RustInterop.emitRustExpr v276 v277 let _v100 = v278 #endif #if FABLE_COMPILER_TYPESCRIPT let v279 : US3 option = None let _v279 = ref v279 let v280 : US3 option ref = _v279 let v281 : (US3 option -> US3 option ref) = closure8(v280) let v282 : unit = () let v283 : (unit -> unit) = closure9(v89, v281) let v284 : unit = (fun () -> v283 (); v282) () let v287 : US3 option = _v279.Value let v298 : US3 = US3_1 let v299 : US3 = v287 |> Option.defaultValue v298 let v339 : System.DateTime = match v299 with | US3_1 -> (* None *) let v335 : System.DateTime = System.DateTime.Now v335 | US3_0(v303) -> (* Some *) let v304 : System.DateTime = System.DateTime.Now let v307 : (System.DateTime -> int64) = _.Ticks let v308 : int64 = v307 v304 let v311 : int64 = v308 - v303 let v312 : (int64 -> System.TimeSpan) = System.TimeSpan let v313 : System.TimeSpan = v312 v311 let v316 : (System.TimeSpan -> int32) = _.Hours let v317 : int32 = v316 v313 let v320 : (System.TimeSpan -> int32) = _.Minutes let v321 : int32 = v320 v313 let v324 : (System.TimeSpan -> int32) = _.Seconds let v325 : int32 = v324 v313 let v328 : (System.TimeSpan -> int32) = _.Milliseconds let v329 : int32 = v328 v313 let v332 : System.DateTime = System.DateTime (1, 1, 1, v317, v321, v325, v329) v332 let v340 : string = method6() let v343 : (string -> string) = v339.ToString let v344 : string = v343 v340 let _v100 = v344 #endif #if FABLE_COMPILER_PYTHON let v347 : US3 option = None let _v347 = ref v347 let v348 : US3 option ref = _v347 let v349 : (US3 option -> US3 option ref) = closure8(v348) let v350 : unit = () let v351 : (unit -> unit) = closure9(v89, v349) let v352 : unit = (fun () -> v351 (); v350) () let v355 : US3 option = _v347.Value let v366 : US3 = US3_1 let v367 : US3 = v355 |> Option.defaultValue v366 let v407 : System.DateTime = match v367 with | US3_1 -> (* None *) let v403 : System.DateTime = System.DateTime.Now v403 | US3_0(v371) -> (* Some *) let v372 : System.DateTime = System.DateTime.Now let v375 : (System.DateTime -> int64) = _.Ticks let v376 : int64 = v375 v372 let v379 : int64 = v376 - v371 let v380 : (int64 -> System.TimeSpan) = System.TimeSpan let v381 : System.TimeSpan = v380 v379 let v384 : (System.TimeSpan -> int32) = _.Hours let v385 : int32 = v384 v381 let v388 : (System.TimeSpan -> int32) = _.Minutes let v389 : int32 = v388 v381 let v392 : (System.TimeSpan -> int32) = _.Seconds let v393 : int32 = v392 v381 let v396 : (System.TimeSpan -> int32) = _.Milliseconds let v397 : int32 = v396 v381 let v400 : System.DateTime = System.DateTime (1, 1, 1, v385, v389, v393, v397) v400 let v408 : string = method6() let v411 : (string -> string) = v407.ToString let v412 : string = v411 v408 let _v100 = v412 #endif #else let v415 : US3 option = None let _v415 = ref v415 let v416 : US3 option ref = _v415 let v417 : (US3 option -> US3 option ref) = closure8(v416) let v418 : unit = () let v419 : (unit -> unit) = closure9(v89, v417) let v420 : unit = (fun () -> v419 (); v418) () let v423 : US3 option = _v415.Value let v434 : US3 = US3_1 let v435 : US3 = v423 |> Option.defaultValue v434 let v475 : System.DateTime = match v435 with | US3_1 -> (* None *) let v471 : System.DateTime = System.DateTime.Now v471 | US3_0(v439) -> (* Some *) let v440 : System.DateTime = System.DateTime.Now let v443 : (System.DateTime -> int64) = _.Ticks let v444 : int64 = v443 v440 let v447 : int64 = v444 - v439 let v448 : (int64 -> System.TimeSpan) = System.TimeSpan let v449 : System.TimeSpan = v448 v447 let v452 : (System.TimeSpan -> int32) = _.Hours let v453 : int32 = v452 v449 let v456 : (System.TimeSpan -> int32) = _.Minutes let v457 : int32 = v456 v449 let v460 : (System.TimeSpan -> int32) = _.Seconds let v461 : int32 = v460 v449 let v464 : (System.TimeSpan -> int32) = _.Milliseconds let v465 : int32 = v464 v449 let v468 : System.DateTime = System.DateTime (1, 1, 1, v453, v457, v461, v465) v468 let v476 : string = method6() let v479 : (string -> string) = v475.ToString let v480 : string = v479 v476 let _v100 = v480 #endif let v483 : string = _v100 let v553 : string = "Verbose" let v554 : (unit -> string) = v553.ToLower let v555 : string = v554 () let v558 : string = v555.PadLeft (7, ' ') let v572 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v573 : string = "inline_colorization::color_bright_black" let v574 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v573 let v575 : string = "&*$0" let v576 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v558 v575 let v577 : string = "inline_colorization::color_reset" let v578 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v577 let v579 : string = "\"{v574}{v576}{v578}\"" let v580 : string = @$"format!(" + v579 + ")" let v581 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v580 let v582 : string = "fable_library_rust::String_::fromString($0)" let v583 : string = Fable.Core.RustInterop.emitRustExpr v581 v582 let _v572 = v583 #endif #if FABLE_COMPILER_RUST && WASM let v584 : string = "inline_colorization::color_bright_black" let v585 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v584 let v586 : string = "&*$0" let v587 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v558 v586 let v588 : string = "inline_colorization::color_reset" let v589 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v588 let v590 : string = "\"{v585}{v587}{v589}\"" let v591 : string = @$"format!(" + v590 + ")" let v592 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v591 let v593 : string = "fable_library_rust::String_::fromString($0)" let v594 : string = Fable.Core.RustInterop.emitRustExpr v592 v593 let _v572 = v594 #endif #if FABLE_COMPILER_RUST && CONTRACT let v595 : string = "inline_colorization::color_bright_black" let v596 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v595 let v597 : string = "&*$0" let v598 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v558 v597 let v599 : string = "inline_colorization::color_reset" let v600 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v599 let v601 : string = "\"{v596}{v598}{v600}\"" let v602 : string = @$"format!(" + v601 + ")" let v603 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v602 let v604 : string = "fable_library_rust::String_::fromString($0)" let v605 : string = Fable.Core.RustInterop.emitRustExpr v603 v604 let _v572 = v605 #endif #if FABLE_COMPILER_TYPESCRIPT let v606 : string = "\u001b[90m" let v607 : string = method7() let v608 : string = v606 + v558 let v609 : string = v608 + v607 let _v572 = v609 #endif #if FABLE_COMPILER_PYTHON let v610 : string = "\u001b[90m" let v611 : string = method7() let v612 : string = v610 + v558 let v613 : string = v612 + v611 let _v572 = v613 #endif #else let v614 : string = "\u001b[90m" let v615 : string = method7() let v616 : string = v614 + v558 let v617 : string = v616 + v615 let _v572 = v617 #endif let v618 : string = _v572 let v624 : int64 = v85.l0 let v625 : string = method8() let v626 : Mut4 = {l0 = v625} : Mut4 let v627 : string = "{ " let v628 : string = $"{v627}" let v631 : unit = () let v632 : (unit -> unit) = closure10(v626, v628) let v633 : unit = (fun () -> v632 (); v631) () let v636 : string = "timeout" let v637 : string = $"{v636}" let v640 : unit = () let v641 : (unit -> unit) = closure10(v626, v637) let v642 : unit = (fun () -> v641 (); v640) () let v645 : string = " = " let v646 : string = $"{v645}" let v649 : unit = () let v650 : (unit -> unit) = closure10(v626, v646) let v651 : unit = (fun () -> v650 (); v649) () let v654 : string = $"{v0}" let v657 : unit = () let v658 : (unit -> unit) = closure10(v626, v654) let v659 : unit = (fun () -> v658 (); v657) () let v662 : string = " }" let v663 : string = $"{v662}" let v666 : unit = () let v667 : (unit -> unit) = closure10(v626, v663) let v668 : unit = (fun () -> v667 (); v666) () let v671 : string = v626.l0 let v672 : (unit -> string) = closure20() let v673 : string = $"{v483} {v618} #{v624} %s{v672 ()} / {v671}" let v676 : char list = [] let v677 : (char list -> (char [])) = List.toArray let v678 : (char []) = v677 v676 let v681 : string = v673.TrimStart v678 let v699 : char list = [] let v700 : char list = '/' :: v699 let v703 : char list = ' ' :: v700 let v706 : (char list -> (char [])) = List.toArray let v707 : (char []) = v706 v703 let v710 : string = v681.TrimEnd v707 let v728 : (string -> unit) = closure12() let v729 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v730 : string = @"println!(""{}"", $0)" Fable.Core.RustInterop.emitRustExpr v710 v730 let _v729 = () #endif #if FABLE_COMPILER_RUST && WASM let v731 : string = @"println!(""{}"", $0)" Fable.Core.RustInterop.emitRustExpr v710 v731 let _v729 = () #endif #if FABLE_COMPILER_RUST && CONTRACT let v732 : string = $"near_sdk::log!(\"{{}}\", $0)" Fable.Core.RustInterop.emitRustExpr v710 v732 let _v729 = () #endif #if FABLE_COMPILER_TYPESCRIPT v728 v710 let _v729 = () #endif #if FABLE_COMPILER_PYTHON v728 v710 let _v729 = () #endif #else v728 v710 let _v729 = () #endif _v729 let v733 : (string -> unit) = v17.l0 v733 v710 and method9 () : string = let v0 : string = "(" v0 and method10 () : string = let v0 : string = " " v0 and closure22 () () : string = let v0 : string = $"async.run_with_timeout_async**" v0 and closure21 (v0 : int32, v1 : exn) () : unit = let v2 : unit = () let v3 : (unit -> unit) = closure0() let v4 : unit = (fun () -> v3 (); v2) () let struct (v17 : Mut0, v18 : Mut1, v19 : Mut2, v20 : Mut3, v21 : int64 option) = State.trace_state.Value let v32 : unit = () let v33 : unit = (fun () -> v3 (); v32) () let struct (v46 : Mut0, v47 : Mut1, v48 : Mut2, v49 : Mut3, v50 : int64 option) = State.trace_state.Value let v61 : US0 = v49.l0 let v62 : bool = v48.l0 let v63 : bool = v62 = false let v66 : bool = if v63 then false else let v64 : int32 = [ US0_0, 0; US0_1, 1; US0_2, 2; US0_3, 3; US0_4, 4 ] |> Map |> Map.find v61 let v65 : bool = 4 >= v64 v65 if v66 then let v67 : unit = () let v68 : (unit -> unit) = closure7(v17) let v69 : unit = (fun () -> v68 (); v67) () let v72 : unit = () let v73 : unit = (fun () -> v3 (); v72) () let struct (v86 : Mut0, v87 : Mut1, v88 : Mut2, v89 : Mut3, v90 : int64 option) = State.trace_state.Value let v101 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v102 : US3 option = None let _v102 = ref v102 let v103 : US3 option ref = _v102 let v104 : (US3 option -> US3 option ref) = closure8(v103) let v105 : unit = () let v106 : (unit -> unit) = closure9(v90, v104) let v107 : unit = (fun () -> v106 (); v105) () let v110 : US3 option = _v102.Value let v121 : US3 = US3_1 let v122 : US3 = v110 |> Option.defaultValue v121 let v162 : System.DateTime = match v122 with | US3_1 -> (* None *) let v158 : System.DateTime = System.DateTime.Now v158 | US3_0(v126) -> (* Some *) let v127 : System.DateTime = System.DateTime.Now let v130 : (System.DateTime -> int64) = _.Ticks let v131 : int64 = v130 v127 let v134 : int64 = v131 - v126 let v135 : (int64 -> System.TimeSpan) = System.TimeSpan let v136 : System.TimeSpan = v135 v134 let v139 : (System.TimeSpan -> int32) = _.Hours let v140 : int32 = v139 v136 let v143 : (System.TimeSpan -> int32) = _.Minutes let v144 : int32 = v143 v136 let v147 : (System.TimeSpan -> int32) = _.Seconds let v148 : int32 = v147 v136 let v151 : (System.TimeSpan -> int32) = _.Milliseconds let v152 : int32 = v151 v136 let v155 : System.DateTime = System.DateTime (1, 1, 1, v140, v144, v148, v152) v155 let v163 : string = method5() let v166 : (string -> string) = v162.ToString let v167 : string = v166 v163 let _v101 = v167 #endif #if FABLE_COMPILER_RUST && WASM let v170 : US3 option = None let _v170 = ref v170 let v171 : US3 option ref = _v170 let v172 : (US3 option -> US3 option ref) = closure8(v171) let v173 : unit = () let v174 : (unit -> unit) = closure9(v90, v172) let v175 : unit = (fun () -> v174 (); v173) () let v178 : US3 option = _v170.Value let v189 : US3 = US3_1 let v190 : US3 = v178 |> Option.defaultValue v189 let v230 : System.DateTime = match v190 with | US3_1 -> (* None *) let v226 : System.DateTime = System.DateTime.Now v226 | US3_0(v194) -> (* Some *) let v195 : System.DateTime = System.DateTime.Now let v198 : (System.DateTime -> int64) = _.Ticks let v199 : int64 = v198 v195 let v202 : int64 = v199 - v194 let v203 : (int64 -> System.TimeSpan) = System.TimeSpan let v204 : System.TimeSpan = v203 v202 let v207 : (System.TimeSpan -> int32) = _.Hours let v208 : int32 = v207 v204 let v211 : (System.TimeSpan -> int32) = _.Minutes let v212 : int32 = v211 v204 let v215 : (System.TimeSpan -> int32) = _.Seconds let v216 : int32 = v215 v204 let v219 : (System.TimeSpan -> int32) = _.Milliseconds let v220 : int32 = v219 v204 let v223 : System.DateTime = System.DateTime (1, 1, 1, v208, v212, v216, v220) v223 let v231 : string = method5() let v234 : (string -> string) = v230.ToString let v235 : string = v234 v231 let _v101 = v235 #endif #if FABLE_COMPILER_RUST && CONTRACT let v238 : string = $"near_sdk::env::block_timestamp()" let v239 : uint64 = Fable.Core.RustInterop.emitRustExpr () v238 let v240 : US3 option = None let _v240 = ref v240 let v241 : US3 option ref = _v240 let v242 : (US3 option -> US3 option ref) = closure8(v241) let v243 : unit = () let v244 : (unit -> unit) = closure9(v90, v242) let v245 : unit = (fun () -> v244 (); v243) () let v248 : US3 option = _v240.Value let v259 : US3 = US3_1 let v260 : US3 = v248 |> Option.defaultValue v259 let v269 : uint64 = match v260 with | US3_1 -> (* None *) v239 | US3_0(v264) -> (* Some *) let v265 : (int64 -> uint64) = uint64 let v266 : uint64 = v265 v264 let v267 : uint64 = v239 - v266 v267 let v270 : uint64 = v269 / 1000000000UL let v271 : uint64 = v270 % 60UL let v272 : uint64 = v270 / 60UL let v273 : uint64 = v272 % 60UL let v274 : uint64 = v270 / 3600UL let v275 : uint64 = v274 % 24UL let v276 : string = $"format!(\"{{:02}}:{{:02}}:{{:02}}\", $0, $1, $2)" let v277 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v275, v273, v271) v276 let v278 : string = "fable_library_rust::String_::fromString($0)" let v279 : string = Fable.Core.RustInterop.emitRustExpr v277 v278 let _v101 = v279 #endif #if FABLE_COMPILER_TYPESCRIPT let v280 : US3 option = None let _v280 = ref v280 let v281 : US3 option ref = _v280 let v282 : (US3 option -> US3 option ref) = closure8(v281) let v283 : unit = () let v284 : (unit -> unit) = closure9(v90, v282) let v285 : unit = (fun () -> v284 (); v283) () let v288 : US3 option = _v280.Value let v299 : US3 = US3_1 let v300 : US3 = v288 |> Option.defaultValue v299 let v340 : System.DateTime = match v300 with | US3_1 -> (* None *) let v336 : System.DateTime = System.DateTime.Now v336 | US3_0(v304) -> (* Some *) let v305 : System.DateTime = System.DateTime.Now let v308 : (System.DateTime -> int64) = _.Ticks let v309 : int64 = v308 v305 let v312 : int64 = v309 - v304 let v313 : (int64 -> System.TimeSpan) = System.TimeSpan let v314 : System.TimeSpan = v313 v312 let v317 : (System.TimeSpan -> int32) = _.Hours let v318 : int32 = v317 v314 let v321 : (System.TimeSpan -> int32) = _.Minutes let v322 : int32 = v321 v314 let v325 : (System.TimeSpan -> int32) = _.Seconds let v326 : int32 = v325 v314 let v329 : (System.TimeSpan -> int32) = _.Milliseconds let v330 : int32 = v329 v314 let v333 : System.DateTime = System.DateTime (1, 1, 1, v318, v322, v326, v330) v333 let v341 : string = method6() let v344 : (string -> string) = v340.ToString let v345 : string = v344 v341 let _v101 = v345 #endif #if FABLE_COMPILER_PYTHON let v348 : US3 option = None let _v348 = ref v348 let v349 : US3 option ref = _v348 let v350 : (US3 option -> US3 option ref) = closure8(v349) let v351 : unit = () let v352 : (unit -> unit) = closure9(v90, v350) let v353 : unit = (fun () -> v352 (); v351) () let v356 : US3 option = _v348.Value let v367 : US3 = US3_1 let v368 : US3 = v356 |> Option.defaultValue v367 let v408 : System.DateTime = match v368 with | US3_1 -> (* None *) let v404 : System.DateTime = System.DateTime.Now v404 | US3_0(v372) -> (* Some *) let v373 : System.DateTime = System.DateTime.Now let v376 : (System.DateTime -> int64) = _.Ticks let v377 : int64 = v376 v373 let v380 : int64 = v377 - v372 let v381 : (int64 -> System.TimeSpan) = System.TimeSpan let v382 : System.TimeSpan = v381 v380 let v385 : (System.TimeSpan -> int32) = _.Hours let v386 : int32 = v385 v382 let v389 : (System.TimeSpan -> int32) = _.Minutes let v390 : int32 = v389 v382 let v393 : (System.TimeSpan -> int32) = _.Seconds let v394 : int32 = v393 v382 let v397 : (System.TimeSpan -> int32) = _.Milliseconds let v398 : int32 = v397 v382 let v401 : System.DateTime = System.DateTime (1, 1, 1, v386, v390, v394, v398) v401 let v409 : string = method6() let v412 : (string -> string) = v408.ToString let v413 : string = v412 v409 let _v101 = v413 #endif #else let v416 : US3 option = None let _v416 = ref v416 let v417 : US3 option ref = _v416 let v418 : (US3 option -> US3 option ref) = closure8(v417) let v419 : unit = () let v420 : (unit -> unit) = closure9(v90, v418) let v421 : unit = (fun () -> v420 (); v419) () let v424 : US3 option = _v416.Value let v435 : US3 = US3_1 let v436 : US3 = v424 |> Option.defaultValue v435 let v476 : System.DateTime = match v436 with | US3_1 -> (* None *) let v472 : System.DateTime = System.DateTime.Now v472 | US3_0(v440) -> (* Some *) let v441 : System.DateTime = System.DateTime.Now let v444 : (System.DateTime -> int64) = _.Ticks let v445 : int64 = v444 v441 let v448 : int64 = v445 - v440 let v449 : (int64 -> System.TimeSpan) = System.TimeSpan let v450 : System.TimeSpan = v449 v448 let v453 : (System.TimeSpan -> int32) = _.Hours let v454 : int32 = v453 v450 let v457 : (System.TimeSpan -> int32) = _.Minutes let v458 : int32 = v457 v450 let v461 : (System.TimeSpan -> int32) = _.Seconds let v462 : int32 = v461 v450 let v465 : (System.TimeSpan -> int32) = _.Milliseconds let v466 : int32 = v465 v450 let v469 : System.DateTime = System.DateTime (1, 1, 1, v454, v458, v462, v466) v469 let v477 : string = method6() let v480 : (string -> string) = v476.ToString let v481 : string = v480 v477 let _v101 = v481 #endif let v484 : string = _v101 let v554 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v555 : string = method9() let _v554 = v555 #endif #if FABLE_COMPILER_RUST && WASM let v556 : string = method9() let _v554 = v556 #endif #if FABLE_COMPILER_RUST && CONTRACT let v557 : string = method9() let _v554 = v557 #endif #if FABLE_COMPILER_TYPESCRIPT let v558 : string = method10() let _v554 = v558 #endif #if FABLE_COMPILER_PYTHON let v559 : string = method10() let _v554 = v559 #endif #else let v560 : string = method10() let _v554 = v560 #endif let v561 : string = _v554 let v566 : string = method8() let v567 : Mut4 = {l0 = v566} : Mut4 let v568 : US0 = US0_0 let v569 : string = $"%A{v568}" let v573 : string = $"{v569}" let v576 : unit = () let v577 : (unit -> unit) = closure10(v567, v573) let v578 : unit = (fun () -> v577 (); v576) () let v581 : string = v567.l0 let v582 : (string []) = v581.Split v561 let v585 : string = v582.[int 0] let v588 : string = method8() let v589 : Mut4 = {l0 = v588} : Mut4 let v590 : US0 = US0_4 let v591 : string = $"%A{v590}" let v595 : string = $"{v591}" let v598 : unit = () let v599 : (unit -> unit) = closure10(v589, v595) let v600 : unit = (fun () -> v599 (); v598) () let v603 : string = v589.l0 let v604 : bool = v603.StartsWith v585 let v610 : US1 = if v604 then let v607 : string = "Verbose" US1_0(v607) else US1_1 let v799 : US1 = match v610 with | US1_1 -> (* None *) let v613 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v614 : string = method9() let _v613 = v614 #endif #if FABLE_COMPILER_RUST && WASM let v615 : string = method9() let _v613 = v615 #endif #if FABLE_COMPILER_RUST && CONTRACT let v616 : string = method9() let _v613 = v616 #endif #if FABLE_COMPILER_TYPESCRIPT let v617 : string = method10() let _v613 = v617 #endif #if FABLE_COMPILER_PYTHON let v618 : string = method10() let _v613 = v618 #endif #else let v619 : string = method10() let _v613 = v619 #endif let v620 : string = _v613 let v625 : string = method8() let v626 : Mut4 = {l0 = v625} : Mut4 let v627 : US0 = US0_1 let v628 : string = $"%A{v627}" let v632 : string = $"{v628}" let v635 : unit = () let v636 : (unit -> unit) = closure10(v626, v632) let v637 : unit = (fun () -> v636 (); v635) () let v640 : string = v626.l0 let v641 : (string []) = v640.Split v620 let v644 : string = v641.[int 0] let v647 : string = method8() let v648 : Mut4 = {l0 = v647} : Mut4 let v649 : US0 = US0_4 let v650 : string = $"%A{v649}" let v654 : string = $"{v650}" let v657 : unit = () let v658 : (unit -> unit) = closure10(v648, v654) let v659 : unit = (fun () -> v658 (); v657) () let v662 : string = v648.l0 let v663 : bool = v662.StartsWith v644 let v669 : US1 = if v663 then let v666 : string = "Debug" US1_0(v666) else US1_1 match v669 with | US1_1 -> (* None *) let v672 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v673 : string = method9() let _v672 = v673 #endif #if FABLE_COMPILER_RUST && WASM let v674 : string = method9() let _v672 = v674 #endif #if FABLE_COMPILER_RUST && CONTRACT let v675 : string = method9() let _v672 = v675 #endif #if FABLE_COMPILER_TYPESCRIPT let v676 : string = method10() let _v672 = v676 #endif #if FABLE_COMPILER_PYTHON let v677 : string = method10() let _v672 = v677 #endif #else let v678 : string = method10() let _v672 = v678 #endif let v679 : string = _v672 let v684 : string = method8() let v685 : Mut4 = {l0 = v684} : Mut4 let v686 : US0 = US0_2 let v687 : string = $"%A{v686}" let v691 : string = $"{v687}" let v694 : unit = () let v695 : (unit -> unit) = closure10(v685, v691) let v696 : unit = (fun () -> v695 (); v694) () let v699 : string = v685.l0 let v700 : (string []) = v699.Split v679 let v703 : string = v700.[int 0] let v706 : string = method8() let v707 : Mut4 = {l0 = v706} : Mut4 let v708 : US0 = US0_4 let v709 : string = $"%A{v708}" let v713 : string = $"{v709}" let v716 : unit = () let v717 : (unit -> unit) = closure10(v707, v713) let v718 : unit = (fun () -> v717 (); v716) () let v721 : string = v707.l0 let v722 : bool = v721.StartsWith v703 let v728 : US1 = if v722 then let v725 : string = "Info" US1_0(v725) else US1_1 match v728 with | US1_1 -> (* None *) let v731 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v732 : string = method9() let _v731 = v732 #endif #if FABLE_COMPILER_RUST && WASM let v733 : string = method9() let _v731 = v733 #endif #if FABLE_COMPILER_RUST && CONTRACT let v734 : string = method9() let _v731 = v734 #endif #if FABLE_COMPILER_TYPESCRIPT let v735 : string = method10() let _v731 = v735 #endif #if FABLE_COMPILER_PYTHON let v736 : string = method10() let _v731 = v736 #endif #else let v737 : string = method10() let _v731 = v737 #endif let v738 : string = _v731 let v743 : string = method8() let v744 : Mut4 = {l0 = v743} : Mut4 let v745 : US0 = US0_3 let v746 : string = $"%A{v745}" let v750 : string = $"{v746}" let v753 : unit = () let v754 : (unit -> unit) = closure10(v744, v750) let v755 : unit = (fun () -> v754 (); v753) () let v758 : string = v744.l0 let v759 : (string []) = v758.Split v738 let v762 : string = v759.[int 0] let v765 : string = method8() let v766 : Mut4 = {l0 = v765} : Mut4 let v767 : US0 = US0_4 let v768 : string = $"%A{v767}" let v772 : string = $"{v768}" let v775 : unit = () let v776 : (unit -> unit) = closure10(v766, v772) let v777 : unit = (fun () -> v776 (); v775) () let v780 : string = v766.l0 let v781 : bool = v780.StartsWith v762 let v787 : US1 = if v781 then let v784 : string = "Warning" US1_0(v784) else US1_1 match v787 with | US1_1 -> (* None *) let v790 : string = "Critical" US1_0(v790) | US1_0(v788) -> (* Some *) US1_0(v788) | US1_0(v729) -> (* Some *) US1_0(v729) | US1_0(v670) -> (* Some *) US1_0(v670) | US1_0(v611) -> (* Some *) US1_0(v611) let v803 : string = match v799 with | US1_1 -> (* None *) failwith<string> "Option does not have a value." | US1_0(v800) -> (* Some *) v800 let v804 : (unit -> string) = v803.ToLower let v805 : string = v804 () let v808 : string = v805.PadLeft (7, ' ') let v822 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v823 : string = "inline_colorization::color_bright_red" let v824 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v823 let v825 : string = "&*$0" let v826 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v808 v825 let v827 : string = "inline_colorization::color_reset" let v828 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v827 let v829 : string = "\"{v824}{v826}{v828}\"" let v830 : string = @$"format!(" + v829 + ")" let v831 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v830 let v832 : string = "fable_library_rust::String_::fromString($0)" let v833 : string = Fable.Core.RustInterop.emitRustExpr v831 v832 let _v822 = v833 #endif #if FABLE_COMPILER_RUST && WASM let v834 : string = "inline_colorization::color_bright_red" let v835 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v834 let v836 : string = "&*$0" let v837 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v808 v836 let v838 : string = "inline_colorization::color_reset" let v839 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v838 let v840 : string = "\"{v835}{v837}{v839}\"" let v841 : string = @$"format!(" + v840 + ")" let v842 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v841 let v843 : string = "fable_library_rust::String_::fromString($0)" let v844 : string = Fable.Core.RustInterop.emitRustExpr v842 v843 let _v822 = v844 #endif #if FABLE_COMPILER_RUST && CONTRACT let v845 : string = "inline_colorization::color_bright_red" let v846 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v845 let v847 : string = "&*$0" let v848 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v808 v847 let v849 : string = "inline_colorization::color_reset" let v850 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v849 let v851 : string = "\"{v846}{v848}{v850}\"" let v852 : string = @$"format!(" + v851 + ")" let v853 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v852 let v854 : string = "fable_library_rust::String_::fromString($0)" let v855 : string = Fable.Core.RustInterop.emitRustExpr v853 v854 let _v822 = v855 #endif #if FABLE_COMPILER_TYPESCRIPT let v856 : string = "\u001b[91m" let v857 : string = method7() let v858 : string = v856 + v808 let v859 : string = v858 + v857 let _v822 = v859 #endif #if FABLE_COMPILER_PYTHON let v860 : string = "\u001b[91m" let v861 : string = method7() let v862 : string = v860 + v808 let v863 : string = v862 + v861 let _v822 = v863 #endif #else let v864 : string = "\u001b[91m" let v865 : string = method7() let v866 : string = v864 + v808 let v867 : string = v866 + v865 let _v822 = v867 #endif let v868 : string = _v822 let v874 : int64 = v86.l0 let v875 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v876 : string = $"%A{v1}" let _v875 = v876 #endif #if FABLE_COMPILER_RUST && WASM let v879 : string = $"%A{v1}" let _v875 = v879 #endif #if FABLE_COMPILER_RUST && CONTRACT let v882 : string = $"%A{v1}" let _v875 = v882 #endif #if FABLE_COMPILER_TYPESCRIPT let v885 : string = $"%A{v1}" let _v875 = v885 #endif #if FABLE_COMPILER_PYTHON let v888 : string = $"%A{v1}" let _v875 = v888 #endif #else let v891 : string = $"{v1.GetType ()}: {v1.Message}" let _v875 = v891 #endif let v892 : string = _v875 let v897 : string = method8() let v898 : Mut4 = {l0 = v897} : Mut4 let v899 : string = "{ " let v900 : string = $"{v899}" let v903 : unit = () let v904 : (unit -> unit) = closure10(v898, v900) let v905 : unit = (fun () -> v904 (); v903) () let v908 : string = "timeout" let v909 : string = $"{v908}" let v912 : unit = () let v913 : (unit -> unit) = closure10(v898, v909) let v914 : unit = (fun () -> v913 (); v912) () let v917 : string = " = " let v918 : string = $"{v917}" let v921 : unit = () let v922 : (unit -> unit) = closure10(v898, v918) let v923 : unit = (fun () -> v922 (); v921) () let v926 : string = $"{v0}" let v929 : unit = () let v930 : (unit -> unit) = closure10(v898, v926) let v931 : unit = (fun () -> v930 (); v929) () let v934 : string = "; " let v935 : string = $"{v934}" let v938 : unit = () let v939 : (unit -> unit) = closure10(v898, v935) let v940 : unit = (fun () -> v939 (); v938) () let v943 : string = "ex" let v944 : string = $"{v943}" let v947 : unit = () let v948 : (unit -> unit) = closure10(v898, v944) let v949 : unit = (fun () -> v948 (); v947) () let v952 : string = $"{v917}" let v955 : unit = () let v956 : (unit -> unit) = closure10(v898, v952) let v957 : unit = (fun () -> v956 (); v955) () let v960 : string = $"{v892}" let v963 : unit = () let v964 : (unit -> unit) = closure10(v898, v960) let v965 : unit = (fun () -> v964 (); v963) () let v968 : string = " }" let v969 : string = $"{v968}" let v972 : unit = () let v973 : (unit -> unit) = closure10(v898, v969) let v974 : unit = (fun () -> v973 (); v972) () let v977 : string = v898.l0 let v978 : (unit -> string) = closure22() let v979 : string = $"{v484} {v868} #{v874} %s{v978 ()} / {v977}" let v982 : char list = [] let v983 : (char list -> (char [])) = List.toArray let v984 : (char []) = v983 v982 let v987 : string = v979.TrimStart v984 let v1005 : char list = [] let v1006 : char list = '/' :: v1005 let v1009 : char list = ' ' :: v1006 let v1012 : (char list -> (char [])) = List.toArray let v1013 : (char []) = v1012 v1009 let v1016 : string = v987.TrimEnd v1013 let v1034 : (string -> unit) = closure12() let v1035 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1036 : string = @"println!(""{}"", $0)" Fable.Core.RustInterop.emitRustExpr v1016 v1036 let _v1035 = () #endif #if FABLE_COMPILER_RUST && WASM let v1037 : string = @"println!(""{}"", $0)" Fable.Core.RustInterop.emitRustExpr v1016 v1037 let _v1035 = () #endif #if FABLE_COMPILER_RUST && CONTRACT let v1038 : string = $"near_sdk::log!(\"{{}}\", $0)" Fable.Core.RustInterop.emitRustExpr v1016 v1038 let _v1035 = () #endif #if FABLE_COMPILER_TYPESCRIPT v1034 v1016 let _v1035 = () #endif #if FABLE_COMPILER_PYTHON v1034 v1016 let _v1035 = () #endif #else v1034 v1016 let _v1035 = () #endif _v1035 let v1039 : (string -> unit) = v18.l0 v1039 v1016 and closure16 (v0 : int32, v1 : string) (v2 : int32) : Async<bool> = let v3 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v4 : Async<bool> = null |> unbox<Async<bool>> let _v3 = v4 #endif #if FABLE_COMPILER_RUST && WASM let v7 : Async<bool> = null |> unbox<Async<bool>> let _v3 = v7 #endif #if FABLE_COMPILER_RUST && CONTRACT let v10 : Async<bool> = null |> unbox<Async<bool>> let _v3 = v10 #endif #if FABLE_COMPILER_TYPESCRIPT let v13 : Async<bool> = null |> unbox<Async<bool>> let _v3 = v13 #endif #if FABLE_COMPILER_PYTHON let v16 : Async<bool> = null |> unbox<Async<bool>> let _v3 = v16 #endif #else let v19 : Async<bool> option = None let mutable _v19 = v19 async { let v20 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v21 : Async<bool> = null |> unbox<Async<bool>> let _v20 = v21 #endif #if FABLE_COMPILER_RUST && WASM let v24 : Async<bool> = null |> unbox<Async<bool>> let _v20 = v24 #endif #if FABLE_COMPILER_RUST && CONTRACT let v27 : Async<bool> = null |> unbox<Async<bool>> let _v20 = v27 #endif #if FABLE_COMPILER_TYPESCRIPT let v30 : Async<bool> = null |> unbox<Async<bool>> let _v20 = v30 #endif #if FABLE_COMPILER_PYTHON let v33 : Async<bool> = null |> unbox<Async<bool>> let _v20 = v33 #endif #else let v36 : Async<bool> option = None let mutable _v36 = v36 async { let v37 : Async<System.Threading.CancellationToken> = Async.CancellationToken let! v37 = v37 let v38 : System.Threading.CancellationToken = v37 let v39 : System.Net.Sockets.TcpClient = new System.Net.Sockets.TcpClient () use v39 = v39 let v40 : System.Net.Sockets.TcpClient = v39 try let v41 : System.Threading.Tasks.ValueTask = v40.ConnectAsync (v1, v2, v38) let v42 : (unit -> System.Threading.Tasks.Task) = v41.AsTask let v43 : System.Threading.Tasks.Task = v42 () let v44 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v45 : Async<unit> = null |> unbox<Async<unit>> let _v44 = v45 #endif #if FABLE_COMPILER_RUST && WASM let v48 : Async<unit> = null |> unbox<Async<unit>> let _v44 = v48 #endif #if FABLE_COMPILER_RUST && CONTRACT let v51 : Async<unit> = null |> unbox<Async<unit>> let _v44 = v51 #endif #if FABLE_COMPILER_TYPESCRIPT let v54 : Async<unit> = null |> unbox<Async<unit>> let _v44 = v54 #endif #if FABLE_COMPILER_PYTHON let v57 : Async<unit> = null |> unbox<Async<unit>> let _v44 = v57 #endif #else let v60 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v61 : Async<unit> = v60 v43 let _v44 = v61 #endif let v62 : Async<unit> = _v44 do! v62 return true with ex -> let v67 : exn = ex let v68 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v69 : string = $"%A{v67}" let _v68 = v69 #endif #if FABLE_COMPILER_RUST && WASM let v72 : string = $"%A{v67}" let _v68 = v72 #endif #if FABLE_COMPILER_RUST && CONTRACT let v75 : string = $"%A{v67}" let _v68 = v75 #endif #if FABLE_COMPILER_TYPESCRIPT let v78 : string = $"%A{v67}" let _v68 = v78 #endif #if FABLE_COMPILER_PYTHON let v81 : string = $"%A{v67}" let _v68 = v81 #endif #else let v84 : string = $"{v67.GetType ()}: {v67.Message}" let _v68 = v84 #endif let v85 : string = _v68 let v90 : unit = () let v91 : (unit -> unit) = closure6(v2, v85) let v92 : unit = (fun () -> v91 (); v90) () return false (* let v860 : bool = *) } |> fun x -> _v36 <- Some x let v861 : Async<bool> = match _v36 with Some x -> x | None -> failwith "async.new_async_unit / _v36=None" let _v20 = v861 #endif let v862 : Async<bool> = _v20 let v867 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v868 : Async<US4> = null |> unbox<Async<US4>> let _v867 = v868 #endif #if FABLE_COMPILER_RUST && WASM let v871 : Async<US4> = null |> unbox<Async<US4>> let _v867 = v871 #endif #if FABLE_COMPILER_RUST && CONTRACT let v874 : Async<US4> = null |> unbox<Async<US4>> let _v867 = v874 #endif #if FABLE_COMPILER_TYPESCRIPT let v877 : Async<US4> = null |> unbox<Async<US4>> let _v867 = v877 #endif #if FABLE_COMPILER_PYTHON let v880 : Async<US4> = null |> unbox<Async<US4>> let _v867 = v880 #endif #else let v883 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v884 : Async<US4> = null |> unbox<Async<US4>> let _v883 = v884 #endif #if FABLE_COMPILER_RUST && WASM let v887 : Async<US4> = null |> unbox<Async<US4>> let _v883 = v887 #endif #if FABLE_COMPILER_RUST && CONTRACT let v890 : Async<US4> = null |> unbox<Async<US4>> let _v883 = v890 #endif #if FABLE_COMPILER_TYPESCRIPT let v893 : Async<US4> = null |> unbox<Async<US4>> let _v883 = v893 #endif #if FABLE_COMPILER_PYTHON let v896 : Async<US4> = null |> unbox<Async<US4>> let _v883 = v896 #endif #else let v899 : Async<US4> option = None let mutable _v899 = v899 async { let v900 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v901 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _v900 = v901 #endif #if FABLE_COMPILER_RUST && WASM let v904 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _v900 = v904 #endif #if FABLE_COMPILER_RUST && CONTRACT let v907 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _v900 = v907 #endif #if FABLE_COMPILER_TYPESCRIPT let v910 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _v900 = v910 #endif #if FABLE_COMPILER_PYTHON let v913 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _v900 = v913 #endif #else let v916 : Async<Async<bool>> = Async.StartChild (v862, v0) let _v900 = v916 #endif let v917 : Async<Async<bool>> = _v900 let! v917 = v917 let v922 : Async<bool> = v917 let v923 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v924 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _v923 = v924 #endif #if FABLE_COMPILER_RUST && WASM let v927 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _v923 = v927 #endif #if FABLE_COMPILER_RUST && CONTRACT let v930 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _v923 = v930 #endif #if FABLE_COMPILER_TYPESCRIPT let v933 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _v923 = v933 #endif #if FABLE_COMPILER_PYTHON let v936 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _v923 = v936 #endif #else let v939 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v940 : Async<Choice<bool, exn>> = v939 v922 let _v923 = v940 #endif let v941 : Async<Choice<bool, exn>> = _v923 let v946 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v947 : Async<US5> = null |> unbox<Async<US5>> let _v946 = v947 #endif #if FABLE_COMPILER_RUST && WASM let v950 : Async<US5> = null |> unbox<Async<US5>> let _v946 = v950 #endif #if FABLE_COMPILER_RUST && CONTRACT let v953 : Async<US5> = null |> unbox<Async<US5>> let _v946 = v953 #endif #if FABLE_COMPILER_TYPESCRIPT let v956 : Async<US5> = null |> unbox<Async<US5>> let _v946 = v956 #endif #if FABLE_COMPILER_PYTHON let v959 : Async<US5> = null |> unbox<Async<US5>> let _v946 = v959 #endif #else let v962 : Async<US5> option = None let mutable _v962 = v962 async { let! v941 = v941 let v963 : Choice<bool, exn> = v941 let v964 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v965 : US5 = null |> unbox<US5> let _v964 = v965 #endif #if FABLE_COMPILER_RUST && WASM let v968 : US5 = null |> unbox<US5> let _v964 = v968 #endif #if FABLE_COMPILER_RUST && CONTRACT let v971 : US5 = null |> unbox<US5> let _v964 = v971 #endif #if FABLE_COMPILER_TYPESCRIPT let v974 : US5 = null |> unbox<US5> let _v964 = v974 #endif #if FABLE_COMPILER_PYTHON let v977 : US5 = null |> unbox<US5> let _v964 = v977 #endif #else let v980 : (bool -> US5) = closure17() let v981 : (exn -> US5) = closure18() let v982 : US5 = match v963 with Choice1Of2 x -> v980 x | Choice2Of2 x -> v981 x let _v964 = v982 #endif let v983 : US5 = _v964 return v983 } |> fun x -> _v962 <- Some x let v988 : Async<US5> = match _v962 with Some x -> x | None -> failwith "async.new_async_unit / _v962=None" let _v946 = v988 #endif let v989 : Async<US5> = _v946 let v994 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v995 : Async<US6> = null |> unbox<Async<US6>> let _v994 = v995 #endif #if FABLE_COMPILER_RUST && WASM let v998 : Async<US6> = null |> unbox<Async<US6>> let _v994 = v998 #endif #if FABLE_COMPILER_RUST && CONTRACT let v1001 : Async<US6> = null |> unbox<Async<US6>> let _v994 = v1001 #endif #if FABLE_COMPILER_TYPESCRIPT let v1004 : Async<US6> = null |> unbox<Async<US6>> let _v994 = v1004 #endif #if FABLE_COMPILER_PYTHON let v1007 : Async<US6> = null |> unbox<Async<US6>> let _v994 = v1007 #endif #else let v1010 : Async<US6> option = None let mutable _v1010 = v1010 async { let! v989 = v989 let v1011 : US5 = v989 let v1017 : US6 = match v1011 with | US5_0(v1012) -> (* C1of2 *) US6_0(v1012) | US5_1(v1014) -> (* C2of2 *) US6_1(v1014) return v1017 } |> fun x -> _v1010 <- Some x let v1018 : Async<US6> = match _v1010 with Some x -> x | None -> failwith "async.new_async_unit / _v1010=None" let _v994 = v1018 #endif let v1019 : Async<US6> = _v994 let v1024 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1025 : Async<US4> = null |> unbox<Async<US4>> let _v1024 = v1025 #endif #if FABLE_COMPILER_RUST && WASM let v1028 : Async<US4> = null |> unbox<Async<US4>> let _v1024 = v1028 #endif #if FABLE_COMPILER_RUST && CONTRACT let v1031 : Async<US4> = null |> unbox<Async<US4>> let _v1024 = v1031 #endif #if FABLE_COMPILER_TYPESCRIPT let v1034 : Async<US4> = null |> unbox<Async<US4>> let _v1024 = v1034 #endif #if FABLE_COMPILER_PYTHON let v1037 : Async<US4> = null |> unbox<Async<US4>> let _v1024 = v1037 #endif #else let v1040 : Async<US4> option = None let mutable _v1040 = v1040 async { let! v1019 = v1019 let v1041 : US6 = v1019 let v2833 : US4 = match v1041 with | US6_1(v1044) -> (* Error *) let v1045 : string = $"%A{v1044}" let v1048 : string = "System.TimeoutException" let v1049 : bool = v1045.Contains v1048 if v1049 then let v1052 : unit = () let v1053 : (unit -> unit) = closure19(v0) let v1054 : unit = (fun () -> v1053 (); v1052) () US4_1 else let v1789 : unit = () let v1790 : (unit -> unit) = closure21(v0, v1044) let v1791 : unit = (fun () -> v1790 (); v1789) () US4_1 | US6_0(v1042) -> (* Ok *) US4_0(v1042) return v2833 } |> fun x -> _v1040 <- Some x let v2834 : Async<US4> = match _v1040 with Some x -> x | None -> failwith "async.new_async_unit / _v1040=None" let _v1024 = v2834 #endif let v2835 : Async<US4> = _v1024 return! v2835 } |> fun x -> _v899 <- Some x let v2840 : Async<US4> = match _v899 with Some x -> x | None -> failwith "async.new_async_unit / _v899=None" let _v883 = v2840 #endif let v2841 : Async<US4> = _v883 let _v867 = v2841 #endif let v2846 : Async<US4> = _v867 let! v2846 = v2846 let v2851 : US4 = v2846 let v2854 : bool = match v2851 with | US4_1 -> (* None *) false | US4_0(v2852) -> (* Some *) v2852 return v2854 } |> fun x -> _v19 <- Some x let v2855 : Async<bool> = match _v19 with Some x -> x | None -> failwith "async.new_async_unit / _v19=None" let _v3 = v2855 #endif let v2856 : Async<bool> = _v3 v2856 and closure15 (v0 : int32) (v1 : string) : (int32 -> Async<bool>) = closure16(v0, v1) and closure14 () (v0 : int32) : (string -> (int32 -> Async<bool>)) = closure15(v0) and closure27 (v0 : US7 option ref) (v1 : US7 option) : US7 option ref = v0.Value <- v1 v0 and closure28 (v0 : int32 option, v1 : (US7 option -> US7 option ref)) () : unit = match v0 with | Some x -> ( (fun () -> (fun () -> let v2 : int32 = x let v3 : US7 = US7_0(v2) v3 ) |> fun x -> x () |> Some ) () ) | None -> None |> v1 |> ignore () and closure30 () () : string = let v0 : string = "networking.wait_for_port_access" v0 and closure29 (v0 : int32 option, v1 : bool, v2 : int32, v3 : int64) () : unit = let v4 : unit = () let v5 : (unit -> unit) = closure0() let v6 : unit = (fun () -> v5 (); v4) () let struct (v19 : Mut0, v20 : Mut1, v21 : Mut2, v22 : Mut3, v23 : int64 option) = State.trace_state.Value let v34 : unit = () let v35 : unit = (fun () -> v5 (); v34) () let struct (v48 : Mut0, v49 : Mut1, v50 : Mut2, v51 : Mut3, v52 : int64 option) = State.trace_state.Value let v63 : US0 = v51.l0 let v64 : bool = v50.l0 let v65 : bool = v64 = false let v68 : bool = if v65 then false else let v66 : int32 = [ US0_0, 0; US0_1, 1; US0_2, 2; US0_3, 3; US0_4, 4 ] |> Map |> Map.find v63 let v67 : bool = 0 >= v66 v67 if v68 then let v69 : unit = () let v70 : (unit -> unit) = closure7(v19) let v71 : unit = (fun () -> v70 (); v69) () let v74 : unit = () let v75 : unit = (fun () -> v5 (); v74) () let struct (v88 : Mut0, v89 : Mut1, v90 : Mut2, v91 : Mut3, v92 : int64 option) = State.trace_state.Value let v103 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v104 : US3 option = None let _v104 = ref v104 let v105 : US3 option ref = _v104 let v106 : (US3 option -> US3 option ref) = closure8(v105) let v107 : unit = () let v108 : (unit -> unit) = closure9(v92, v106) let v109 : unit = (fun () -> v108 (); v107) () let v112 : US3 option = _v104.Value let v123 : US3 = US3_1 let v124 : US3 = v112 |> Option.defaultValue v123 let v164 : System.DateTime = match v124 with | US3_1 -> (* None *) let v160 : System.DateTime = System.DateTime.Now v160 | US3_0(v128) -> (* Some *) let v129 : System.DateTime = System.DateTime.Now let v132 : (System.DateTime -> int64) = _.Ticks let v133 : int64 = v132 v129 let v136 : int64 = v133 - v128 let v137 : (int64 -> System.TimeSpan) = System.TimeSpan let v138 : System.TimeSpan = v137 v136 let v141 : (System.TimeSpan -> int32) = _.Hours let v142 : int32 = v141 v138 let v145 : (System.TimeSpan -> int32) = _.Minutes let v146 : int32 = v145 v138 let v149 : (System.TimeSpan -> int32) = _.Seconds let v150 : int32 = v149 v138 let v153 : (System.TimeSpan -> int32) = _.Milliseconds let v154 : int32 = v153 v138 let v157 : System.DateTime = System.DateTime (1, 1, 1, v142, v146, v150, v154) v157 let v165 : string = method5() let v168 : (string -> string) = v164.ToString let v169 : string = v168 v165 let _v103 = v169 #endif #if FABLE_COMPILER_RUST && WASM let v172 : US3 option = None let _v172 = ref v172 let v173 : US3 option ref = _v172 let v174 : (US3 option -> US3 option ref) = closure8(v173) let v175 : unit = () let v176 : (unit -> unit) = closure9(v92, v174) let v177 : unit = (fun () -> v176 (); v175) () let v180 : US3 option = _v172.Value let v191 : US3 = US3_1 let v192 : US3 = v180 |> Option.defaultValue v191 let v232 : System.DateTime = match v192 with | US3_1 -> (* None *) let v228 : System.DateTime = System.DateTime.Now v228 | US3_0(v196) -> (* Some *) let v197 : System.DateTime = System.DateTime.Now let v200 : (System.DateTime -> int64) = _.Ticks let v201 : int64 = v200 v197 let v204 : int64 = v201 - v196 let v205 : (int64 -> System.TimeSpan) = System.TimeSpan let v206 : System.TimeSpan = v205 v204 let v209 : (System.TimeSpan -> int32) = _.Hours let v210 : int32 = v209 v206 let v213 : (System.TimeSpan -> int32) = _.Minutes let v214 : int32 = v213 v206 let v217 : (System.TimeSpan -> int32) = _.Seconds let v218 : int32 = v217 v206 let v221 : (System.TimeSpan -> int32) = _.Milliseconds let v222 : int32 = v221 v206 let v225 : System.DateTime = System.DateTime (1, 1, 1, v210, v214, v218, v222) v225 let v233 : string = method5() let v236 : (string -> string) = v232.ToString let v237 : string = v236 v233 let _v103 = v237 #endif #if FABLE_COMPILER_RUST && CONTRACT let v240 : string = $"near_sdk::env::block_timestamp()" let v241 : uint64 = Fable.Core.RustInterop.emitRustExpr () v240 let v242 : US3 option = None let _v242 = ref v242 let v243 : US3 option ref = _v242 let v244 : (US3 option -> US3 option ref) = closure8(v243) let v245 : unit = () let v246 : (unit -> unit) = closure9(v92, v244) let v247 : unit = (fun () -> v246 (); v245) () let v250 : US3 option = _v242.Value let v261 : US3 = US3_1 let v262 : US3 = v250 |> Option.defaultValue v261 let v271 : uint64 = match v262 with | US3_1 -> (* None *) v241 | US3_0(v266) -> (* Some *) let v267 : (int64 -> uint64) = uint64 let v268 : uint64 = v267 v266 let v269 : uint64 = v241 - v268 v269 let v272 : uint64 = v271 / 1000000000UL let v273 : uint64 = v272 % 60UL let v274 : uint64 = v272 / 60UL let v275 : uint64 = v274 % 60UL let v276 : uint64 = v272 / 3600UL let v277 : uint64 = v276 % 24UL let v278 : string = $"format!(\"{{:02}}:{{:02}}:{{:02}}\", $0, $1, $2)" let v279 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v277, v275, v273) v278 let v280 : string = "fable_library_rust::String_::fromString($0)" let v281 : string = Fable.Core.RustInterop.emitRustExpr v279 v280 let _v103 = v281 #endif #if FABLE_COMPILER_TYPESCRIPT let v282 : US3 option = None let _v282 = ref v282 let v283 : US3 option ref = _v282 let v284 : (US3 option -> US3 option ref) = closure8(v283) let v285 : unit = () let v286 : (unit -> unit) = closure9(v92, v284) let v287 : unit = (fun () -> v286 (); v285) () let v290 : US3 option = _v282.Value let v301 : US3 = US3_1 let v302 : US3 = v290 |> Option.defaultValue v301 let v342 : System.DateTime = match v302 with | US3_1 -> (* None *) let v338 : System.DateTime = System.DateTime.Now v338 | US3_0(v306) -> (* Some *) let v307 : System.DateTime = System.DateTime.Now let v310 : (System.DateTime -> int64) = _.Ticks let v311 : int64 = v310 v307 let v314 : int64 = v311 - v306 let v315 : (int64 -> System.TimeSpan) = System.TimeSpan let v316 : System.TimeSpan = v315 v314 let v319 : (System.TimeSpan -> int32) = _.Hours let v320 : int32 = v319 v316 let v323 : (System.TimeSpan -> int32) = _.Minutes let v324 : int32 = v323 v316 let v327 : (System.TimeSpan -> int32) = _.Seconds let v328 : int32 = v327 v316 let v331 : (System.TimeSpan -> int32) = _.Milliseconds let v332 : int32 = v331 v316 let v335 : System.DateTime = System.DateTime (1, 1, 1, v320, v324, v328, v332) v335 let v343 : string = method6() let v346 : (string -> string) = v342.ToString let v347 : string = v346 v343 let _v103 = v347 #endif #if FABLE_COMPILER_PYTHON let v350 : US3 option = None let _v350 = ref v350 let v351 : US3 option ref = _v350 let v352 : (US3 option -> US3 option ref) = closure8(v351) let v353 : unit = () let v354 : (unit -> unit) = closure9(v92, v352) let v355 : unit = (fun () -> v354 (); v353) () let v358 : US3 option = _v350.Value let v369 : US3 = US3_1 let v370 : US3 = v358 |> Option.defaultValue v369 let v410 : System.DateTime = match v370 with | US3_1 -> (* None *) let v406 : System.DateTime = System.DateTime.Now v406 | US3_0(v374) -> (* Some *) let v375 : System.DateTime = System.DateTime.Now let v378 : (System.DateTime -> int64) = _.Ticks let v379 : int64 = v378 v375 let v382 : int64 = v379 - v374 let v383 : (int64 -> System.TimeSpan) = System.TimeSpan let v384 : System.TimeSpan = v383 v382 let v387 : (System.TimeSpan -> int32) = _.Hours let v388 : int32 = v387 v384 let v391 : (System.TimeSpan -> int32) = _.Minutes let v392 : int32 = v391 v384 let v395 : (System.TimeSpan -> int32) = _.Seconds let v396 : int32 = v395 v384 let v399 : (System.TimeSpan -> int32) = _.Milliseconds let v400 : int32 = v399 v384 let v403 : System.DateTime = System.DateTime (1, 1, 1, v388, v392, v396, v400) v403 let v411 : string = method6() let v414 : (string -> string) = v410.ToString let v415 : string = v414 v411 let _v103 = v415 #endif #else let v418 : US3 option = None let _v418 = ref v418 let v419 : US3 option ref = _v418 let v420 : (US3 option -> US3 option ref) = closure8(v419) let v421 : unit = () let v422 : (unit -> unit) = closure9(v92, v420) let v423 : unit = (fun () -> v422 (); v421) () let v426 : US3 option = _v418.Value let v437 : US3 = US3_1 let v438 : US3 = v426 |> Option.defaultValue v437 let v478 : System.DateTime = match v438 with | US3_1 -> (* None *) let v474 : System.DateTime = System.DateTime.Now v474 | US3_0(v442) -> (* Some *) let v443 : System.DateTime = System.DateTime.Now let v446 : (System.DateTime -> int64) = _.Ticks let v447 : int64 = v446 v443 let v450 : int64 = v447 - v442 let v451 : (int64 -> System.TimeSpan) = System.TimeSpan let v452 : System.TimeSpan = v451 v450 let v455 : (System.TimeSpan -> int32) = _.Hours let v456 : int32 = v455 v452 let v459 : (System.TimeSpan -> int32) = _.Minutes let v460 : int32 = v459 v452 let v463 : (System.TimeSpan -> int32) = _.Seconds let v464 : int32 = v463 v452 let v467 : (System.TimeSpan -> int32) = _.Milliseconds let v468 : int32 = v467 v452 let v471 : System.DateTime = System.DateTime (1, 1, 1, v456, v460, v464, v468) v471 let v479 : string = method6() let v482 : (string -> string) = v478.ToString let v483 : string = v482 v479 let _v103 = v483 #endif let v486 : string = _v103 let v556 : string = "Verbose" let v557 : (unit -> string) = v556.ToLower let v558 : string = v557 () let v561 : string = v558.PadLeft (7, ' ') let v575 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v576 : string = "inline_colorization::color_bright_black" let v577 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v576 let v578 : string = "&*$0" let v579 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v561 v578 let v580 : string = "inline_colorization::color_reset" let v581 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v580 let v582 : string = "\"{v577}{v579}{v581}\"" let v583 : string = @$"format!(" + v582 + ")" let v584 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v583 let v585 : string = "fable_library_rust::String_::fromString($0)" let v586 : string = Fable.Core.RustInterop.emitRustExpr v584 v585 let _v575 = v586 #endif #if FABLE_COMPILER_RUST && WASM let v587 : string = "inline_colorization::color_bright_black" let v588 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v587 let v589 : string = "&*$0" let v590 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v561 v589 let v591 : string = "inline_colorization::color_reset" let v592 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v591 let v593 : string = "\"{v588}{v590}{v592}\"" let v594 : string = @$"format!(" + v593 + ")" let v595 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v594 let v596 : string = "fable_library_rust::String_::fromString($0)" let v597 : string = Fable.Core.RustInterop.emitRustExpr v595 v596 let _v575 = v597 #endif #if FABLE_COMPILER_RUST && CONTRACT let v598 : string = "inline_colorization::color_bright_black" let v599 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v598 let v600 : string = "&*$0" let v601 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v561 v600 let v602 : string = "inline_colorization::color_reset" let v603 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v602 let v604 : string = "\"{v599}{v601}{v603}\"" let v605 : string = @$"format!(" + v604 + ")" let v606 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v605 let v607 : string = "fable_library_rust::String_::fromString($0)" let v608 : string = Fable.Core.RustInterop.emitRustExpr v606 v607 let _v575 = v608 #endif #if FABLE_COMPILER_TYPESCRIPT let v609 : string = "\u001b[90m" let v610 : string = method7() let v611 : string = v609 + v561 let v612 : string = v611 + v610 let _v575 = v612 #endif #if FABLE_COMPILER_PYTHON let v613 : string = "\u001b[90m" let v614 : string = method7() let v615 : string = v613 + v561 let v616 : string = v615 + v614 let _v575 = v616 #endif #else let v617 : string = "\u001b[90m" let v618 : string = method7() let v619 : string = v617 + v561 let v620 : string = v619 + v618 let _v575 = v620 #endif let v621 : string = _v575 let v627 : int64 = v88.l0 let v628 : string = method8() let v629 : Mut4 = {l0 = v628} : Mut4 let v630 : string = "{ " let v631 : string = $"{v630}" let v634 : unit = () let v635 : (unit -> unit) = closure10(v629, v631) let v636 : unit = (fun () -> v635 (); v634) () let v639 : string = "port" let v640 : string = $"{v639}" let v643 : unit = () let v644 : (unit -> unit) = closure10(v629, v640) let v645 : unit = (fun () -> v644 (); v643) () let v648 : string = " = " let v649 : string = $"{v648}" let v652 : unit = () let v653 : (unit -> unit) = closure10(v629, v649) let v654 : unit = (fun () -> v653 (); v652) () let v657 : string = $"{v2}" let v660 : unit = () let v661 : (unit -> unit) = closure10(v629, v657) let v662 : unit = (fun () -> v661 (); v660) () let v665 : string = "; " let v666 : string = $"{v665}" let v669 : unit = () let v670 : (unit -> unit) = closure10(v629, v666) let v671 : unit = (fun () -> v670 (); v669) () let v674 : string = "retry" let v675 : string = $"{v674}" let v678 : unit = () let v679 : (unit -> unit) = closure10(v629, v675) let v680 : unit = (fun () -> v679 (); v678) () let v683 : string = $"{v648}" let v686 : unit = () let v687 : (unit -> unit) = closure10(v629, v683) let v688 : unit = (fun () -> v687 (); v686) () let v691 : string = $"{v3}" let v694 : unit = () let v695 : (unit -> unit) = closure10(v629, v691) let v696 : unit = (fun () -> v695 (); v694) () let v699 : string = $"{v665}" let v702 : unit = () let v703 : (unit -> unit) = closure10(v629, v699) let v704 : unit = (fun () -> v703 (); v702) () let v707 : string = "timeout" let v708 : string = $"{v707}" let v711 : unit = () let v712 : (unit -> unit) = closure10(v629, v708) let v713 : unit = (fun () -> v712 (); v711) () let v716 : string = $"{v648}" let v719 : unit = () let v720 : (unit -> unit) = closure10(v629, v716) let v721 : unit = (fun () -> v720 (); v719) () let v724 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v725 : string = "format!(\"{:#?}\", $0)" let v726 : std_string_String = Fable.Core.RustInterop.emitRustExpr v0 v725 let v727 : string = "fable_library_rust::String_::fromString($0)" let v728 : string = Fable.Core.RustInterop.emitRustExpr v726 v727 let _v724 = v728 #endif #if FABLE_COMPILER_RUST && WASM let v729 : string = "format!(\"{:#?}\", $0)" let v730 : std_string_String = Fable.Core.RustInterop.emitRustExpr v0 v729 let v731 : string = "fable_library_rust::String_::fromString($0)" let v732 : string = Fable.Core.RustInterop.emitRustExpr v730 v731 let _v724 = v732 #endif #if FABLE_COMPILER_RUST && CONTRACT let v733 : string = "format!(\"{:#?}\", $0)" let v734 : std_string_String = Fable.Core.RustInterop.emitRustExpr v0 v733 let v735 : string = "fable_library_rust::String_::fromString($0)" let v736 : string = Fable.Core.RustInterop.emitRustExpr v734 v735 let _v724 = v736 #endif #if FABLE_COMPILER_TYPESCRIPT let v737 : string = $"%A{v0}" let _v724 = v737 #endif #if FABLE_COMPILER_PYTHON let v740 : string = $"%A{v0}" let _v724 = v740 #endif #else let v743 : string = $"%A{v0}" let _v724 = v743 #endif let v746 : string = _v724 let v751 : string = $"{v746}" let v754 : unit = () let v755 : (unit -> unit) = closure10(v629, v751) let v756 : unit = (fun () -> v755 (); v754) () let v759 : string = $"{v665}" let v762 : unit = () let v763 : (unit -> unit) = closure10(v629, v759) let v764 : unit = (fun () -> v763 (); v762) () let v767 : string = "status" let v768 : string = $"{v767}" let v771 : unit = () let v772 : (unit -> unit) = closure10(v629, v768) let v773 : unit = (fun () -> v772 (); v771) () let v776 : string = $"{v648}" let v779 : unit = () let v780 : (unit -> unit) = closure10(v629, v776) let v781 : unit = (fun () -> v780 (); v779) () let v786 : string = if v1 then let v784 : string = "true" v784 else let v785 : string = "false" v785 let v787 : string = $"{v786}" let v790 : unit = () let v791 : (unit -> unit) = closure10(v629, v787) let v792 : unit = (fun () -> v791 (); v790) () let v795 : string = " }" let v796 : string = $"{v795}" let v799 : unit = () let v800 : (unit -> unit) = closure10(v629, v796) let v801 : unit = (fun () -> v800 (); v799) () let v804 : string = v629.l0 let v805 : (unit -> string) = closure30() let v806 : string = $"{v486} {v621} #{v627} %s{v805 ()} / {v804}" let v809 : char list = [] let v810 : (char list -> (char [])) = List.toArray let v811 : (char []) = v810 v809 let v814 : string = v806.TrimStart v811 let v832 : char list = [] let v833 : char list = '/' :: v832 let v836 : char list = ' ' :: v833 let v839 : (char list -> (char [])) = List.toArray let v840 : (char []) = v839 v836 let v843 : string = v814.TrimEnd v840 let v861 : (string -> unit) = closure12() let v862 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v863 : string = @"println!(""{}"", $0)" Fable.Core.RustInterop.emitRustExpr v843 v863 let _v862 = () #endif #if FABLE_COMPILER_RUST && WASM let v864 : string = @"println!(""{}"", $0)" Fable.Core.RustInterop.emitRustExpr v843 v864 let _v862 = () #endif #if FABLE_COMPILER_RUST && CONTRACT let v865 : string = $"near_sdk::log!(\"{{}}\", $0)" Fable.Core.RustInterop.emitRustExpr v843 v865 let _v862 = () #endif #if FABLE_COMPILER_TYPESCRIPT v861 v843 let _v862 = () #endif #if FABLE_COMPILER_PYTHON v861 v843 let _v862 = () #endif #else v861 v843 let _v862 = () #endif _v862 let v866 : (string -> unit) = v20.l0 v866 v843 and method11 (v0 : int32 option, v1 : bool, v2 : string, v3 : int32, v4 : int64) : Async<int64> = let v5 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v6 : Async<int64> = null |> unbox<Async<int64>> let _v5 = v6 #endif #if FABLE_COMPILER_RUST && WASM let v9 : Async<int64> = null |> unbox<Async<int64>> let _v5 = v9 #endif #if FABLE_COMPILER_RUST && CONTRACT let v12 : Async<int64> = null |> unbox<Async<int64>> let _v5 = v12 #endif #if FABLE_COMPILER_TYPESCRIPT let v15 : Async<int64> = null |> unbox<Async<int64>> let _v5 = v15 #endif #if FABLE_COMPILER_PYTHON let v18 : Async<int64> = null |> unbox<Async<int64>> let _v5 = v18 #endif #else let v21 : Async<int64> option = None let mutable _v21 = v21 async { let v22 : US7 option = None let _v22 = ref v22 let v23 : US7 option ref = _v22 let v24 : (US7 option -> US7 option ref) = closure27(v23) let v25 : unit = () let v26 : (unit -> unit) = closure28(v0, v24) let v27 : unit = (fun () -> v26 (); v25) () let v30 : US7 option = _v22.Value let v41 : US7 = US7_1 let v42 : US7 = v30 |> Option.defaultValue v41 let v3753 : Async<bool> = match v42 with | US7_1 -> (* None *) let v46 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v47 : Async<bool> = null |> unbox<Async<bool>> let _v46 = v47 #endif #if FABLE_COMPILER_RUST && WASM let v50 : Async<bool> = null |> unbox<Async<bool>> let _v46 = v50 #endif #if FABLE_COMPILER_RUST && CONTRACT let v53 : Async<bool> = null |> unbox<Async<bool>> let _v46 = v53 #endif #if FABLE_COMPILER_TYPESCRIPT let v56 : Async<bool> = null |> unbox<Async<bool>> let _v46 = v56 #endif #if FABLE_COMPILER_PYTHON let v59 : Async<bool> = null |> unbox<Async<bool>> let _v46 = v59 #endif #else let v62 : Async<bool> option = None let mutable _v62 = v62 async { let v63 : Async<System.Threading.CancellationToken> = Async.CancellationToken let! v63 = v63 let v64 : System.Threading.CancellationToken = v63 let v65 : System.Net.Sockets.TcpClient = new System.Net.Sockets.TcpClient () use v65 = v65 let v66 : System.Net.Sockets.TcpClient = v65 try let v67 : System.Threading.Tasks.ValueTask = v66.ConnectAsync (v2, v3, v64) let v68 : (unit -> System.Threading.Tasks.Task) = v67.AsTask let v69 : System.Threading.Tasks.Task = v68 () let v70 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v71 : Async<unit> = null |> unbox<Async<unit>> let _v70 = v71 #endif #if FABLE_COMPILER_RUST && WASM let v74 : Async<unit> = null |> unbox<Async<unit>> let _v70 = v74 #endif #if FABLE_COMPILER_RUST && CONTRACT let v77 : Async<unit> = null |> unbox<Async<unit>> let _v70 = v77 #endif #if FABLE_COMPILER_TYPESCRIPT let v80 : Async<unit> = null |> unbox<Async<unit>> let _v70 = v80 #endif #if FABLE_COMPILER_PYTHON let v83 : Async<unit> = null |> unbox<Async<unit>> let _v70 = v83 #endif #else let v86 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v87 : Async<unit> = v86 v69 let _v70 = v87 #endif let v88 : Async<unit> = _v70 do! v88 return true with ex -> let v93 : exn = ex let v94 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v95 : string = $"%A{v93}" let _v94 = v95 #endif #if FABLE_COMPILER_RUST && WASM let v98 : string = $"%A{v93}" let _v94 = v98 #endif #if FABLE_COMPILER_RUST && CONTRACT let v101 : string = $"%A{v93}" let _v94 = v101 #endif #if FABLE_COMPILER_TYPESCRIPT let v104 : string = $"%A{v93}" let _v94 = v104 #endif #if FABLE_COMPILER_PYTHON let v107 : string = $"%A{v93}" let _v94 = v107 #endif #else let v110 : string = $"{v93.GetType ()}: {v93.Message}" let _v94 = v110 #endif let v111 : string = _v94 let v116 : unit = () let v117 : (unit -> unit) = closure6(v3, v111) let v118 : unit = (fun () -> v117 (); v116) () return false (* let v886 : bool = *) } |> fun x -> _v62 <- Some x let v887 : Async<bool> = match _v62 with Some x -> x | None -> failwith "async.new_async_unit / _v62=None" let _v46 = v887 #endif let v888 : Async<bool> = _v46 v888 | US7_0(v893) -> (* Some *) let v894 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v895 : Async<bool> = null |> unbox<Async<bool>> let _v894 = v895 #endif #if FABLE_COMPILER_RUST && WASM let v898 : Async<bool> = null |> unbox<Async<bool>> let _v894 = v898 #endif #if FABLE_COMPILER_RUST && CONTRACT let v901 : Async<bool> = null |> unbox<Async<bool>> let _v894 = v901 #endif #if FABLE_COMPILER_TYPESCRIPT let v904 : Async<bool> = null |> unbox<Async<bool>> let _v894 = v904 #endif #if FABLE_COMPILER_PYTHON let v907 : Async<bool> = null |> unbox<Async<bool>> let _v894 = v907 #endif #else let v910 : Async<bool> option = None let mutable _v910 = v910 async { let v911 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v912 : Async<bool> = null |> unbox<Async<bool>> let _v911 = v912 #endif #if FABLE_COMPILER_RUST && WASM let v915 : Async<bool> = null |> unbox<Async<bool>> let _v911 = v915 #endif #if FABLE_COMPILER_RUST && CONTRACT let v918 : Async<bool> = null |> unbox<Async<bool>> let _v911 = v918 #endif #if FABLE_COMPILER_TYPESCRIPT let v921 : Async<bool> = null |> unbox<Async<bool>> let _v911 = v921 #endif #if FABLE_COMPILER_PYTHON let v924 : Async<bool> = null |> unbox<Async<bool>> let _v911 = v924 #endif #else let v927 : Async<bool> option = None let mutable _v927 = v927 async { let v928 : Async<System.Threading.CancellationToken> = Async.CancellationToken let! v928 = v928 let v929 : System.Threading.CancellationToken = v928 let v930 : System.Net.Sockets.TcpClient = new System.Net.Sockets.TcpClient () use v930 = v930 let v931 : System.Net.Sockets.TcpClient = v930 try let v932 : System.Threading.Tasks.ValueTask = v931.ConnectAsync (v2, v3, v929) let v933 : (unit -> System.Threading.Tasks.Task) = v932.AsTask let v934 : System.Threading.Tasks.Task = v933 () let v935 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v936 : Async<unit> = null |> unbox<Async<unit>> let _v935 = v936 #endif #if FABLE_COMPILER_RUST && WASM let v939 : Async<unit> = null |> unbox<Async<unit>> let _v935 = v939 #endif #if FABLE_COMPILER_RUST && CONTRACT let v942 : Async<unit> = null |> unbox<Async<unit>> let _v935 = v942 #endif #if FABLE_COMPILER_TYPESCRIPT let v945 : Async<unit> = null |> unbox<Async<unit>> let _v935 = v945 #endif #if FABLE_COMPILER_PYTHON let v948 : Async<unit> = null |> unbox<Async<unit>> let _v935 = v948 #endif #else let v951 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v952 : Async<unit> = v951 v934 let _v935 = v952 #endif let v953 : Async<unit> = _v935 do! v953 return true with ex -> let v958 : exn = ex let v959 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v960 : string = $"%A{v958}" let _v959 = v960 #endif #if FABLE_COMPILER_RUST && WASM let v963 : string = $"%A{v958}" let _v959 = v963 #endif #if FABLE_COMPILER_RUST && CONTRACT let v966 : string = $"%A{v958}" let _v959 = v966 #endif #if FABLE_COMPILER_TYPESCRIPT let v969 : string = $"%A{v958}" let _v959 = v969 #endif #if FABLE_COMPILER_PYTHON let v972 : string = $"%A{v958}" let _v959 = v972 #endif #else let v975 : string = $"{v958.GetType ()}: {v958.Message}" let _v959 = v975 #endif let v976 : string = _v959 let v981 : unit = () let v982 : (unit -> unit) = closure6(v3, v976) let v983 : unit = (fun () -> v982 (); v981) () return false (* let v1751 : bool = *) } |> fun x -> _v927 <- Some x let v1752 : Async<bool> = match _v927 with Some x -> x | None -> failwith "async.new_async_unit / _v927=None" let _v911 = v1752 #endif let v1753 : Async<bool> = _v911 let v1758 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1759 : Async<US4> = null |> unbox<Async<US4>> let _v1758 = v1759 #endif #if FABLE_COMPILER_RUST && WASM let v1762 : Async<US4> = null |> unbox<Async<US4>> let _v1758 = v1762 #endif #if FABLE_COMPILER_RUST && CONTRACT let v1765 : Async<US4> = null |> unbox<Async<US4>> let _v1758 = v1765 #endif #if FABLE_COMPILER_TYPESCRIPT let v1768 : Async<US4> = null |> unbox<Async<US4>> let _v1758 = v1768 #endif #if FABLE_COMPILER_PYTHON let v1771 : Async<US4> = null |> unbox<Async<US4>> let _v1758 = v1771 #endif #else let v1774 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1775 : Async<US4> = null |> unbox<Async<US4>> let _v1774 = v1775 #endif #if FABLE_COMPILER_RUST && WASM let v1778 : Async<US4> = null |> unbox<Async<US4>> let _v1774 = v1778 #endif #if FABLE_COMPILER_RUST && CONTRACT let v1781 : Async<US4> = null |> unbox<Async<US4>> let _v1774 = v1781 #endif #if FABLE_COMPILER_TYPESCRIPT let v1784 : Async<US4> = null |> unbox<Async<US4>> let _v1774 = v1784 #endif #if FABLE_COMPILER_PYTHON let v1787 : Async<US4> = null |> unbox<Async<US4>> let _v1774 = v1787 #endif #else let v1790 : Async<US4> option = None let mutable _v1790 = v1790 async { let v1791 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1792 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _v1791 = v1792 #endif #if FABLE_COMPILER_RUST && WASM let v1795 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _v1791 = v1795 #endif #if FABLE_COMPILER_RUST && CONTRACT let v1798 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _v1791 = v1798 #endif #if FABLE_COMPILER_TYPESCRIPT let v1801 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _v1791 = v1801 #endif #if FABLE_COMPILER_PYTHON let v1804 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _v1791 = v1804 #endif #else let v1807 : Async<Async<bool>> = Async.StartChild (v1753, v893) let _v1791 = v1807 #endif let v1808 : Async<Async<bool>> = _v1791 let! v1808 = v1808 let v1813 : Async<bool> = v1808 let v1814 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1815 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _v1814 = v1815 #endif #if FABLE_COMPILER_RUST && WASM let v1818 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _v1814 = v1818 #endif #if FABLE_COMPILER_RUST && CONTRACT let v1821 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _v1814 = v1821 #endif #if FABLE_COMPILER_TYPESCRIPT let v1824 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _v1814 = v1824 #endif #if FABLE_COMPILER_PYTHON let v1827 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _v1814 = v1827 #endif #else let v1830 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v1831 : Async<Choice<bool, exn>> = v1830 v1813 let _v1814 = v1831 #endif let v1832 : Async<Choice<bool, exn>> = _v1814 let v1837 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1838 : Async<US5> = null |> unbox<Async<US5>> let _v1837 = v1838 #endif #if FABLE_COMPILER_RUST && WASM let v1841 : Async<US5> = null |> unbox<Async<US5>> let _v1837 = v1841 #endif #if FABLE_COMPILER_RUST && CONTRACT let v1844 : Async<US5> = null |> unbox<Async<US5>> let _v1837 = v1844 #endif #if FABLE_COMPILER_TYPESCRIPT let v1847 : Async<US5> = null |> unbox<Async<US5>> let _v1837 = v1847 #endif #if FABLE_COMPILER_PYTHON let v1850 : Async<US5> = null |> unbox<Async<US5>> let _v1837 = v1850 #endif #else let v1853 : Async<US5> option = None let mutable _v1853 = v1853 async { let! v1832 = v1832 let v1854 : Choice<bool, exn> = v1832 let v1855 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1856 : US5 = null |> unbox<US5> let _v1855 = v1856 #endif #if FABLE_COMPILER_RUST && WASM let v1859 : US5 = null |> unbox<US5> let _v1855 = v1859 #endif #if FABLE_COMPILER_RUST && CONTRACT let v1862 : US5 = null |> unbox<US5> let _v1855 = v1862 #endif #if FABLE_COMPILER_TYPESCRIPT let v1865 : US5 = null |> unbox<US5> let _v1855 = v1865 #endif #if FABLE_COMPILER_PYTHON let v1868 : US5 = null |> unbox<US5> let _v1855 = v1868 #endif #else let v1871 : (bool -> US5) = closure17() let v1872 : (exn -> US5) = closure18() let v1873 : US5 = match v1854 with Choice1Of2 x -> v1871 x | Choice2Of2 x -> v1872 x let _v1855 = v1873 #endif let v1874 : US5 = _v1855 return v1874 } |> fun x -> _v1853 <- Some x let v1879 : Async<US5> = match _v1853 with Some x -> x | None -> failwith "async.new_async_unit / _v1853=None" let _v1837 = v1879 #endif let v1880 : Async<US5> = _v1837 let v1885 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1886 : Async<US6> = null |> unbox<Async<US6>> let _v1885 = v1886 #endif #if FABLE_COMPILER_RUST && WASM let v1889 : Async<US6> = null |> unbox<Async<US6>> let _v1885 = v1889 #endif #if FABLE_COMPILER_RUST && CONTRACT let v1892 : Async<US6> = null |> unbox<Async<US6>> let _v1885 = v1892 #endif #if FABLE_COMPILER_TYPESCRIPT let v1895 : Async<US6> = null |> unbox<Async<US6>> let _v1885 = v1895 #endif #if FABLE_COMPILER_PYTHON let v1898 : Async<US6> = null |> unbox<Async<US6>> let _v1885 = v1898 #endif #else let v1901 : Async<US6> option = None let mutable _v1901 = v1901 async { let! v1880 = v1880 let v1902 : US5 = v1880 let v1908 : US6 = match v1902 with | US5_0(v1903) -> (* C1of2 *) US6_0(v1903) | US5_1(v1905) -> (* C2of2 *) US6_1(v1905) return v1908 } |> fun x -> _v1901 <- Some x let v1909 : Async<US6> = match _v1901 with Some x -> x | None -> failwith "async.new_async_unit / _v1901=None" let _v1885 = v1909 #endif let v1910 : Async<US6> = _v1885 let v1915 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1916 : Async<US4> = null |> unbox<Async<US4>> let _v1915 = v1916 #endif #if FABLE_COMPILER_RUST && WASM let v1919 : Async<US4> = null |> unbox<Async<US4>> let _v1915 = v1919 #endif #if FABLE_COMPILER_RUST && CONTRACT let v1922 : Async<US4> = null |> unbox<Async<US4>> let _v1915 = v1922 #endif #if FABLE_COMPILER_TYPESCRIPT let v1925 : Async<US4> = null |> unbox<Async<US4>> let _v1915 = v1925 #endif #if FABLE_COMPILER_PYTHON let v1928 : Async<US4> = null |> unbox<Async<US4>> let _v1915 = v1928 #endif #else let v1931 : Async<US4> option = None let mutable _v1931 = v1931 async { let! v1910 = v1910 let v1932 : US6 = v1910 let v3724 : US4 = match v1932 with | US6_1(v1935) -> (* Error *) let v1936 : string = $"%A{v1935}" let v1939 : string = "System.TimeoutException" let v1940 : bool = v1936.Contains v1939 if v1940 then let v1943 : unit = () let v1944 : (unit -> unit) = closure19(v893) let v1945 : unit = (fun () -> v1944 (); v1943) () US4_1 else let v2680 : unit = () let v2681 : (unit -> unit) = closure21(v893, v1935) let v2682 : unit = (fun () -> v2681 (); v2680) () US4_1 | US6_0(v1933) -> (* Ok *) US4_0(v1933) return v3724 } |> fun x -> _v1931 <- Some x let v3725 : Async<US4> = match _v1931 with Some x -> x | None -> failwith "async.new_async_unit / _v1931=None" let _v1915 = v3725 #endif let v3726 : Async<US4> = _v1915 return! v3726 } |> fun x -> _v1790 <- Some x let v3731 : Async<US4> = match _v1790 with Some x -> x | None -> failwith "async.new_async_unit / _v1790=None" let _v1774 = v3731 #endif let v3732 : Async<US4> = _v1774 let _v1758 = v3732 #endif let v3737 : Async<US4> = _v1758 let! v3737 = v3737 let v3742 : US4 = v3737 let v3745 : bool = match v3742 with | US4_1 -> (* None *) false | US4_0(v3743) -> (* Some *) v3743 return v3745 } |> fun x -> _v910 <- Some x let v3746 : Async<bool> = match _v910 with Some x -> x | None -> failwith "async.new_async_unit / _v910=None" let _v894 = v3746 #endif let v3747 : Async<bool> = _v894 v3747 let! v3753 = v3753 let v3754 : bool = v3753 let v3755 : bool = v3754 = v1 if v3755 then return v4 (* () else *) else let v3756 : int64 = v4 % 100L let v3757 : bool = v3756 = 0L if v3757 then let v3758 : unit = () let v3759 : (unit -> unit) = closure29(v0, v1, v3, v4) let v3760 : unit = (fun () -> v3759 (); v3758) () () let v4624 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v4625 : Async<unit> = null |> unbox<Async<unit>> let _v4624 = v4625 #endif #if FABLE_COMPILER_RUST && WASM let v4628 : Async<unit> = null |> unbox<Async<unit>> let _v4624 = v4628 #endif #if FABLE_COMPILER_RUST && CONTRACT let v4631 : Async<unit> = null |> unbox<Async<unit>> let _v4624 = v4631 #endif #if FABLE_COMPILER_TYPESCRIPT let v4634 : Async<unit> = null |> unbox<Async<unit>> let _v4624 = v4634 #endif #if FABLE_COMPILER_PYTHON let v4637 : Async<unit> = null |> unbox<Async<unit>> let _v4624 = v4637 #endif #else let v4640 : (int32 -> Async<unit>) = Async.Sleep let v4641 : Async<unit> = v4640 10 let _v4624 = v4641 #endif let v4642 : Async<unit> = _v4624 do! v4642 let v4647 : int64 = v4 + 1L let v4648 : Async<int64> = method11(v0, v1, v2, v3, v4647) return! v4648 (* () *) } |> fun x -> _v21 <- Some x let v4649 : Async<int64> = match _v21 with Some x -> x | None -> failwith "async.new_async_unit / _v21=None" let _v5 = v4649 #endif let v4650 : Async<int64> = _v5 v4650 and closure26 (v0 : int32 option, v1 : bool, v2 : string) (v3 : int32) : Async<int64> = let v4 : int64 = 0L method11(v0, v1, v2, v3, v4) and closure25 (v0 : int32 option, v1 : bool) (v2 : string) : (int32 -> Async<int64>) = closure26(v0, v1, v2) and closure24 (v0 : int32 option) (v1 : bool) : (string -> (int32 -> Async<int64>)) = closure25(v0, v1) and closure23 () (v0 : int32 option) : (bool -> (string -> (int32 -> Async<int64>))) = closure24(v0) and method12 (v0 : int32 option, v1 : string, v2 : int32) : Async<int32> = let v3 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v4 : Async<int32> = null |> unbox<Async<int32>> let _v3 = v4 #endif #if FABLE_COMPILER_RUST && WASM let v7 : Async<int32> = null |> unbox<Async<int32>> let _v3 = v7 #endif #if FABLE_COMPILER_RUST && CONTRACT let v10 : Async<int32> = null |> unbox<Async<int32>> let _v3 = v10 #endif #if FABLE_COMPILER_TYPESCRIPT let v13 : Async<int32> = null |> unbox<Async<int32>> let _v3 = v13 #endif #if FABLE_COMPILER_PYTHON let v16 : Async<int32> = null |> unbox<Async<int32>> let _v3 = v16 #endif #else let v19 : Async<int32> option = None let mutable _v19 = v19 async { let v20 : US7 option = None let _v20 = ref v20 let v21 : US7 option ref = _v20 let v22 : (US7 option -> US7 option ref) = closure27(v21) let v23 : unit = () let v24 : (unit -> unit) = closure28(v0, v22) let v25 : unit = (fun () -> v24 (); v23) () let v28 : US7 option = _v20.Value let v39 : US7 = US7_1 let v40 : US7 = v28 |> Option.defaultValue v39 let v3751 : Async<bool> = match v40 with | US7_1 -> (* None *) let v44 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v45 : Async<bool> = null |> unbox<Async<bool>> let _v44 = v45 #endif #if FABLE_COMPILER_RUST && WASM let v48 : Async<bool> = null |> unbox<Async<bool>> let _v44 = v48 #endif #if FABLE_COMPILER_RUST && CONTRACT let v51 : Async<bool> = null |> unbox<Async<bool>> let _v44 = v51 #endif #if FABLE_COMPILER_TYPESCRIPT let v54 : Async<bool> = null |> unbox<Async<bool>> let _v44 = v54 #endif #if FABLE_COMPILER_PYTHON let v57 : Async<bool> = null |> unbox<Async<bool>> let _v44 = v57 #endif #else let v60 : Async<bool> option = None let mutable _v60 = v60 async { let v61 : Async<System.Threading.CancellationToken> = Async.CancellationToken let! v61 = v61 let v62 : System.Threading.CancellationToken = v61 let v63 : System.Net.Sockets.TcpClient = new System.Net.Sockets.TcpClient () use v63 = v63 let v64 : System.Net.Sockets.TcpClient = v63 try let v65 : System.Threading.Tasks.ValueTask = v64.ConnectAsync (v1, v2, v62) let v66 : (unit -> System.Threading.Tasks.Task) = v65.AsTask let v67 : System.Threading.Tasks.Task = v66 () let v68 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v69 : Async<unit> = null |> unbox<Async<unit>> let _v68 = v69 #endif #if FABLE_COMPILER_RUST && WASM let v72 : Async<unit> = null |> unbox<Async<unit>> let _v68 = v72 #endif #if FABLE_COMPILER_RUST && CONTRACT let v75 : Async<unit> = null |> unbox<Async<unit>> let _v68 = v75 #endif #if FABLE_COMPILER_TYPESCRIPT let v78 : Async<unit> = null |> unbox<Async<unit>> let _v68 = v78 #endif #if FABLE_COMPILER_PYTHON let v81 : Async<unit> = null |> unbox<Async<unit>> let _v68 = v81 #endif #else let v84 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v85 : Async<unit> = v84 v67 let _v68 = v85 #endif let v86 : Async<unit> = _v68 do! v86 return true with ex -> let v91 : exn = ex let v92 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v93 : string = $"%A{v91}" let _v92 = v93 #endif #if FABLE_COMPILER_RUST && WASM let v96 : string = $"%A{v91}" let _v92 = v96 #endif #if FABLE_COMPILER_RUST && CONTRACT let v99 : string = $"%A{v91}" let _v92 = v99 #endif #if FABLE_COMPILER_TYPESCRIPT let v102 : string = $"%A{v91}" let _v92 = v102 #endif #if FABLE_COMPILER_PYTHON let v105 : string = $"%A{v91}" let _v92 = v105 #endif #else let v108 : string = $"{v91.GetType ()}: {v91.Message}" let _v92 = v108 #endif let v109 : string = _v92 let v114 : unit = () let v115 : (unit -> unit) = closure6(v2, v109) let v116 : unit = (fun () -> v115 (); v114) () return false (* let v884 : bool = *) } |> fun x -> _v60 <- Some x let v885 : Async<bool> = match _v60 with Some x -> x | None -> failwith "async.new_async_unit / _v60=None" let _v44 = v885 #endif let v886 : Async<bool> = _v44 v886 | US7_0(v891) -> (* Some *) let v892 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v893 : Async<bool> = null |> unbox<Async<bool>> let _v892 = v893 #endif #if FABLE_COMPILER_RUST && WASM let v896 : Async<bool> = null |> unbox<Async<bool>> let _v892 = v896 #endif #if FABLE_COMPILER_RUST && CONTRACT let v899 : Async<bool> = null |> unbox<Async<bool>> let _v892 = v899 #endif #if FABLE_COMPILER_TYPESCRIPT let v902 : Async<bool> = null |> unbox<Async<bool>> let _v892 = v902 #endif #if FABLE_COMPILER_PYTHON let v905 : Async<bool> = null |> unbox<Async<bool>> let _v892 = v905 #endif #else let v908 : Async<bool> option = None let mutable _v908 = v908 async { let v909 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v910 : Async<bool> = null |> unbox<Async<bool>> let _v909 = v910 #endif #if FABLE_COMPILER_RUST && WASM let v913 : Async<bool> = null |> unbox<Async<bool>> let _v909 = v913 #endif #if FABLE_COMPILER_RUST && CONTRACT let v916 : Async<bool> = null |> unbox<Async<bool>> let _v909 = v916 #endif #if FABLE_COMPILER_TYPESCRIPT let v919 : Async<bool> = null |> unbox<Async<bool>> let _v909 = v919 #endif #if FABLE_COMPILER_PYTHON let v922 : Async<bool> = null |> unbox<Async<bool>> let _v909 = v922 #endif #else let v925 : Async<bool> option = None let mutable _v925 = v925 async { let v926 : Async<System.Threading.CancellationToken> = Async.CancellationToken let! v926 = v926 let v927 : System.Threading.CancellationToken = v926 let v928 : System.Net.Sockets.TcpClient = new System.Net.Sockets.TcpClient () use v928 = v928 let v929 : System.Net.Sockets.TcpClient = v928 try let v930 : System.Threading.Tasks.ValueTask = v929.ConnectAsync (v1, v2, v927) let v931 : (unit -> System.Threading.Tasks.Task) = v930.AsTask let v932 : System.Threading.Tasks.Task = v931 () let v933 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v934 : Async<unit> = null |> unbox<Async<unit>> let _v933 = v934 #endif #if FABLE_COMPILER_RUST && WASM let v937 : Async<unit> = null |> unbox<Async<unit>> let _v933 = v937 #endif #if FABLE_COMPILER_RUST && CONTRACT let v940 : Async<unit> = null |> unbox<Async<unit>> let _v933 = v940 #endif #if FABLE_COMPILER_TYPESCRIPT let v943 : Async<unit> = null |> unbox<Async<unit>> let _v933 = v943 #endif #if FABLE_COMPILER_PYTHON let v946 : Async<unit> = null |> unbox<Async<unit>> let _v933 = v946 #endif #else let v949 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v950 : Async<unit> = v949 v932 let _v933 = v950 #endif let v951 : Async<unit> = _v933 do! v951 return true with ex -> let v956 : exn = ex let v957 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v958 : string = $"%A{v956}" let _v957 = v958 #endif #if FABLE_COMPILER_RUST && WASM let v961 : string = $"%A{v956}" let _v957 = v961 #endif #if FABLE_COMPILER_RUST && CONTRACT let v964 : string = $"%A{v956}" let _v957 = v964 #endif #if FABLE_COMPILER_TYPESCRIPT let v967 : string = $"%A{v956}" let _v957 = v967 #endif #if FABLE_COMPILER_PYTHON let v970 : string = $"%A{v956}" let _v957 = v970 #endif #else let v973 : string = $"{v956.GetType ()}: {v956.Message}" let _v957 = v973 #endif let v974 : string = _v957 let v979 : unit = () let v980 : (unit -> unit) = closure6(v2, v974) let v981 : unit = (fun () -> v980 (); v979) () return false (* let v1749 : bool = *) } |> fun x -> _v925 <- Some x let v1750 : Async<bool> = match _v925 with Some x -> x | None -> failwith "async.new_async_unit / _v925=None" let _v909 = v1750 #endif let v1751 : Async<bool> = _v909 let v1756 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1757 : Async<US4> = null |> unbox<Async<US4>> let _v1756 = v1757 #endif #if FABLE_COMPILER_RUST && WASM let v1760 : Async<US4> = null |> unbox<Async<US4>> let _v1756 = v1760 #endif #if FABLE_COMPILER_RUST && CONTRACT let v1763 : Async<US4> = null |> unbox<Async<US4>> let _v1756 = v1763 #endif #if FABLE_COMPILER_TYPESCRIPT let v1766 : Async<US4> = null |> unbox<Async<US4>> let _v1756 = v1766 #endif #if FABLE_COMPILER_PYTHON let v1769 : Async<US4> = null |> unbox<Async<US4>> let _v1756 = v1769 #endif #else let v1772 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1773 : Async<US4> = null |> unbox<Async<US4>> let _v1772 = v1773 #endif #if FABLE_COMPILER_RUST && WASM let v1776 : Async<US4> = null |> unbox<Async<US4>> let _v1772 = v1776 #endif #if FABLE_COMPILER_RUST && CONTRACT let v1779 : Async<US4> = null |> unbox<Async<US4>> let _v1772 = v1779 #endif #if FABLE_COMPILER_TYPESCRIPT let v1782 : Async<US4> = null |> unbox<Async<US4>> let _v1772 = v1782 #endif #if FABLE_COMPILER_PYTHON let v1785 : Async<US4> = null |> unbox<Async<US4>> let _v1772 = v1785 #endif #else let v1788 : Async<US4> option = None let mutable _v1788 = v1788 async { let v1789 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1790 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _v1789 = v1790 #endif #if FABLE_COMPILER_RUST && WASM let v1793 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _v1789 = v1793 #endif #if FABLE_COMPILER_RUST && CONTRACT let v1796 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _v1789 = v1796 #endif #if FABLE_COMPILER_TYPESCRIPT let v1799 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _v1789 = v1799 #endif #if FABLE_COMPILER_PYTHON let v1802 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _v1789 = v1802 #endif #else let v1805 : Async<Async<bool>> = Async.StartChild (v1751, v891) let _v1789 = v1805 #endif let v1806 : Async<Async<bool>> = _v1789 let! v1806 = v1806 let v1811 : Async<bool> = v1806 let v1812 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1813 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _v1812 = v1813 #endif #if FABLE_COMPILER_RUST && WASM let v1816 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _v1812 = v1816 #endif #if FABLE_COMPILER_RUST && CONTRACT let v1819 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _v1812 = v1819 #endif #if FABLE_COMPILER_TYPESCRIPT let v1822 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _v1812 = v1822 #endif #if FABLE_COMPILER_PYTHON let v1825 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _v1812 = v1825 #endif #else let v1828 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v1829 : Async<Choice<bool, exn>> = v1828 v1811 let _v1812 = v1829 #endif let v1830 : Async<Choice<bool, exn>> = _v1812 let v1835 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1836 : Async<US5> = null |> unbox<Async<US5>> let _v1835 = v1836 #endif #if FABLE_COMPILER_RUST && WASM let v1839 : Async<US5> = null |> unbox<Async<US5>> let _v1835 = v1839 #endif #if FABLE_COMPILER_RUST && CONTRACT let v1842 : Async<US5> = null |> unbox<Async<US5>> let _v1835 = v1842 #endif #if FABLE_COMPILER_TYPESCRIPT let v1845 : Async<US5> = null |> unbox<Async<US5>> let _v1835 = v1845 #endif #if FABLE_COMPILER_PYTHON let v1848 : Async<US5> = null |> unbox<Async<US5>> let _v1835 = v1848 #endif #else let v1851 : Async<US5> option = None let mutable _v1851 = v1851 async { let! v1830 = v1830 let v1852 : Choice<bool, exn> = v1830 let v1853 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1854 : US5 = null |> unbox<US5> let _v1853 = v1854 #endif #if FABLE_COMPILER_RUST && WASM let v1857 : US5 = null |> unbox<US5> let _v1853 = v1857 #endif #if FABLE_COMPILER_RUST && CONTRACT let v1860 : US5 = null |> unbox<US5> let _v1853 = v1860 #endif #if FABLE_COMPILER_TYPESCRIPT let v1863 : US5 = null |> unbox<US5> let _v1853 = v1863 #endif #if FABLE_COMPILER_PYTHON let v1866 : US5 = null |> unbox<US5> let _v1853 = v1866 #endif #else let v1869 : (bool -> US5) = closure17() let v1870 : (exn -> US5) = closure18() let v1871 : US5 = match v1852 with Choice1Of2 x -> v1869 x | Choice2Of2 x -> v1870 x let _v1853 = v1871 #endif let v1872 : US5 = _v1853 return v1872 } |> fun x -> _v1851 <- Some x let v1877 : Async<US5> = match _v1851 with Some x -> x | None -> failwith "async.new_async_unit / _v1851=None" let _v1835 = v1877 #endif let v1878 : Async<US5> = _v1835 let v1883 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1884 : Async<US6> = null |> unbox<Async<US6>> let _v1883 = v1884 #endif #if FABLE_COMPILER_RUST && WASM let v1887 : Async<US6> = null |> unbox<Async<US6>> let _v1883 = v1887 #endif #if FABLE_COMPILER_RUST && CONTRACT let v1890 : Async<US6> = null |> unbox<Async<US6>> let _v1883 = v1890 #endif #if FABLE_COMPILER_TYPESCRIPT let v1893 : Async<US6> = null |> unbox<Async<US6>> let _v1883 = v1893 #endif #if FABLE_COMPILER_PYTHON let v1896 : Async<US6> = null |> unbox<Async<US6>> let _v1883 = v1896 #endif #else let v1899 : Async<US6> option = None let mutable _v1899 = v1899 async { let! v1878 = v1878 let v1900 : US5 = v1878 let v1906 : US6 = match v1900 with | US5_0(v1901) -> (* C1of2 *) US6_0(v1901) | US5_1(v1903) -> (* C2of2 *) US6_1(v1903) return v1906 } |> fun x -> _v1899 <- Some x let v1907 : Async<US6> = match _v1899 with Some x -> x | None -> failwith "async.new_async_unit / _v1899=None" let _v1883 = v1907 #endif let v1908 : Async<US6> = _v1883 let v1913 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1914 : Async<US4> = null |> unbox<Async<US4>> let _v1913 = v1914 #endif #if FABLE_COMPILER_RUST && WASM let v1917 : Async<US4> = null |> unbox<Async<US4>> let _v1913 = v1917 #endif #if FABLE_COMPILER_RUST && CONTRACT let v1920 : Async<US4> = null |> unbox<Async<US4>> let _v1913 = v1920 #endif #if FABLE_COMPILER_TYPESCRIPT let v1923 : Async<US4> = null |> unbox<Async<US4>> let _v1913 = v1923 #endif #if FABLE_COMPILER_PYTHON let v1926 : Async<US4> = null |> unbox<Async<US4>> let _v1913 = v1926 #endif #else let v1929 : Async<US4> option = None let mutable _v1929 = v1929 async { let! v1908 = v1908 let v1930 : US6 = v1908 let v3722 : US4 = match v1930 with | US6_1(v1933) -> (* Error *) let v1934 : string = $"%A{v1933}" let v1937 : string = "System.TimeoutException" let v1938 : bool = v1934.Contains v1937 if v1938 then let v1941 : unit = () let v1942 : (unit -> unit) = closure19(v891) let v1943 : unit = (fun () -> v1942 (); v1941) () US4_1 else let v2678 : unit = () let v2679 : (unit -> unit) = closure21(v891, v1933) let v2680 : unit = (fun () -> v2679 (); v2678) () US4_1 | US6_0(v1931) -> (* Ok *) US4_0(v1931) return v3722 } |> fun x -> _v1929 <- Some x let v3723 : Async<US4> = match _v1929 with Some x -> x | None -> failwith "async.new_async_unit / _v1929=None" let _v1913 = v3723 #endif let v3724 : Async<US4> = _v1913 return! v3724 } |> fun x -> _v1788 <- Some x let v3729 : Async<US4> = match _v1788 with Some x -> x | None -> failwith "async.new_async_unit / _v1788=None" let _v1772 = v3729 #endif let v3730 : Async<US4> = _v1772 let _v1756 = v3730 #endif let v3735 : Async<US4> = _v1756 let! v3735 = v3735 let v3740 : US4 = v3735 let v3743 : bool = match v3740 with | US4_1 -> (* None *) false | US4_0(v3741) -> (* Some *) v3741 return v3743 } |> fun x -> _v908 <- Some x let v3744 : Async<bool> = match _v908 with Some x -> x | None -> failwith "async.new_async_unit / _v908=None" let _v892 = v3744 #endif let v3745 : Async<bool> = _v892 v3745 let! v3751 = v3751 let v3752 : bool = v3751 let v3753 : bool = v3752 = false if v3753 then return v2 (* () else *) else let v3754 : int32 = v2 + 1 let v3755 : Async<int32> = method12(v0, v1, v3754) return! v3755 (* () *) } |> fun x -> _v19 <- Some x let v3756 : Async<int32> = match _v19 with Some x -> x | None -> failwith "async.new_async_unit / _v19=None" let _v3 = v3756 #endif let v3757 : Async<int32> = _v3 v3757 and closure33 (v0 : int32 option, v1 : string) (v2 : int32) : Async<int32> = method12(v0, v1, v2) and closure32 (v0 : int32 option) (v1 : string) : (int32 -> Async<int32>) = closure33(v0, v1) and closure31 () (v0 : int32 option) : (string -> (int32 -> Async<int32>)) = closure32(v0) let v0 : unit = () let v1 : (unit -> unit) = closure0() let v2 : unit = (fun () -> v1 (); v0) () let v15 : (string -> (int32 -> Async<bool>)) = closure4() let test_port_open x = v15 x let v16 : (int32 -> (string -> (int32 -> Async<bool>))) = closure14() let test_port_open_timeout x = v16 x let v17 : (int32 option -> (bool -> (string -> (int32 -> Async<int64>)))) = closure23() let wait_for_port_access x = v17 x let v18 : (int32 option -> (string -> (int32 -> Async<int32>))) = closure31() let get_available_port x = v18 x () 00:00:00 debug #1 writeDibCode / output: Fs / path: DirTreeHtml.dib 00:00:00 debug #2 parseDibCode / output: Fs / file: DirTreeHtml.dib 00:00:00 debug #1 persistCodeProject / packages: [Argu; Falco.Markup; FSharp.Control.AsyncSeq; ... ] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: DirTreeHtml / hash: / code.Length: 4638 00:00:00 debug #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj 00:00:00 debug #1 runtime.execute_with_options_async / { options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml" } } 00:00:00 verbose #2 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET 00:00:00 verbose #3 > Determining projects to restore... 00:00:01 verbose #4 > Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b 00:00:01 verbose #5 > The last full restore is still up to date. Nothing left to do. 00:00:01 verbose #6 > Total time taken: 0 milliseconds 00:00:01 verbose #7 > Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b 00:00:01 verbose #8 > Restoring /home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj 00:00:01 verbose #9 > Starting restore process. 00:00:02 verbose #10 > Total time taken: 0 milliseconds 00:00:02 verbose #11 > Restored /home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj (in 314 ms). 00:00:02 verbose #12 > /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [/home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj] 00:00:13 verbose #13 > DirTreeHtml -> /home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/bin/Release/net9.0/linux-x64/DirTreeHtml.dll 00:00:13 verbose #14 > DirTreeHtml -> /home/runner/work/polyglot/polyglot/apps/dir-tree-html/dist 00:00:13 debug #15 runtime.execute_with_options_async / { exit_code = 0; output_length = 1129 }
In [ ]:
{ pwsh ../lib/spiral/build.ps1 -sequential 1 } | Invoke-Block
00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 debug #1 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path sm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:00 verbose #2 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "sm'.dib", "--retries", "3"])) } 00:00:00 verbose #3 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:00:00 verbose #4 > "repl", 00:00:00 verbose #5 > "--exit-after-run", 00:00:00 verbose #6 > "--run", 00:00:00 verbose #7 > "/home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib", 00:00:00 verbose #8 > "--output-path", 00:00:00 verbose #9 > "/home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib.ipynb", 00:00:00 verbose #10 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:01 verbose #11 > > 00:00:01 verbose #12 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:01 verbose #13 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:01 verbose #14 > > │ # sm' │ 00:00:01 verbose #15 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:04 verbose #16 > > 00:00:04 verbose #17 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:04 verbose #18 > > //// test 00:00:04 verbose #19 > > 00:00:04 verbose #20 > > open testing 00:00:05 verbose #21 > > 00:00:05 verbose #22 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #23 > > open rust 00:00:05 verbose #24 > > open rust_operators 00:00:05 verbose #25 > > open real_sm' 00:00:05 verbose #26 > > 00:00:05 verbose #27 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:05 verbose #28 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:05 verbose #29 > > │ ## rust │ 00:00:05 verbose #30 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 verbose #31 > > 00:00:05 verbose #32 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:05 verbose #33 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:05 verbose #34 > > │ ### std_string │ 00:00:05 verbose #35 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 verbose #36 > > 00:00:05 verbose #37 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #38 > > //// real 00:00:05 verbose #39 > > 00:00:05 verbose #40 > > nominal std_string = 00:00:05 verbose #41 > > `( 00:00:05 verbose #42 > > backend_switch `(()) `({}) { 00:00:05 verbose #43 > > Fsharp = 00:00:05 verbose #44 > > (fun () => 00:00:05 verbose #45 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:05 verbose #46 > > Fable.Core.Emit(\"std::string::String\")>]]\n#endif\ntype std_string_String = 00:00:05 verbose #47 > > class end" 00:00:05 verbose #48 > > ) : () -> () 00:00:05 verbose #49 > > } 00:00:05 verbose #50 > > $'' : $'std_string_String' 00:00:05 verbose #51 > > ) 00:00:05 verbose #52 > > 00:00:05 verbose #53 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #54 > > type std_string = real_sm'.std_string 00:00:05 verbose #55 > > 00:00:05 verbose #56 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:05 verbose #57 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:05 verbose #58 > > │ ### from_std_string │ 00:00:05 verbose #59 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 verbose #60 > > 00:00:05 verbose #61 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #62 > > //// real 00:00:05 verbose #63 > > 00:00:05 verbose #64 > > inl from_std_string (str : std_string) : string = 00:00:05 verbose #65 > > open rust 00:00:05 verbose #66 > > rust.emit_expr `std_string `string str 00:00:05 verbose #67 > > ($'"fable_library_rust::String_::fromString($0)"' : string) 00:00:05 verbose #68 > > 00:00:05 verbose #69 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #70 > > inl from_std_string (str : std_string) : string = 00:00:05 verbose #71 > > real real_sm'.from_std_string str 00:00:05 verbose #72 > > 00:00:05 verbose #73 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:05 verbose #74 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:05 verbose #75 > > │ ## sm' │ 00:00:05 verbose #76 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 verbose #77 > > 00:00:05 verbose #78 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:05 verbose #79 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:05 verbose #80 > > │ ### symbol_to_string │ 00:00:05 verbose #81 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 verbose #82 > > 00:00:05 verbose #83 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #84 > > //// real 00:00:05 verbose #85 > > 00:00:05 verbose #86 > > inl symbol_to_string forall t {symbol}. : string = 00:00:05 verbose #87 > > // inl x = real_core.type_lit_to_lit `t 00:00:05 verbose #88 > > // inl x = real_core.type_to_symbol `t 00:00:05 verbose #89 > > // inl x = real_core.type_lit_to_lit `t 00:00:05 verbose #90 > > // !!!!SymbolToString (`(`t)) 00:00:05 verbose #91 > > inl x = real_core.type_to_symbol `t 00:00:05 verbose #92 > > !!!!SymbolToString (x) 00:00:05 verbose #93 > > 00:00:05 verbose #94 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #95 > > inl symbol_to_string forall t {symbol}. (x : t) : string = 00:00:05 verbose #96 > > real symbol_to_string `t 00:00:05 verbose #97 > > 00:00:05 verbose #98 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #99 > > //// test 00:00:05 verbose #100 > > 00:00:05 verbose #101 > > .test 00:00:05 verbose #102 > > |> symbol_to_string 00:00:05 verbose #103 > > |> _assert_eq "test" 00:00:06 verbose #104 > > 00:00:06 verbose #105 > > ╭─[ 539.31ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:06 verbose #106 > > │ __assert_eq / actual: "test" / expected: "test" │ 00:00:06 verbose #107 > > │ │ 00:00:06 verbose #108 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 verbose #109 > > 00:00:06 verbose #110 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 verbose #111 > > //// test 00:00:06 verbose #112 > > //// real 00:00:06 verbose #113 > > 00:00:06 verbose #114 > > open testing 00:00:06 verbose #115 > > inl x = .test 00:00:06 verbose #116 > > inl x = symbol_to_string `(`x) 00:00:06 verbose #117 > > _assert_eq `string "test" x 00:00:06 verbose #118 > > 00:00:06 verbose #119 > > ╭─[ 94.94ms - stdout ]─────────────────────────────────────────────────────────╮ 00:00:06 verbose #120 > > │ __assert_eq / actual: "test" / expected: "test" │ 00:00:06 verbose #121 > > │ │ 00:00:06 verbose #122 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 verbose #123 > > 00:00:06 verbose #124 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:06 verbose #125 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:06 verbose #126 > > │ ### index │ 00:00:06 verbose #127 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 verbose #128 > > 00:00:06 verbose #129 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 verbose #130 > > inl index i (str : string) : char = 00:00:06 verbose #131 > > sm.index str i 00:00:06 verbose #132 > > 00:00:06 verbose #133 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:06 verbose #134 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:06 verbose #135 > > │ ### length │ 00:00:06 verbose #136 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 verbose #137 > > 00:00:06 verbose #138 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 verbose #139 > > inl length forall dim {int}. (input : string) : dim = 00:00:06 verbose #140 > > input |> sm.length 00:00:06 verbose #141 > > 00:00:06 verbose #142 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:06 verbose #143 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:06 verbose #144 > > │ ### to_char_array │ 00:00:06 verbose #145 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 verbose #146 > > 00:00:06 verbose #147 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 verbose #148 > > inl to_char_array (str : string) : array_base char = 00:00:06 verbose #149 > > am.init (str |> length) (fun i => str |> index i) 00:00:06 verbose #150 > > |> fun (a x : _ int _) => x 00:00:06 verbose #151 > > 00:00:06 verbose #152 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 verbose #153 > > //// test 00:00:06 verbose #154 > > 00:00:06 verbose #155 > > "abc" 00:00:06 verbose #156 > > |> to_char_array 00:00:06 verbose #157 > > |> _assert_eq' ;[[ 'a'; 'b'; 'c' ]] 00:00:07 verbose #158 > > 00:00:07 verbose #159 > > ╭─[ 439.51ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:07 verbose #160 > > │ __assert_eq' / actual: [|'a'; 'b'; 'c'|] / expected: [|'a'; 'b'; 'c'|] │ 00:00:07 verbose #161 > > │ │ 00:00:07 verbose #162 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 verbose #163 > > 00:00:07 verbose #164 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:07 verbose #165 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 verbose #166 > > │ ### to_char_list │ 00:00:07 verbose #167 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 verbose #168 > > 00:00:07 verbose #169 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 verbose #170 > > inl to_char_list (str : string) : list char = 00:00:07 verbose #171 > > listm.init (str |> length) (fun (i : i64) => str |> index i) 00:00:07 verbose #172 > > 00:00:07 verbose #173 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 verbose #174 > > //// test 00:00:07 verbose #175 > > 00:00:07 verbose #176 > > "abc" 00:00:07 verbose #177 > > |> to_char_list 00:00:07 verbose #178 > > |> _assert_eq [[ 'a'; 'b'; 'c' ]] 00:00:07 verbose #179 > > 00:00:07 verbose #180 > > ╭─[ 200.43ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:07 verbose #181 > > │ __assert_eq / actual: UH0_1 ('a', UH0_1 ('b', UH0_1 ('c', UH0_0))) / │ 00:00:07 verbose #182 > > │ expected: UH0_1 ('a', UH0_1 ('b', UH0_1 ('c', UH0_0))) │ 00:00:07 verbose #183 > > │ │ 00:00:07 verbose #184 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 verbose #185 > > 00:00:07 verbose #186 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:07 verbose #187 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 verbose #188 > > │ ### is_empty │ 00:00:07 verbose #189 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 verbose #190 > > 00:00:07 verbose #191 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 verbose #192 > > inl is_empty (input : string) : bool = 00:00:07 verbose #193 > > length input = 0i32 00:00:07 verbose #194 > > 00:00:07 verbose #195 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:07 verbose #196 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 verbose #197 > > │ ### slice │ 00:00:07 verbose #198 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 verbose #199 > > 00:00:07 verbose #200 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 verbose #201 > > inl slice from to s : string = 00:00:07 verbose #202 > > sm.slice s { from to } 00:00:07 verbose #203 > > 00:00:07 verbose #204 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:07 verbose #205 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 verbose #206 > > │ ### format_debug │ 00:00:07 verbose #207 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 verbose #208 > > 00:00:07 verbose #209 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 verbose #210 > > //// real 00:00:07 verbose #211 > > 00:00:07 verbose #212 > > inl format_debug forall t. (x : t) : string = 00:00:07 verbose #213 > > backend_switch `string `({}) { 00:00:07 verbose #214 > > Fsharp = (fun () => $'$"%A{!x}"' : string) : () -> string 00:00:07 verbose #215 > > Python = (fun () => $'f"{!x}"' : string) : () -> string 00:00:07 verbose #216 > > } 00:00:07 verbose #217 > > 00:00:07 verbose #218 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 verbose #219 > > inl format_debug forall t. (x : t) : string = 00:00:07 verbose #220 > > real format_debug `t x 00:00:07 verbose #221 > > 00:00:07 verbose #222 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 verbose #223 > > //// test 00:00:07 verbose #224 > > 00:00:07 verbose #225 > > { c = "1"; a = "2"; b = "3" } 00:00:07 verbose #226 > > |> format_debug 00:00:07 verbose #227 > > |> _assert_eq "struct (\"1\", \"2\", \"3\")" 00:00:07 verbose #228 > > 00:00:07 verbose #229 > > ╭─[ 110.47ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:07 verbose #230 > > │ __assert_eq / actual: "struct ("1", "2", "3")" / expected: "struct ("1", │ 00:00:07 verbose #231 > > │ "2", "3")" │ 00:00:07 verbose #232 > > │ │ 00:00:07 verbose #233 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 verbose #234 > > 00:00:07 verbose #235 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:07 verbose #236 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:07 verbose #237 > > │ ### format_pretty │ 00:00:07 verbose #238 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:07 verbose #239 > > 00:00:07 verbose #240 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:07 verbose #241 > > //// real 00:00:07 verbose #242 > > 00:00:07 verbose #243 > > inl format_pretty forall t. (x : t) : string = 00:00:07 verbose #244 > > run_target_args `string `t (fun () => x) function 00:00:07 verbose #245 > > | Rust _ => fun x => 00:00:07 verbose #246 > > open rust 00:00:07 verbose #247 > > inl result = rust.emit_expr `t `std_string x 00:00:07 verbose #248 > > ($'"format\!(\\\"{:#?}\\\", $0)"' : string) 00:00:07 verbose #249 > > from_std_string result 00:00:07 verbose #250 > > | _ => fun _ => format_debug `t x 00:00:08 verbose #251 > > 00:00:08 verbose #252 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 verbose #253 > > inl format_pretty forall t. (x : t) : string = 00:00:08 verbose #254 > > real real_sm'.format_pretty `t x 00:00:08 verbose #255 > > 00:00:08 verbose #256 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 verbose #257 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:08 verbose #258 > > │ ### prim │ 00:00:08 verbose #259 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:08 verbose #260 > > 00:00:08 verbose #261 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 verbose #262 > > inl prim x = real 00:00:08 verbose #263 > > match x with 00:00:08 verbose #264 > > | (x : i8) | (x : i16) | (x : i32) | (x : i64) => "%d", x 00:00:08 verbose #265 > > | (x : u8) | (x : u16) | (x : u32) | (x : u64) => "%u", x 00:00:08 verbose #266 > > | (x : f32) | (x : f64) => "%f", x 00:00:08 verbose #267 > > | (x : string) => "%s", x 00:00:08 verbose #268 > > | (x : char) => "%c", x 00:00:08 verbose #269 > > 00:00:08 verbose #270 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 verbose #271 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:08 verbose #272 > > │ ### printable │ 00:00:08 verbose #273 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:08 verbose #274 > > 00:00:08 verbose #275 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 verbose #276 > > //// real 00:00:08 verbose #277 > > 00:00:08 verbose #278 > > prototype printable t : t -> () 00:00:08 verbose #279 > > 00:00:08 verbose #280 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 verbose #281 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:08 verbose #282 > > │ ### real_format │ 00:00:08 verbose #283 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:08 verbose #284 > > 00:00:08 verbose #285 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 verbose #286 > > //// real 00:00:08 verbose #287 > > 00:00:08 verbose #288 > > inl real_format forall t. (x : t) : string = 00:00:08 verbose #289 > > inl result = mut `string (join "") 00:00:08 verbose #290 > > inl rec write x = 00:00:08 verbose #291 > > inl p ((a : string), b) = 00:00:08 verbose #292 > > inl s : string = 00:00:08 verbose #293 > > backend_switch `string `({}) { 00:00:08 verbose #294 > > Fsharp = 00:00:08 verbose #295 > > (fun () => 00:00:08 verbose #296 > > match b with 00:00:08 verbose #297 > > | (_ : f32) | (_ : f64) => $'$"%+.6f{!b}"' : string 00:00:08 verbose #298 > > | _ => $'$"{!b}"' : string 00:00:08 verbose #299 > > ) : () -> string 00:00:08 verbose #300 > > Python = 00:00:08 verbose #301 > > (fun () => 00:00:08 verbose #302 > > match b with 00:00:08 verbose #303 > > | (_ : f32) | (_ : f64) => $'"{:.6f}".format(!b)' : 00:00:08 verbose #304 > > string 00:00:08 verbose #305 > > | _ => $'f"{!b}"' : string 00:00:08 verbose #306 > > ) : () -> string 00:00:08 verbose #307 > > } 00:00:08 verbose #308 > > exec_unit ((fun () => result <- (+.) `string ((~*) `string result) 00:00:08 verbose #309 > > s) : () -> ()) 00:00:08 verbose #310 > > 00:00:08 verbose #311 > > match x with // According to Bing it shouldn't matter whether these are 00:00:08 verbose #312 > > %d or %lld in printf. 00:00:08 verbose #313 > > | () => () 00:00:08 verbose #314 > > | (x : i8) | (x : i16) | (x : i32) | (x : i64) => p ("%d", x) 00:00:08 verbose #315 > > | (x : u8) | (x : u16) | (x : u32) | (x : u64) => p ("%u", x) 00:00:08 verbose #316 > > | (x : f32) | (x : f64) => p ("%f", x) 00:00:08 verbose #317 > > | (x : string) => p ("%s", x) 00:00:08 verbose #318 > > | (x : char) => p ("%c", x) 00:00:08 verbose #319 > > | (x : bool) => p ("%s", if x then "true" else "false") 00:00:08 verbose #320 > > | (a,b) => write a . write ", " . write b 00:00:08 verbose #321 > > | {} as x => 00:00:08 verbose #322 > > write "{ " 00:00:08 verbose #323 > > inl _result = 00:00:08 verbose #324 > > real_core.record_fold 00:00:08 verbose #325 > > fun { state = separator key value } => 00:00:08 verbose #326 > > write separator 00:00:08 verbose #327 > > write (symbol_to_string `(`key)) . write " = " . write 00:00:08 verbose #328 > > value 00:00:08 verbose #329 > > "; " 00:00:08 verbose #330 > > () x 00:00:08 verbose #331 > > write " }" 00:00:08 verbose #332 > > | x when real_core.symbol_is x => write (symbol_to_string `(`x)) 00:00:08 verbose #333 > > | x when real_core.function_is x => write (x ()) 00:00:08 verbose #334 > > | x when real_core.union_is x => 00:00:08 verbose #335 > > if real_core.prototype_has `(`x) printable then printable `(`x) x 00:00:08 verbose #336 > > else 00:00:08 verbose #337 > > write (format_debug `(`x) x) 00:00:08 verbose #338 > > // real_core.unbox x (fun (k, v) => 00:00:08 verbose #339 > > // write k 00:00:08 verbose #340 > > // match v with 00:00:08 verbose #341 > > // | () => () 00:00:08 verbose #342 > > // | _ => write "(" . write v . write ")" 00:00:08 verbose #343 > > // ) 00:00:08 verbose #344 > > | x when real_core.nominal_is x => 00:00:08 verbose #345 > > if real_core.prototype_has `(`x) printable then printable `(`x) x 00:00:08 verbose #346 > > // elif layout_is x then write *x // TODO: Deal with all the layout 00:00:08 verbose #347 > > type cases. 00:00:08 verbose #348 > > else write (format_pretty `(`x) x) 00:00:08 verbose #349 > > | x => write (format_debug `(`x) x) 00:00:08 verbose #350 > > write x 00:00:08 verbose #351 > > (~*) `string result 00:00:08 verbose #352 > > 00:00:08 verbose #353 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 verbose #354 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:08 verbose #355 > > │ ### format │ 00:00:08 verbose #356 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:08 verbose #357 > > 00:00:08 verbose #358 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 verbose #359 > > inl format forall t. (x : t) : string = 00:00:08 verbose #360 > > real real_format `t x 00:00:08 verbose #361 > > 00:00:08 verbose #362 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 verbose #363 > > //// test 00:00:08 verbose #364 > > ///! fsharp 00:00:08 verbose #365 > > ////! cuda 00:00:08 verbose #366 > > ////! rust 00:00:08 verbose #367 > > ////! typescript 00:00:08 verbose #368 > > ////! python 00:00:08 verbose #369 > > 00:00:08 verbose #370 > > ("1", "2", [["3"; "4"]], { b = "5"; c = "6"; a = fun () => "7" }) 00:00:08 verbose #371 > > |> format 00:00:08 verbose #372 > > |> _assert_eq "1, 2, UH0_1 (\"3\", UH0_1 (\"4\", UH0_0)), { b = 5; c = 6; a = 7 00:00:08 verbose #373 > > }" 00:00:08 verbose #374 > > 00:00:08 verbose #375 > > ╭─[ 273.23ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:08 verbose #376 > > │ __assert_eq / actual: "1, 2, UH0_1 ("3", UH0_1 ("4", UH0_0)), { b = 5; c = │ 00:00:08 verbose #377 > > │ 6; a = 7 }" / expected: "1, 2, UH0_1 ("3", UH0_1 ("4", UH0_0)), { b = 5; c = │ 00:00:08 verbose #378 > > │ 6; a = 7 }" │ 00:00:08 verbose #379 > > │ │ 00:00:08 verbose #380 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:08 verbose #381 > > 00:00:08 verbose #382 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 verbose #383 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:08 verbose #384 > > │ ### concat_array_trailing │ 00:00:08 verbose #385 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:08 verbose #386 > > 00:00:08 verbose #387 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 verbose #388 > > inl concat_array_trailing (separator : string) (input : a i32 string) = 00:00:08 verbose #389 > > ("", input) 00:00:08 verbose #390 > > ||> am.fold fun acc (x : string) => 00:00:08 verbose #391 > > $'!acc + !x + !separator + ""' 00:00:08 verbose #392 > > 00:00:08 verbose #393 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 verbose #394 > > //// test 00:00:08 verbose #395 > > ///! typescript 00:00:08 verbose #396 > > 00:00:08 verbose #397 > > ;[[ 00:00:08 verbose #398 > > "1" 00:00:08 verbose #399 > > "2" 00:00:08 verbose #400 > > "3" 00:00:08 verbose #401 > > ]] 00:00:08 verbose #402 > > |> fun x => 00:00:08 verbose #403 > > inl code = (a x : _ i32 _) |> concat_array_trailing "\n" 00:00:08 verbose #404 > > code 00:00:08 verbose #405 > > |> _assert_eq "1\n2\n3\n" 00:00:15 verbose #406 > > 00:00:15 verbose #407 > > ╭─[ 6.52s - return value ]─────────────────────────────────────────────────────╮ 00:00:15 verbose #408 > > │ __assert_eq / actual: 1 │ 00:00:15 verbose #409 > > │ 2 │ 00:00:15 verbose #410 > > │ 3 │ 00:00:15 verbose #411 > > │ / expected: 1 │ 00:00:15 verbose #412 > > │ 2 │ 00:00:15 verbose #413 > > │ 3 │ 00:00:15 verbose #414 > > │ │ 00:00:15 verbose #415 > > │ │ 00:00:15 verbose #416 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:15 verbose #417 > > 00:00:15 verbose #418 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:15 verbose #419 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:15 verbose #420 > > │ ### concat_list_trailing │ 00:00:15 verbose #421 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:15 verbose #422 > > 00:00:15 verbose #423 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:15 verbose #424 > > inl concat_list_trailing separator input = 00:00:15 verbose #425 > > ("", input) 00:00:15 verbose #426 > > ||> listm.fold fun acc (x : string) => 00:00:15 verbose #427 > > $'!acc + !x + !separator + ""' 00:00:15 verbose #428 > > 00:00:15 verbose #429 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:15 verbose #430 > > //// test 00:00:15 verbose #431 > > ///! rust 00:00:15 verbose #432 > > 00:00:15 verbose #433 > > [[ 00:00:15 verbose #434 > > "1" 00:00:15 verbose #435 > > "2" 00:00:15 verbose #436 > > "3" 00:00:15 verbose #437 > > ]] 00:00:15 verbose #438 > > |> fun x => 00:00:15 verbose #439 > > inl code = (x : _) |> concat_list_trailing "\n" 00:00:15 verbose #440 > > code 00:00:15 verbose #441 > > |> _assert_eq "1\n2\n3\n" 00:00:22 verbose #442 > > 00:00:22 verbose #443 > > ╭─[ 6.78s - return value ]─────────────────────────────────────────────────────╮ 00:00:22 verbose #444 > > │ __assert_eq / actual: "1 │ 00:00:22 verbose #445 > > │ 2 │ 00:00:22 verbose #446 > > │ 3 │ 00:00:22 verbose #447 > > │ " / expected: "1 │ 00:00:22 verbose #448 > > │ 2 │ 00:00:22 verbose #449 > > │ 3 │ 00:00:22 verbose #450 > > │ " │ 00:00:22 verbose #451 > > │ │ 00:00:22 verbose #452 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:22 verbose #453 > > 00:00:22 verbose #454 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:22 verbose #455 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:22 verbose #456 > > │ ### concat_list_heap_trailing │ 00:00:22 verbose #457 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:22 verbose #458 > > 00:00:22 verbose #459 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:22 verbose #460 > > inl concat_list_heap_trailing separator input = 00:00:22 verbose #461 > > inl separator = join separator 00:00:22 verbose #462 > > ("", input) 00:00:22 verbose #463 > > ||> listm.fold fun acc (x : string) => 00:00:22 verbose #464 > > $'$"{!acc}{!x}{!separator}"' 00:00:22 verbose #465 > > 00:00:22 verbose #466 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:22 verbose #467 > > //// test 00:00:22 verbose #468 > > ///! rust 00:00:22 verbose #469 > > 00:00:22 verbose #470 > > [[ 00:00:22 verbose #471 > > "1" 00:00:22 verbose #472 > > "2" 00:00:22 verbose #473 > > "3" 00:00:22 verbose #474 > > ]] 00:00:22 verbose #475 > > |> fun x => 00:00:22 verbose #476 > > inl code = (x : _) |> concat_list_heap_trailing "\n" 00:00:22 verbose #477 > > code 00:00:22 verbose #478 > > |> _assert_eq "1\n2\n3\n" 00:00:28 verbose #479 > > 00:00:28 verbose #480 > > ╭─[ 6.65s - return value ]─────────────────────────────────────────────────────╮ 00:00:28 verbose #481 > > │ __assert_eq / actual: "1 │ 00:00:28 verbose #482 > > │ 2 │ 00:00:28 verbose #483 > > │ 3 │ 00:00:28 verbose #484 > > │ " / expected: "1 │ 00:00:28 verbose #485 > > │ 2 │ 00:00:28 verbose #486 > > │ 3 │ 00:00:28 verbose #487 > > │ " │ 00:00:28 verbose #488 > > │ │ 00:00:28 verbose #489 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:28 verbose #490 > > 00:00:28 verbose #491 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:28 verbose #492 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:28 verbose #493 > > │ ### ellipsis │ 00:00:28 verbose #494 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:28 verbose #495 > > 00:00:28 verbose #496 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:28 verbose #497 > > inl ellipsis (max : i32) (s : string) = 00:00:28 verbose #498 > > if sm.length s <= max 00:00:28 verbose #499 > > then s 00:00:28 verbose #500 > > else s |> slice 0 (max - 1) |> fun x => $'!x + "..."' 00:00:29 verbose #501 > > 00:00:29 verbose #502 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:29 verbose #503 > > //// test 00:00:29 verbose #504 > > 00:00:29 verbose #505 > > "12345" 00:00:29 verbose #506 > > |> ellipsis 2 00:00:29 verbose #507 > > |> _assert_eq "12..." 00:00:29 verbose #508 > > 00:00:29 verbose #509 > > "12345" 00:00:29 verbose #510 > > |> ellipsis 4 00:00:29 verbose #511 > > |> _assert_eq "1234..." 00:00:29 verbose #512 > > 00:00:29 verbose #513 > > ╭─[ 101.17ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:29 verbose #514 > > │ __assert_eq / actual: "12..." / expected: "12..." │ 00:00:29 verbose #515 > > │ __assert_eq / actual: "1234..." / expected: "1234..." │ 00:00:29 verbose #516 > > │ │ 00:00:29 verbose #517 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:29 verbose #518 > > 00:00:29 verbose #519 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:29 verbose #520 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:29 verbose #521 > > │ ## fsharp │ 00:00:29 verbose #522 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:29 verbose #523 > > 00:00:29 verbose #524 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:29 verbose #525 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:29 verbose #526 > > │ ### ends_with │ 00:00:29 verbose #527 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:29 verbose #528 > > 00:00:29 verbose #529 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:29 verbose #530 > > inl ends_with (value : string) (s : string) : bool = 00:00:29 verbose #531 > > $'!s.EndsWith !value ' 00:00:29 verbose #532 > > 00:00:29 verbose #533 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:29 verbose #534 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:29 verbose #535 > > │ ### last_index_of │ 00:00:29 verbose #536 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:29 verbose #537 > > 00:00:29 verbose #538 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:29 verbose #539 > > inl last_index_of (search : string) (s : string) : i32 = 00:00:29 verbose #540 > > $'!s.LastIndexOf !search ' 00:00:29 verbose #541 > > 00:00:29 verbose #542 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:29 verbose #543 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:29 verbose #544 > > │ ### index_of │ 00:00:29 verbose #545 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:29 verbose #546 > > 00:00:29 verbose #547 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:29 verbose #548 > > inl index_of (search : string) (s : string) : i32 = 00:00:29 verbose #549 > > $'!s.IndexOf !search ' 00:00:29 verbose #550 > > 00:00:29 verbose #551 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:29 verbose #552 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:29 verbose #553 > > │ ### replicate │ 00:00:29 verbose #554 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:29 verbose #555 > > 00:00:29 verbose #556 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:29 verbose #557 > > inl replicate (n : i32) (s : string) : string = 00:00:29 verbose #558 > > backend_switch { 00:00:29 verbose #559 > > Fsharp = fun () => s |> $'String.replicate' n : string 00:00:29 verbose #560 > > Python = fun () => $'!s * !n ' : string 00:00:29 verbose #561 > > } 00:00:29 verbose #562 > > 00:00:29 verbose #563 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:29 verbose #564 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:29 verbose #565 > > │ ### obj_to_string │ 00:00:29 verbose #566 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:29 verbose #567 > > 00:00:29 verbose #568 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:29 verbose #569 > > inl obj_to_string x : string = 00:00:29 verbose #570 > > backend_switch { 00:00:29 verbose #571 > > Fsharp = fun () => x |> $'_.ToString()' : string 00:00:29 verbose #572 > > Python = fun () => $'str(!x)' : string 00:00:29 verbose #573 > > } 00:00:29 verbose #574 > > 00:00:29 verbose #575 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:29 verbose #576 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:29 verbose #577 > > │ ### pad_left │ 00:00:29 verbose #578 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:29 verbose #579 > > 00:00:29 verbose #580 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:29 verbose #581 > > inl pad_left (total_width : i32) (padding_char : char) (s : string) : string = 00:00:29 verbose #582 > > backend_switch { 00:00:29 verbose #583 > > Fsharp = fun () => $'!s.PadLeft (!total_width, !padding_char)' : string 00:00:29 verbose #584 > > Python = fun () => 00:00:29 verbose #585 > > inl padding = padding_char |> obj_to_string |> replicate 00:00:29 verbose #586 > > (total_width - length s) 00:00:29 verbose #587 > > padding +. s 00:00:29 verbose #588 > > } 00:00:29 verbose #589 > > 00:00:29 verbose #590 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:29 verbose #591 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:29 verbose #592 > > │ ### pad_right │ 00:00:29 verbose #593 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:29 verbose #594 > > 00:00:29 verbose #595 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:29 verbose #596 > > inl pad_right (total_width : i32) (padding_char : char) (s : string) : string = 00:00:29 verbose #597 > > $'!s.PadRight (!total_width, !padding_char)' 00:00:29 verbose #598 > > 00:00:29 verbose #599 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:29 verbose #600 > > //// test 00:00:29 verbose #601 > > 00:00:29 verbose #602 > > "123" 00:00:29 verbose #603 > > |> pad_right 6 ' ' 00:00:29 verbose #604 > > |> _assert_eq "123 " 00:00:29 verbose #605 > > 00:00:29 verbose #606 > > ╭─[ 134.07ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:29 verbose #607 > > │ __assert_eq / actual: "123 " / expected: "123 " │ 00:00:29 verbose #608 > > │ │ 00:00:29 verbose #609 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:29 verbose #610 > > 00:00:29 verbose #611 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:29 verbose #612 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:29 verbose #613 > > │ ### starts_with │ 00:00:29 verbose #614 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:29 verbose #615 > > 00:00:29 verbose #616 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:29 verbose #617 > > inl starts_with (value : string) (s : string) : bool = 00:00:29 verbose #618 > > backend_switch { 00:00:29 verbose #619 > > Fsharp = fun () => $'!s.StartsWith !value ' : bool 00:00:29 verbose #620 > > Python = fun () => $'!s.startswith(!value)' : bool 00:00:29 verbose #621 > > } 00:00:30 verbose #622 > > 00:00:30 verbose #623 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:30 verbose #624 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:30 verbose #625 > > │ ### is_white_space │ 00:00:30 verbose #626 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:30 verbose #627 > > 00:00:30 verbose #628 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:30 verbose #629 > > inl is_white_space (c : char) : bool = 00:00:30 verbose #630 > > c |> $'System.Char.IsWhiteSpace' 00:00:30 verbose #631 > > 00:00:30 verbose #632 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:30 verbose #633 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:30 verbose #634 > > │ ### substring │ 00:00:30 verbose #635 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:30 verbose #636 > > 00:00:30 verbose #637 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:30 verbose #638 > > inl substring (start : i32) (len : i32) (str : string) : string = 00:00:30 verbose #639 > > $'!str.Substring (!start, !len)' 00:00:30 verbose #640 > > 00:00:30 verbose #641 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:30 verbose #642 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:30 verbose #643 > > │ ### to_lower │ 00:00:30 verbose #644 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:30 verbose #645 > > 00:00:30 verbose #646 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:30 verbose #647 > > inl to_lower (input : string) : string = 00:00:30 verbose #648 > > backend_switch { 00:00:30 verbose #649 > > Fsharp = fun () => $'!input.ToLower' () : string 00:00:30 verbose #650 > > Python = fun () => $'!input.lower()' : string 00:00:30 verbose #651 > > } 00:00:30 verbose #652 > > 00:00:30 verbose #653 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:30 verbose #654 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:30 verbose #655 > > │ ### to_upper │ 00:00:30 verbose #656 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:30 verbose #657 > > 00:00:30 verbose #658 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:30 verbose #659 > > inl to_upper (input : string) : string = 00:00:30 verbose #660 > > $'!input.ToUpper' () 00:00:30 verbose #661 > > 00:00:30 verbose #662 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:30 verbose #663 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:30 verbose #664 > > │ ### char_to_upper │ 00:00:30 verbose #665 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:30 verbose #666 > > 00:00:30 verbose #667 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:30 verbose #668 > > inl char_to_upper (input : char) : char = 00:00:30 verbose #669 > > $'System.Char.ToUpper !input ' 00:00:30 verbose #670 > > 00:00:30 verbose #671 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:30 verbose #672 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:30 verbose #673 > > │ ### string_builder │ 00:00:30 verbose #674 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:30 verbose #675 > > 00:00:30 verbose #676 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:30 verbose #677 > > nominal string_builder = $'System.Text.StringBuilder' 00:00:30 verbose #678 > > 00:00:30 verbose #679 > > inl string_builder (initial : string) : string_builder = 00:00:30 verbose #680 > > initial |> $'`string_builder ' 00:00:30 verbose #681 > > 00:00:30 verbose #682 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:30 verbose #683 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:30 verbose #684 > > │ ### builder_append │ 00:00:30 verbose #685 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:30 verbose #686 > > 00:00:30 verbose #687 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:30 verbose #688 > > inl builder_append (item : string) (sb : string_builder) : string_builder = 00:00:30 verbose #689 > > ($'!sb.Append' item : string_builder) |> ignore 00:00:30 verbose #690 > > sb 00:00:30 verbose #691 > > 00:00:30 verbose #692 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:30 verbose #693 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:30 verbose #694 > > │ ### builder_replace │ 00:00:30 verbose #695 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:30 verbose #696 > > 00:00:30 verbose #697 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:30 verbose #698 > > inl builder_replace (old : string) (new : string) (sb : string_builder) : 00:00:30 verbose #699 > > string_builder = 00:00:30 verbose #700 > > ($'!sb.Replace (!old, !new)' : string_builder) |> ignore 00:00:30 verbose #701 > > sb 00:00:31 verbose #702 > > 00:00:31 verbose #703 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:31 verbose #704 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:31 verbose #705 > > │ ### builder_insert │ 00:00:31 verbose #706 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:31 verbose #707 > > 00:00:31 verbose #708 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:31 verbose #709 > > inl builder_insert (n : i32) (s : string) (sb : string_builder) : string_builder 00:00:31 verbose #710 > > = 00:00:31 verbose #711 > > ($'!sb.Insert (!n, !s)' : string_builder) |> ignore 00:00:31 verbose #712 > > sb 00:00:31 verbose #713 > > 00:00:31 verbose #714 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:31 verbose #715 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:31 verbose #716 > > │ ### builder_clear │ 00:00:31 verbose #717 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:31 verbose #718 > > 00:00:31 verbose #719 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:31 verbose #720 > > inl builder_clear (sb : string_builder) : string_builder = 00:00:31 verbose #721 > > ($'!sb.Clear' () : string_builder) |> ignore 00:00:31 verbose #722 > > sb 00:00:31 verbose #723 > > 00:00:31 verbose #724 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:31 verbose #725 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:31 verbose #726 > > │ ### trim │ 00:00:31 verbose #727 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:31 verbose #728 > > 00:00:31 verbose #729 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:31 verbose #730 > > inl trim (input : string) : string = 00:00:31 verbose #731 > > $'!input.Trim' () 00:00:31 verbose #732 > > 00:00:31 verbose #733 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:31 verbose #734 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:31 verbose #735 > > │ ### concat │ 00:00:31 verbose #736 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:31 verbose #737 > > 00:00:31 verbose #738 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:31 verbose #739 > > inl concat (a : string) (b : seq.seq' string) : string = 00:00:31 verbose #740 > > backend_switch { 00:00:31 verbose #741 > > Fsharp = fun () => 00:00:31 verbose #742 > > b |> $'String.concat' a : string 00:00:31 verbose #743 > > Python = fun () => 00:00:31 verbose #744 > > $'!a.join(!b)' : string 00:00:31 verbose #745 > > } 00:00:31 verbose #746 > > 00:00:31 verbose #747 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:31 verbose #748 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:31 verbose #749 > > │ ### trim_end │ 00:00:31 verbose #750 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:31 verbose #751 > > 00:00:31 verbose #752 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:31 verbose #753 > > inl trim_end (trim_chars : list char) (input : string) : string = 00:00:31 verbose #754 > > inl trim_chars = trim_chars |> listm'.box 00:00:31 verbose #755 > > backend_switch { 00:00:31 verbose #756 > > Fsharp = fun () => 00:00:31 verbose #757 > > inl trim_chars = trim_chars |> listm'.to_array' 00:00:31 verbose #758 > > $'!input.TrimEnd !trim_chars ' : string 00:00:31 verbose #759 > > Python = fun () => 00:00:31 verbose #760 > > inl trim_chars = trim_chars |> listm'.map obj_to_string |> 00:00:31 verbose #761 > > seq.of_list' |> concat "" 00:00:31 verbose #762 > > $'!input.rstrip(!trim_chars)' : string 00:00:31 verbose #763 > > } 00:00:31 verbose #764 > > 00:00:31 verbose #765 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:31 verbose #766 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:31 verbose #767 > > │ ### trim_start │ 00:00:31 verbose #768 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:31 verbose #769 > > 00:00:31 verbose #770 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:31 verbose #771 > > inl trim_start (trim_chars : list char) (input : string) : string = 00:00:31 verbose #772 > > inl trim_chars = trim_chars |> listm'.box 00:00:31 verbose #773 > > backend_switch { 00:00:31 verbose #774 > > Fsharp = fun () => 00:00:31 verbose #775 > > inl trim_chars = trim_chars |> listm'.to_array' 00:00:31 verbose #776 > > $'!input.TrimStart !trim_chars ' : string 00:00:31 verbose #777 > > Python = fun () => 00:00:31 verbose #778 > > inl trim_chars = trim_chars |> listm'.map obj_to_string |> 00:00:31 verbose #779 > > seq.of_list' |> concat "" 00:00:31 verbose #780 > > $'!input.lstrip(!trim_chars)' : string 00:00:31 verbose #781 > > } 00:00:31 verbose #782 > > 00:00:31 verbose #783 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:31 verbose #784 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:31 verbose #785 > > │ ### length' │ 00:00:31 verbose #786 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:31 verbose #787 > > 00:00:31 verbose #788 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:31 verbose #789 > > inl length' forall dim. (input : string) : dim = 00:00:31 verbose #790 > > input |> $'String.length' 00:00:31 verbose #791 > > 00:00:31 verbose #792 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:31 verbose #793 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:31 verbose #794 > > │ ### to_string any │ 00:00:31 verbose #795 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:31 verbose #796 > > 00:00:31 verbose #797 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:31 verbose #798 > > instance to_string any = 00:00:31 verbose #799 > > obj_to_string 00:00:31 verbose #800 > > 00:00:31 verbose #801 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:31 verbose #802 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:31 verbose #803 > > │ ### replace │ 00:00:31 verbose #804 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:31 verbose #805 > > 00:00:31 verbose #806 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:31 verbose #807 > > inl replace (old_value : string) (new_value : string) (s : string) : string = 00:00:31 verbose #808 > > $'!s.Replace (!old_value, !new_value)' 00:00:32 verbose #809 > > 00:00:32 verbose #810 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:32 verbose #811 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:32 verbose #812 > > │ ### split │ 00:00:32 verbose #813 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:32 verbose #814 > > 00:00:32 verbose #815 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:32 verbose #816 > > inl split (separator : string) (str : string) : array_base string = 00:00:32 verbose #817 > > backend_switch { 00:00:32 verbose #818 > > Fsharp = fun () => $'!str.Split !separator ' : array_base string 00:00:32 verbose #819 > > Python = fun () => $'!str.split(!separator)' : array_base string 00:00:32 verbose #820 > > } 00:00:32 verbose #821 > > 00:00:32 verbose #822 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:32 verbose #823 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:32 verbose #824 > > │ ### split_string │ 00:00:32 verbose #825 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:32 verbose #826 > > 00:00:32 verbose #827 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:32 verbose #828 > > inl split_string (separator : array_base string) (str : string) : array_base 00:00:32 verbose #829 > > string = 00:00:32 verbose #830 > > run_target_args (fun () => str, separator) function 00:00:32 verbose #831 > > | Fsharp (Native) => fun str, separator => $'!str.Split (!separator, 00:00:32 verbose #832 > > System.StringSplitOptions.None)' 00:00:32 verbose #833 > > | _ => fun str, separator => str |> split ((a separator : _ int _) |> 00:00:32 verbose #834 > > seq.of_array |> concat (join "")) 00:00:32 verbose #835 > > 00:00:32 verbose #836 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:32 verbose #837 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:32 verbose #838 > > │ ### join' │ 00:00:32 verbose #839 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:32 verbose #840 > > 00:00:32 verbose #841 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:32 verbose #842 > > inl join' (concat : string) (s : a int string) : string = 00:00:32 verbose #843 > > $'System.String.Join (!concat, !s)' 00:00:32 verbose #844 > > 00:00:32 verbose #845 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:32 verbose #846 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:32 verbose #847 > > │ ### encoding │ 00:00:32 verbose #848 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:32 verbose #849 > > 00:00:32 verbose #850 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:32 verbose #851 > > nominal encoding = $'System.Text.Encoding' 00:00:32 verbose #852 > > 00:00:32 verbose #853 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:32 verbose #854 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:32 verbose #855 > > │ ### encoding_utf8 │ 00:00:32 verbose #856 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:32 verbose #857 > > 00:00:32 verbose #858 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:32 verbose #859 > > inl encoding_utf8 () : encoding = 00:00:32 verbose #860 > > $'`encoding.UTF8' 00:00:32 verbose #861 > > 00:00:32 verbose #862 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:32 verbose #863 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:32 verbose #864 > > │ ### utf8_get_bytes │ 00:00:32 verbose #865 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:32 verbose #866 > > 00:00:32 verbose #867 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:32 verbose #868 > > inl utf8_get_bytes (s : string) : a i32 u8 = 00:00:32 verbose #869 > > s |> (encoding_utf8 () |> $'_.GetBytes') 00:00:32 verbose #870 > > 00:00:32 verbose #871 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:32 verbose #872 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:32 verbose #873 > > │ ### byte_to_string │ 00:00:32 verbose #874 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:32 verbose #875 > > 00:00:32 verbose #876 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:32 verbose #877 > > inl byte_to_string (format : string) (x : u8) : string = 00:00:32 verbose #878 > > $'!x.ToString' format 00:00:32 verbose #879 > > 00:00:32 verbose #880 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:32 verbose #881 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:32 verbose #882 > > │ ## rust │ 00:00:32 verbose #883 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:32 verbose #884 > > 00:00:32 verbose #885 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:32 verbose #886 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:32 verbose #887 > > │ ### str │ 00:00:32 verbose #888 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:32 verbose #889 > > 00:00:32 verbose #890 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:32 verbose #891 > > nominal str = 00:00:32 verbose #892 > > `( 00:00:32 verbose #893 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:32 verbose #894 > > Fable.Core.Emit(\"str\")>]]\n#endif\ntype Str = class end" 00:00:32 verbose #895 > > $'' : $'Str' 00:00:32 verbose #896 > > ) 00:00:32 verbose #897 > > 00:00:32 verbose #898 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:32 verbose #899 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:32 verbose #900 > > │ ### chars │ 00:00:32 verbose #901 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:32 verbose #902 > > 00:00:32 verbose #903 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:32 verbose #904 > > inl chars (x : rust.ref str) : rust.mut' (into_iterator char) = 00:00:32 verbose #905 > > !\\(x, $'$"$0.chars()"') 00:00:32 verbose #906 > > 00:00:32 verbose #907 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:32 verbose #908 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:32 verbose #909 > > │ ### char_is_alphanumeric │ 00:00:32 verbose #910 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:32 verbose #911 > > 00:00:32 verbose #912 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:32 verbose #913 > > inl char_is_alphanumeric (x : char) : bool = 00:00:32 verbose #914 > > !\\(x, $'$"$0.is_alphanumeric()"') 00:00:32 verbose #915 > > 00:00:32 verbose #916 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:32 verbose #917 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:32 verbose #918 > > │ ### byte_slice │ 00:00:32 verbose #919 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:32 verbose #920 > > 00:00:32 verbose #921 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:32 verbose #922 > > inl byte_slice (s : string) : rust.ref (am'.slice u8) = 00:00:32 verbose #923 > > !\($'"b\\\"" + !s + "\\\""') 00:00:33 verbose #924 > > 00:00:33 verbose #925 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:33 verbose #926 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:33 verbose #927 > > │ ### display │ 00:00:33 verbose #928 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:33 verbose #929 > > 00:00:33 verbose #930 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:33 verbose #931 > > nominal display t = 00:00:33 verbose #932 > > `( 00:00:33 verbose #933 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:33 verbose #934 > > Fable.Core.Emit(\"std::fmt::Display<$0>\")>]]\n#endif\ntype std_fmt_Display<'T> 00:00:33 verbose #935 > > = class end" 00:00:33 verbose #936 > > $'' : $'std_fmt_Display<`t>' 00:00:33 verbose #937 > > ) 00:00:33 verbose #938 > > 00:00:33 verbose #939 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:33 verbose #940 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:33 verbose #941 > > │ ### base64_decode_error │ 00:00:33 verbose #942 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:33 verbose #943 > > 00:00:33 verbose #944 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:33 verbose #945 > > nominal base64_decode_error = 00:00:33 verbose #946 > > `( 00:00:33 verbose #947 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:33 verbose #948 > > Fable.Core.Emit(\"base64::DecodeError\")>]]\n#endif\ntype base64_DecodeError = 00:00:33 verbose #949 > > class end" 00:00:33 verbose #950 > > $'' : $'base64_DecodeError' 00:00:33 verbose #951 > > ) 00:00:33 verbose #952 > > 00:00:33 verbose #953 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:33 verbose #954 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:33 verbose #955 > > │ ### borsh_io_error │ 00:00:33 verbose #956 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:33 verbose #957 > > 00:00:33 verbose #958 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:33 verbose #959 > > nominal borsh_io_error = 00:00:33 verbose #960 > > `( 00:00:33 verbose #961 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:33 verbose #962 > > Fable.Core.Emit(\"borsh::io::Error\")>]]\n#endif\ntype borsh_io_Error = class 00:00:33 verbose #963 > > end" 00:00:33 verbose #964 > > $'' : $'borsh_io_Error' 00:00:33 verbose #965 > > ) 00:00:33 verbose #966 > > 00:00:33 verbose #967 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:33 verbose #968 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:33 verbose #969 > > │ ### utf8_error │ 00:00:33 verbose #970 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:33 verbose #971 > > 00:00:33 verbose #972 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:33 verbose #973 > > nominal utf8_error = 00:00:33 verbose #974 > > `( 00:00:33 verbose #975 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:33 verbose #976 > > Fable.Core.Emit(\"std::str::Utf8Error\")>]]\n#endif\ntype std_str_Utf8Error = 00:00:33 verbose #977 > > class end" 00:00:33 verbose #978 > > $'' : $'std_str_Utf8Error' 00:00:33 verbose #979 > > ) 00:00:33 verbose #980 > > 00:00:33 verbose #981 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:33 verbose #982 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:33 verbose #983 > > │ ### from_utf8_error │ 00:00:33 verbose #984 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:33 verbose #985 > > 00:00:33 verbose #986 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:33 verbose #987 > > nominal from_utf8_error = 00:00:33 verbose #988 > > `( 00:00:33 verbose #989 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:33 verbose #990 > > Fable.Core.Emit(\"std::string::FromUtf8Error\")>]]\n#endif\ntype 00:00:33 verbose #991 > > std_string_FromUtf8Error = class end" 00:00:33 verbose #992 > > $'' : $'std_string_FromUtf8Error' 00:00:33 verbose #993 > > ) 00:00:33 verbose #994 > > 00:00:33 verbose #995 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:33 verbose #996 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:33 verbose #997 > > │ ### json_value │ 00:00:33 verbose #998 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:33 verbose #999 > > 00:00:33 verbose #1000 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:33 verbose #1001 > > nominal json_value = 00:00:33 verbose #1002 > > `( 00:00:33 verbose #1003 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:33 verbose #1004 > > Fable.Core.Emit(\"serde_json::Value\")>]]\n#endif\ntype serde_json_Value = class 00:00:33 verbose #1005 > > end" 00:00:33 verbose #1006 > > $'' : $'serde_json_Value' 00:00:33 verbose #1007 > > ) 00:00:33 verbose #1008 > > 00:00:33 verbose #1009 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:33 verbose #1010 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:33 verbose #1011 > > │ ### json_error │ 00:00:33 verbose #1012 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:33 verbose #1013 > > 00:00:33 verbose #1014 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:33 verbose #1015 > > nominal json_error = 00:00:33 verbose #1016 > > `( 00:00:33 verbose #1017 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:33 verbose #1018 > > Fable.Core.Emit(\"serde_json::Error\")>]]\n#endif\ntype serde_json_Error = class 00:00:33 verbose #1019 > > end" 00:00:33 verbose #1020 > > $'' : $'serde_json_Error' 00:00:33 verbose #1021 > > ) 00:00:33 verbose #1022 > > 00:00:33 verbose #1023 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:33 verbose #1024 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:33 verbose #1025 > > │ ### serde_wasm_bindgen_error │ 00:00:33 verbose #1026 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:33 verbose #1027 > > 00:00:33 verbose #1028 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:33 verbose #1029 > > nominal serde_wasm_bindgen_error = 00:00:33 verbose #1030 > > `( 00:00:33 verbose #1031 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:33 verbose #1032 > > Fable.Core.Emit(\"serde_wasm_bindgen::Error\")>]]\n#endif\ntype 00:00:33 verbose #1033 > > serde_wasm_bindgen_Error = class end" 00:00:33 verbose #1034 > > $'' : $'serde_wasm_bindgen_Error' 00:00:33 verbose #1035 > > ) 00:00:33 verbose #1036 > > 00:00:33 verbose #1037 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:33 verbose #1038 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:33 verbose #1039 > > │ ### js_string │ 00:00:33 verbose #1040 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:33 verbose #1041 > > 00:00:33 verbose #1042 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:33 verbose #1043 > > nominal js_string = 00:00:33 verbose #1044 > > `( 00:00:33 verbose #1045 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:33 verbose #1046 > > Fable.Core.Emit(\"js_sys::JsString\")>]]\n#endif\ntype js_sys_JsString = class 00:00:33 verbose #1047 > > end" 00:00:33 verbose #1048 > > $'' : $'js_sys_JsString' 00:00:33 verbose #1049 > > ) 00:00:33 verbose #1050 > > 00:00:33 verbose #1051 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:33 verbose #1052 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:33 verbose #1053 > > │ ### os_str │ 00:00:33 verbose #1054 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:33 verbose #1055 > > 00:00:33 verbose #1056 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:33 verbose #1057 > > nominal os_str = 00:00:33 verbose #1058 > > `( 00:00:33 verbose #1059 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:33 verbose #1060 > > Fable.Core.Emit(\"std::ffi::OsStr\")>]]\n#endif\ntype std_ffi_OsStr = class end" 00:00:33 verbose #1061 > > $'' : $'std_ffi_OsStr' 00:00:33 verbose #1062 > > ) 00:00:33 verbose #1063 > > 00:00:33 verbose #1064 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:33 verbose #1065 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:33 verbose #1066 > > │ ### os_string │ 00:00:33 verbose #1067 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:33 verbose #1068 > > 00:00:33 verbose #1069 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:33 verbose #1070 > > nominal os_string = 00:00:33 verbose #1071 > > `( 00:00:33 verbose #1072 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:33 verbose #1073 > > Fable.Core.Emit(\"std::ffi::OsString\")>]]\n#endif\ntype std_ffi_OsString = 00:00:33 verbose #1074 > > class end" 00:00:33 verbose #1075 > > $'' : $'std_ffi_OsString' 00:00:33 verbose #1076 > > ) 00:00:34 verbose #1077 > > 00:00:34 verbose #1078 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:34 verbose #1079 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:34 verbose #1080 > > │ ### raw_string_literal │ 00:00:34 verbose #1081 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:34 verbose #1082 > > 00:00:34 verbose #1083 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:34 verbose #1084 > > inl raw_string_literal (s : string) : rust.ref str = 00:00:34 verbose #1085 > > !\($'"r#\\"" + !s + "\\"#"') 00:00:34 verbose #1086 > > 00:00:34 verbose #1087 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:34 verbose #1088 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:34 verbose #1089 > > │ ### raw_string_literal_static │ 00:00:34 verbose #1090 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:34 verbose #1091 > > 00:00:34 verbose #1092 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:34 verbose #1093 > > inl raw_string_literal_static (s : string) : rust.static_ref str = 00:00:34 verbose #1094 > > !\($'"r#\\"" + !s + "\\"#"') 00:00:34 verbose #1095 > > 00:00:34 verbose #1096 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:34 verbose #1097 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:34 verbose #1098 > > │ ### (~#) │ 00:00:34 verbose #1099 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:34 verbose #1100 > > 00:00:34 verbose #1101 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:34 verbose #1102 > > inl (~#) s = 00:00:34 verbose #1103 > > s |> raw_string_literal 00:00:34 verbose #1104 > > 00:00:34 verbose #1105 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:34 verbose #1106 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:34 verbose #1107 > > │ ### (~##) │ 00:00:34 verbose #1108 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:34 verbose #1109 > > 00:00:34 verbose #1110 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:34 verbose #1111 > > inl (~##) s = 00:00:34 verbose #1112 > > s |> raw_string_literal_static 00:00:34 verbose #1113 > > 00:00:34 verbose #1114 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:34 verbose #1115 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:34 verbose #1116 > > │ ### include_str │ 00:00:34 verbose #1117 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:34 verbose #1118 > > 00:00:34 verbose #1119 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:34 verbose #1120 > > inl include_str (path : string) : rust.ref str = 00:00:34 verbose #1121 > > !\($'"include_str\!(\\\"" + !path + "\\\")"') 00:00:34 verbose #1122 > > 00:00:34 verbose #1123 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:34 verbose #1124 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:34 verbose #1125 > > │ ### as_str │ 00:00:34 verbose #1126 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:34 verbose #1127 > > 00:00:34 verbose #1128 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:34 verbose #1129 > > inl as_str (s : string) : rust.ref str = 00:00:34 verbose #1130 > > // !\\(s, $'"fable_library_rust::String_::LrcStr::as_str(&$0)"') 00:00:34 verbose #1131 > > !\\(s, $'"&*$0"') 00:00:34 verbose #1132 > > 00:00:34 verbose #1133 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:34 verbose #1134 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:34 verbose #1135 > > │ ### ref_to_std_string │ 00:00:34 verbose #1136 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:34 verbose #1137 > > 00:00:34 verbose #1138 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:34 verbose #1139 > > inl ref_to_std_string (str : rust.ref str) : std_string = 00:00:34 verbose #1140 > > !\\(str, $'"String::from($0)"') 00:00:34 verbose #1141 > > 00:00:34 verbose #1142 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:34 verbose #1143 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:34 verbose #1144 > > │ ### cow_to_std_string │ 00:00:34 verbose #1145 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:34 verbose #1146 > > 00:00:34 verbose #1147 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:34 verbose #1148 > > inl cow_to_std_string (str : rust.cow str) : std_string = 00:00:34 verbose #1149 > > !\\(str, $'"String::from($0)"') 00:00:34 verbose #1150 > > 00:00:34 verbose #1151 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:34 verbose #1152 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:34 verbose #1153 > > │ ### to_std_string │ 00:00:34 verbose #1154 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:34 verbose #1155 > > 00:00:34 verbose #1156 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:34 verbose #1157 > > inl to_std_string (s : string) : std_string = 00:00:34 verbose #1158 > > s |> as_str |> ref_to_std_string 00:00:34 verbose #1159 > > 00:00:34 verbose #1160 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:34 verbose #1161 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:34 verbose #1162 > > │ ### as_str_std │ 00:00:34 verbose #1163 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:34 verbose #1164 > > 00:00:34 verbose #1165 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:34 verbose #1166 > > inl as_str_std (s : std_string) : rust.ref str = 00:00:34 verbose #1167 > > !\\(s, $'"$0.as_str()"') 00:00:35 verbose #1168 > > 00:00:35 verbose #1169 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:35 verbose #1170 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:35 verbose #1171 > > │ ### into_boxed_str │ 00:00:35 verbose #1172 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:35 verbose #1173 > > 00:00:35 verbose #1174 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:35 verbose #1175 > > inl into_boxed_str (s : std_string) : rust.box str = 00:00:35 verbose #1176 > > !\\(s, $'"$0.into_boxed_str()"') 00:00:35 verbose #1177 > > 00:00:35 verbose #1178 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:35 verbose #1179 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:35 verbose #1180 > > │ ### os_string_as_ref │ 00:00:35 verbose #1181 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:35 verbose #1182 > > 00:00:35 verbose #1183 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:35 verbose #1184 > > inl os_string_as_ref (s : os_string) : rust.ref os_str = 00:00:35 verbose #1185 > > !\\(s, $'"$0.as_ref()"') 00:00:35 verbose #1186 > > 00:00:35 verbose #1187 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:35 verbose #1188 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:35 verbose #1189 > > │ ### to_os_string │ 00:00:35 verbose #1190 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:35 verbose #1191 > > 00:00:35 verbose #1192 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:35 verbose #1193 > > inl to_os_string (s : rust.ref os_str) : os_string = 00:00:35 verbose #1194 > > !\\(s, $'"$0.to_os_string()"') 00:00:35 verbose #1195 > > 00:00:35 verbose #1196 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:35 verbose #1197 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:35 verbose #1198 > > │ ### os_to_str │ 00:00:35 verbose #1199 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:35 verbose #1200 > > 00:00:35 verbose #1201 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:35 verbose #1202 > > inl os_to_str (s : os_string) : optionm'.option' (rust.ref str) = 00:00:35 verbose #1203 > > !\\(s, $'"$0.to_str()"') 00:00:35 verbose #1204 > > 00:00:35 verbose #1205 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:35 verbose #1206 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:35 verbose #1207 > > │ ### from_os_str_ref │ 00:00:35 verbose #1208 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:35 verbose #1209 > > 00:00:35 verbose #1210 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:35 verbose #1211 > > inl from_os_str_ref s = 00:00:35 verbose #1212 > > s 00:00:35 verbose #1213 > > |> to_os_string 00:00:35 verbose #1214 > > |> os_to_str 00:00:35 verbose #1215 > > |> optionm'.unwrap 00:00:35 verbose #1216 > > |> ref_to_std_string 00:00:35 verbose #1217 > > |> from_std_string 00:00:35 verbose #1218 > > 00:00:35 verbose #1219 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:35 verbose #1220 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:35 verbose #1221 > > │ ### format_custom' │ 00:00:35 verbose #1222 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:35 verbose #1223 > > 00:00:35 verbose #1224 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:35 verbose #1225 > > inl format_custom' (f : string) x : std_string = 00:00:35 verbose #1226 > > run_target function 00:00:35 verbose #1227 > > | Rust _ => fun () => 00:00:35 verbose #1228 > > !\\(x, $'"format\!(\\\"" + !f + "\\\", $0)"') 00:00:35 verbose #1229 > > | _ => fun () => null () 00:00:35 verbose #1230 > > 00:00:35 verbose #1231 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:35 verbose #1232 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:35 verbose #1233 > > │ ### format_debug' │ 00:00:35 verbose #1234 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:35 verbose #1235 > > 00:00:35 verbose #1236 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:35 verbose #1237 > > inl format_debug' x : std_string = 00:00:35 verbose #1238 > > run_target function 00:00:35 verbose #1239 > > | Rust _ => fun () => 00:00:35 verbose #1240 > > !\\(x, $'"format\!(\\\"{:?}\\\", $0)"') 00:00:35 verbose #1241 > > | _ => fun () => null () 00:00:36 verbose #1242 > > 00:00:36 verbose #1243 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:36 verbose #1244 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:36 verbose #1245 > > │ ### format' │ 00:00:36 verbose #1246 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:36 verbose #1247 > > 00:00:36 verbose #1248 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:36 verbose #1249 > > inl format' x : std_string = 00:00:36 verbose #1250 > > run_target_args (fun () => x) function 00:00:36 verbose #1251 > > | Rust _ => fun x => 00:00:36 verbose #1252 > > !\\(x, $'"format\!(\\\"{}\\\", $0)"') 00:00:36 verbose #1253 > > | _ => fun _ => null () 00:00:36 verbose #1254 > > 00:00:36 verbose #1255 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:36 verbose #1256 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:36 verbose #1257 > > │ ### format_hex' │ 00:00:36 verbose #1258 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:36 verbose #1259 > > 00:00:36 verbose #1260 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:36 verbose #1261 > > inl format_hex' x : std_string = 00:00:36 verbose #1262 > > !\\(x, $'"format\!(\\\"{:02x}\\\", $0)"') 00:00:36 verbose #1263 > > 00:00:36 verbose #1264 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:36 verbose #1265 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:36 verbose #1266 > > │ ### format'' │ 00:00:36 verbose #1267 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:36 verbose #1268 > > 00:00:36 verbose #1269 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:36 verbose #1270 > > inl format'' (format : string) : std_string = 00:00:36 verbose #1271 > > !\($'@@$"format\!(" + !format + ")"') 00:00:36 verbose #1272 > > 00:00:36 verbose #1273 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:36 verbose #1274 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:36 verbose #1275 > > │ ### regex │ 00:00:36 verbose #1276 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:36 verbose #1277 > > 00:00:36 verbose #1278 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:36 verbose #1279 > > nominal regex = 00:00:36 verbose #1280 > > `( 00:00:36 verbose #1281 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:36 verbose #1282 > > Fable.Core.Emit(\"regex::Regex\")>]]\n#endif\ntype regex_Regex = class end" 00:00:36 verbose #1283 > > $'' : $'regex_Regex' 00:00:36 verbose #1284 > > ) 00:00:36 verbose #1285 > > 00:00:36 verbose #1286 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:36 verbose #1287 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:36 verbose #1288 > > │ ### regex_error │ 00:00:36 verbose #1289 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:36 verbose #1290 > > 00:00:36 verbose #1291 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:36 verbose #1292 > > nominal regex_error = 00:00:36 verbose #1293 > > `( 00:00:36 verbose #1294 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:36 verbose #1295 > > Fable.Core.Emit(\"regex::Error\")>]]\n#endif\ntype regex_Error = class end" 00:00:36 verbose #1296 > > $'' : $'regex_Error' 00:00:36 verbose #1297 > > ) 00:00:36 verbose #1298 > > 00:00:36 verbose #1299 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:36 verbose #1300 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:36 verbose #1301 > > │ ### new_regex │ 00:00:36 verbose #1302 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:36 verbose #1303 > > 00:00:36 verbose #1304 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:36 verbose #1305 > > inl new_regex (pattern : string) : resultm.result' regex regex_error = 00:00:36 verbose #1306 > > !\\(pattern, $'$"regex::Regex::new(&$0)"') 00:00:36 verbose #1307 > > 00:00:36 verbose #1308 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:36 verbose #1309 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:36 verbose #1310 > > │ ### captures │ 00:00:36 verbose #1311 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:36 verbose #1312 > > 00:00:36 verbose #1313 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:36 verbose #1314 > > nominal regex_captures t = 00:00:36 verbose #1315 > > `( 00:00:36 verbose #1316 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:36 verbose #1317 > > Fable.Core.Emit(\"regex::Captures<$0>\")>]]\n#endif\ntype regex_Captures<'T> = 00:00:36 verbose #1318 > > class end" 00:00:36 verbose #1319 > > $'' : $'regex_Captures<`t>' 00:00:36 verbose #1320 > > ) 00:00:36 verbose #1321 > > 00:00:36 verbose #1322 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:36 verbose #1323 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:36 verbose #1324 > > │ ### regex_capture_matches │ 00:00:36 verbose #1325 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:36 verbose #1326 > > 00:00:36 verbose #1327 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:36 verbose #1328 > > nominal regex_capture_matches = 00:00:36 verbose #1329 > > `( 00:00:36 verbose #1330 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:36 verbose #1331 > > Fable.Core.Emit(\"regex::CaptureMatches\")>]]\n#endif\ntype regex_CaptureMatches 00:00:36 verbose #1332 > > = class end" 00:00:36 verbose #1333 > > $'' : $'regex_CaptureMatches' 00:00:36 verbose #1334 > > ) 00:00:36 verbose #1335 > > 00:00:36 verbose #1336 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:36 verbose #1337 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:36 verbose #1338 > > │ ### regex_capture_names │ 00:00:36 verbose #1339 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:36 verbose #1340 > > 00:00:36 verbose #1341 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:36 verbose #1342 > > nominal regex_capture_names = 00:00:36 verbose #1343 > > `( 00:00:36 verbose #1344 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:36 verbose #1345 > > Fable.Core.Emit(\"regex::CaptureNames\")>]]\n#endif\ntype regex_CaptureNames = 00:00:36 verbose #1346 > > class end" 00:00:36 verbose #1347 > > $'' : $'regex_CaptureNames' 00:00:36 verbose #1348 > > ) 00:00:36 verbose #1349 > > 00:00:36 verbose #1350 > > inl regex_capture_names (regex : regex) : regex_capture_names = 00:00:36 verbose #1351 > > !\\(regex, $'$"$0.capture_names()"') 00:00:36 verbose #1352 > > 00:00:36 verbose #1353 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:36 verbose #1354 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:36 verbose #1355 > > │ ### match' │ 00:00:36 verbose #1356 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:36 verbose #1357 > > 00:00:36 verbose #1358 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:36 verbose #1359 > > nominal match' = 00:00:36 verbose #1360 > > `( 00:00:36 verbose #1361 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:36 verbose #1362 > > Fable.Core.Emit(\"regex::Match\")>]]\n#endif\ntype regex_Match = class end" 00:00:36 verbose #1363 > > $'' : $'regex_Match' 00:00:36 verbose #1364 > > ) 00:00:37 verbose #1365 > > 00:00:37 verbose #1366 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:37 verbose #1367 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:37 verbose #1368 > > │ ### regex_captures_iter │ 00:00:37 verbose #1369 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:37 verbose #1370 > > 00:00:37 verbose #1371 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:37 verbose #1372 > > inl regex_captures_iter (s : rust.static_ref (rust.mut' std_string)) (regex : 00:00:37 verbose #1373 > > regex) : regex_capture_matches = 00:00:37 verbose #1374 > > !\($'$"!regex.captures_iter(!s)"') 00:00:37 verbose #1375 > > 00:00:37 verbose #1376 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:37 verbose #1377 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:37 verbose #1378 > > │ ### regex_captures │ 00:00:37 verbose #1379 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:37 verbose #1380 > > 00:00:37 verbose #1381 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:37 verbose #1382 > > inl regex_captures (s : string) (regex : regex) : am'.vec (mapm.hash_map string 00:00:37 verbose #1383 > > string) = 00:00:37 verbose #1384 > > // inl s = join s 00:00:37 verbose #1385 > > // !\\(regex, $'$"$0.captures_iter(&*!s).map(|caps| 00:00:37 verbose #1386 > > $0.capture_names().map(|x| x.and_then(|n| Some((n, 00:00:37 verbose #1387 > > caps.name(n)?.as_str())))).flatten().collect()).collect()"') 00:00:37 verbose #1388 > > 00:00:37 verbose #1389 > > inl s = s |> to_std_string 00:00:37 verbose #1390 > > fun () => 00:00:37 verbose #1391 > > inl matches = 00:00:37 verbose #1392 > > inl s = s |> rust.new_box |> rust.box_leak 00:00:37 verbose #1393 > > regex |> regex_captures_iter s 00:00:37 verbose #1394 > > 00:00:37 verbose #1395 > > (!\($'"true; let _regex_captures : Vec<_> = !matches.map(|x| { //"') : 00:00:37 verbose #1396 > > bool) |> ignore 00:00:37 verbose #1397 > > 00:00:37 verbose #1398 > > inl fn (match' : rust.static_ref (rust.mut' (regex_captures 00:00:37 verbose #1399 > > rust.static_lifetime))) : mapm.hash_map string string = 00:00:37 verbose #1400 > > 00:00:37 verbose #1401 > > inl names = regex |> regex_capture_names 00:00:37 verbose #1402 > > 00:00:37 verbose #1403 > > (!\($'"true; let _regex_captures : std::collections::HashMap<_, _> = 00:00:37 verbose #1404 > > !names.map(|x| { //"') : bool) |> ignore 00:00:37 verbose #1405 > > 00:00:37 verbose #1406 > > inl fn (n : string) : pair string string = 00:00:37 verbose #1407 > > inl n' = n |> rust.clone 00:00:37 verbose #1408 > > 00:00:37 verbose #1409 > > new_pair n' !\\(n, $'$"!match'.name(&$0).map(|x| 00:00:37 verbose #1410 > > x.as_str()).unwrap_or(\\\"\\\").to_string().into()"') 00:00:37 verbose #1411 > > 00:00:37 verbose #1412 > > (!\\(fn !\($'"x.unwrap_or(\\\"\\\").to_string().into()"'), $'"true; 00:00:37 verbose #1413 > > $0 }).map(|x| std::sync::Arc::try_unwrap(x).unwrap_or_else(|x| 00:00:37 verbose #1414 > > (*x).clone())).collect()"') : bool) |> ignore 00:00:37 verbose #1415 > > 00:00:37 verbose #1416 > > !\($'"_regex_captures"') 00:00:37 verbose #1417 > > 00:00:37 verbose #1418 > > inl x = 00:00:37 verbose #1419 > > !\($'$"x"') 00:00:37 verbose #1420 > > |> rust.new_box 00:00:37 verbose #1421 > > |> rust.box_leak 00:00:37 verbose #1422 > > 00:00:37 verbose #1423 > > (!\\(fn x, $'"true; $0 }).collect::<Vec<_>>()"') : bool) |> ignore 00:00:37 verbose #1424 > > 00:00:37 verbose #1425 > > !\($'"_regex_captures"') 00:00:37 verbose #1426 > > 00:00:37 verbose #1427 > > |> rust.capture_move 00:00:37 verbose #1428 > > 00:00:37 verbose #1429 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:37 verbose #1430 > > //// test 00:00:37 verbose #1431 > > ///! rust -d regex 00:00:37 verbose #1432 > > 00:00:37 verbose #1433 > > "fable-library-ts\\.(?<a>[[\\d.]]+)$" 00:00:37 verbose #1434 > > |> new_regex 00:00:37 verbose #1435 > > |> resultm.unwrap' 00:00:37 verbose #1436 > > |> regex_captures "fable_modules/fable-library-ts.4.17.0" 00:00:37 verbose #1437 > > |> am'.vec_map (mapm.to_vec >> am'.vec_sort_by_key id) 00:00:37 verbose #1438 > > |> sm'.format_debug 00:00:37 verbose #1439 > > |> _assert_eq ( 00:00:37 verbose #1440 > > ;[[ 00:00:37 verbose #1441 > > ;[[ "", ""; "a", "4.17.0" ]] 00:00:37 verbose #1442 > > |> am'.to_vec 00:00:37 verbose #1443 > > ]] 00:00:37 verbose #1444 > > |> am'.to_vec 00:00:37 verbose #1445 > > |> sm'.format_debug 00:00:37 verbose #1446 > > ) 00:00:44 verbose #1447 > > 00:00:44 verbose #1448 > > ╭─[ 7.35s - return value ]─────────────────────────────────────────────────────╮ 00:00:44 verbose #1449 > > │ __assert_eq / actual: "[[("", ""), ("a", "4.17.0")]]" / expected: "[[("", │ 00:00:44 verbose #1450 > > │ ""), ("a", "4.17.0")]]" │ 00:00:44 verbose #1451 > > │ │ 00:00:44 verbose #1452 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:44 verbose #1453 > > 00:00:44 verbose #1454 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:44 verbose #1455 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:44 verbose #1456 > > │ ### replace_regex' │ 00:00:44 verbose #1457 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:44 verbose #1458 > > 00:00:44 verbose #1459 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:44 verbose #1460 > > inl replace_regex' (pattern : string) (replacement : a i32 string) (s : string) 00:00:44 verbose #1461 > > : string = 00:00:44 verbose #1462 > > run_target_args (fun () => s, pattern, replacement) function 00:00:44 verbose #1463 > > | Rust (Native) => fun s, pattern, replacement => 00:00:44 verbose #1464 > > inl regex = pattern |> new_regex |> resultm.unwrap' 00:00:44 verbose #1465 > > !\\((regex, #s, replacement), $'$"$0.replace_all($1, &*$2)"') 00:00:44 verbose #1466 > > |> cow_to_std_string 00:00:44 verbose #1467 > > |> from_std_string 00:00:44 verbose #1468 > > | _ => fun _ => null () 00:00:44 verbose #1469 > > 00:00:44 verbose #1470 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:44 verbose #1471 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:44 verbose #1472 > > │ ### serialize │ 00:00:44 verbose #1473 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:44 verbose #1474 > > 00:00:44 verbose #1475 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:44 verbose #1476 > > inl serialize forall t. (x : t) : resultm.result' std_string json_error = 00:00:44 verbose #1477 > > !\($'"serde_json::to_string(&!x)"') 00:00:44 verbose #1478 > > 00:00:44 verbose #1479 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:44 verbose #1480 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:44 verbose #1481 > > │ ### deserialize │ 00:00:44 verbose #1482 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:44 verbose #1483 > > 00:00:44 verbose #1484 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:44 verbose #1485 > > inl deserialize forall t. (json : string) : resultm.result' t std_string = 00:00:44 verbose #1486 > > inl json = join json 00:00:44 verbose #1487 > > inl json = json |> as_str 00:00:44 verbose #1488 > > !\($'"serde_json::from_str(&!json)"') 00:00:44 verbose #1489 > > |> resultm.map_error' fun (x : json_error) => x |> format' 00:00:44 verbose #1490 > > 00:00:44 verbose #1491 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:44 verbose #1492 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:44 verbose #1493 > > │ ### borsh_deserialize │ 00:00:44 verbose #1494 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:44 verbose #1495 > > 00:00:44 verbose #1496 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:44 verbose #1497 > > inl borsh_deserialize forall t. (data : array_base u8) : resultm.result' t 00:00:44 verbose #1498 > > std_string = 00:00:44 verbose #1499 > > inl data = data |> am'.as_slice 00:00:44 verbose #1500 > > (!\($'"true; let mut !data = !data"') : bool) |> ignore 00:00:44 verbose #1501 > > inl result = !\($'"borsh::BorshDeserialize::deserialize(&mut !data)"') 00:00:44 verbose #1502 > > result 00:00:44 verbose #1503 > > |> resultm.map_error' fun (x : borsh_io_error) => x |> format' 00:00:44 verbose #1504 > > 00:00:44 verbose #1505 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:44 verbose #1506 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:44 verbose #1507 > > │ ### deserialize_vec │ 00:00:44 verbose #1508 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:44 verbose #1509 > > 00:00:44 verbose #1510 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:44 verbose #1511 > > inl deserialize_vec (value : json_value) : resultm.result' (am'.vec u8) 00:00:44 verbose #1512 > > std_string = 00:00:44 verbose #1513 > > inl value = join value 00:00:44 verbose #1514 > > !\($'"serde_json::from_value(!value)"') 00:00:44 verbose #1515 > > |> resultm.map_error' fun (x : json_error) => x |> format' 00:00:45 verbose #1516 > > 00:00:45 verbose #1517 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:45 verbose #1518 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:45 verbose #1519 > > │ ### encode_uri_component │ 00:00:45 verbose #1520 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:45 verbose #1521 > > 00:00:45 verbose #1522 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:45 verbose #1523 > > inl encode_uri_component (s : std_string) : js_string = 00:00:45 verbose #1524 > > !\($'"js_sys::encode_uri_component(&!s)"') 00:00:45 verbose #1525 > > 00:00:45 verbose #1526 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:45 verbose #1527 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:45 verbose #1528 > > │ ### strip_prefix │ 00:00:45 verbose #1529 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:45 verbose #1530 > > 00:00:45 verbose #1531 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:45 verbose #1532 > > inl strip_prefix (prefix : char) (s : std_string) : optionm'.option' (rust.ref 00:00:45 verbose #1533 > > str) = 00:00:45 verbose #1534 > > inl s = join s 00:00:45 verbose #1535 > > !\($'"!s.strip_prefix(!prefix)"') 00:00:45 verbose #1536 > > 00:00:45 verbose #1537 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:45 verbose #1538 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:45 verbose #1539 > > │ ### str_from_utf8 │ 00:00:45 verbose #1540 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:45 verbose #1541 > > 00:00:45 verbose #1542 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:45 verbose #1543 > > inl str_from_utf8 (bytes : rust.ref (am'.slice u8)) : resultm.result' (rust.ref 00:00:45 verbose #1544 > > str) utf8_error = 00:00:45 verbose #1545 > > !\\(bytes, $'"std::str::from_utf8($0)"') 00:00:45 verbose #1546 > > 00:00:45 verbose #1547 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:45 verbose #1548 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:45 verbose #1549 > > │ ### string_from_utf8 │ 00:00:45 verbose #1550 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:45 verbose #1551 > > 00:00:45 verbose #1552 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:45 verbose #1553 > > inl string_from_utf8 (bytes : am'.vec u8) : resultm.result' std_string 00:00:45 verbose #1554 > > from_utf8_error = 00:00:45 verbose #1555 > > inl bytes = join bytes 00:00:45 verbose #1556 > > !\\(bytes, $'"std::string::String::from_utf8($0)"') 00:00:45 verbose #1557 > > 00:00:45 verbose #1558 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:45 verbose #1559 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:45 verbose #1560 > > │ ### base64_decode │ 00:00:45 verbose #1561 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:45 verbose #1562 > > 00:00:45 verbose #1563 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:45 verbose #1564 > > inl base64_decode (s : std_string) : result std_string std_string = 00:00:45 verbose #1565 > > fun () => 00:00:45 verbose #1566 > > inl s = join s 00:00:45 verbose #1567 > > inl bytes : resultm.result' (am'.vec u8) base64_decode_error = 00:00:45 verbose #1568 > > 00:00:45 verbose #1569 > > !\($'"base64::Engine::decode(&base64::engine::general_purpose::STANDARD, !s)"') 00:00:45 verbose #1570 > > bytes 00:00:45 verbose #1571 > > |> resultm.map_error' format' 00:00:45 verbose #1572 > > |> resultm.try' 00:00:45 verbose #1573 > > |> string_from_utf8 00:00:45 verbose #1574 > > |> resultm.map_error' format' 00:00:45 verbose #1575 > > |> fun x => 00:00:45 verbose #1576 > > join x () 00:00:45 verbose #1577 > > |> resultm.unbox 00:00:45 verbose #1578 > > 00:00:45 verbose #1579 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:45 verbose #1580 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:45 verbose #1581 > > │ ### encoding' │ 00:00:45 verbose #1582 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:45 verbose #1583 > > 00:00:45 verbose #1584 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:45 verbose #1585 > > nominal encoding' = 00:00:45 verbose #1586 > > `( 00:00:45 verbose #1587 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:45 verbose #1588 > > Fable.Core.Emit(\"encoding_rs::Encoding\")>]]\n#endif\ntype encoding_rs_Encoding 00:00:45 verbose #1589 > > = class end" 00:00:45 verbose #1590 > > $'' : $'encoding_rs_Encoding' 00:00:45 verbose #1591 > > ) 00:00:45 verbose #1592 > > 00:00:45 verbose #1593 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:45 verbose #1594 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:45 verbose #1595 > > │ ### encoding_utf8' │ 00:00:45 verbose #1596 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:45 verbose #1597 > > 00:00:45 verbose #1598 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:45 verbose #1599 > > inl encoding_utf8' () : rust.ref encoding' = 00:00:45 verbose #1600 > > !\($'"encoding_rs::UTF_8"') 00:00:45 verbose #1601 > > 00:00:45 verbose #1602 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:45 verbose #1603 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:45 verbose #1604 > > │ ### encoding_1252 │ 00:00:45 verbose #1605 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:45 verbose #1606 > > 00:00:45 verbose #1607 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:45 verbose #1608 > > inl encoding_1252' () : rust.ref encoding' = 00:00:45 verbose #1609 > > !\($'"encoding_rs::WINDOWS_1252"') 00:00:46 verbose #1610 > > 00:00:46 verbose #1611 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:46 verbose #1612 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:46 verbose #1613 > > │ ### encoding_encode │ 00:00:46 verbose #1614 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:46 verbose #1615 > > 00:00:46 verbose #1616 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:46 verbose #1617 > > inl encoding_encode' (encoding : rust.ref encoding') (text : string) : rust.cow 00:00:46 verbose #1618 > > (am'.slice u8) = 00:00:46 verbose #1619 > > !\\((encoding, text), $'"$0.encode(&*$1).0"') 00:00:46 verbose #1620 > > 00:00:46 verbose #1621 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:46 verbose #1622 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:46 verbose #1623 > > │ ### utf8_decode │ 00:00:46 verbose #1624 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:46 verbose #1625 > > 00:00:46 verbose #1626 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:46 verbose #1627 > > inl utf8_decode (data : am'.vec u8) : resultm.result' std_string (rust.cow str) 00:00:46 verbose #1628 > > = 00:00:46 verbose #1629 > > !\($'$"encoding::Encoding::decode(encoding::all::UTF_8, &!data, 00:00:46 verbose #1630 > > encoding::DecoderTrap::Replace)"') 00:00:46 verbose #1631 > > 00:00:46 verbose #1632 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:46 verbose #1633 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:46 verbose #1634 > > │ ### windows │ 00:00:46 verbose #1635 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:46 verbose #1636 > > 00:00:46 verbose #1637 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:46 verbose #1638 > > nominal windows t = 00:00:46 verbose #1639 > > `( 00:00:46 verbose #1640 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:46 verbose #1641 > > Fable.Core.Emit(\"std::slice::Windows<$0>\")>]]\n#endif\ntype 00:00:46 verbose #1642 > > std_slice_Windows<'T> = class end" 00:00:46 verbose #1643 > > $'' : $'std_slice_Windows<`t>' 00:00:46 verbose #1644 > > ) 00:00:46 verbose #1645 > > 00:00:46 verbose #1646 > > inl windows (len : unativeint) (source : am'.vec u8) : windows u8 = 00:00:46 verbose #1647 > > inl source = source |> rust.new_box |> rust.box_leak 00:00:46 verbose #1648 > > // inl source' = source |> rust.clone 00:00:46 verbose #1649 > > inl result = !\\(len, $'"<[[_]]>::windows(!source, $0)"') 00:00:46 verbose #1650 > > // source |> rust.drop 00:00:46 verbose #1651 > > result 00:00:46 verbose #1652 > > 00:00:46 verbose #1653 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:46 verbose #1654 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:46 verbose #1655 > > │ ### any │ 00:00:46 verbose #1656 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:46 verbose #1657 > > 00:00:46 verbose #1658 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:46 verbose #1659 > > inl any forall t. (fn : string -> bool) (source : windows t) : bool = 00:00:46 verbose #1660 > > (!\($'"true; let mut !source = !source"') : bool) |> ignore 00:00:46 verbose #1661 > > inl fn' x = 00:00:46 verbose #1662 > > x 00:00:46 verbose #1663 > > |> str_from_utf8 00:00:46 verbose #1664 > > |> resultm.unwrap_or' #"" 00:00:46 verbose #1665 > > |> ref_to_std_string 00:00:46 verbose #1666 > > |> from_std_string 00:00:46 verbose #1667 > > |> fn 00:00:46 verbose #1668 > > !\\(fn', $'"!source.any(move |x| $0(x))"') 00:00:46 verbose #1669 > > 00:00:46 verbose #1670 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:46 verbose #1671 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:46 verbose #1672 > > │ ### slice_contains │ 00:00:46 verbose #1673 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:46 verbose #1674 > > 00:00:46 verbose #1675 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:46 verbose #1676 > > inl slice_contains (text : string) (source : am'.vec u8) : bool = 00:00:46 verbose #1677 > > fun () => 00:00:46 verbose #1678 > > inl source = join source 00:00:46 verbose #1679 > > source 00:00:46 verbose #1680 > > |> windows (text |> length |> (fun x => x : i32) |> convert) 00:00:46 verbose #1681 > > |> any ((=.) text) 00:00:46 verbose #1682 > > |> fun x => join x () 00:00:46 verbose #1683 > > 00:00:46 verbose #1684 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:46 verbose #1685 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:46 verbose #1686 > > │ ### as_bytes │ 00:00:46 verbose #1687 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:46 verbose #1688 > > 00:00:46 verbose #1689 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:46 verbose #1690 > > inl as_bytes (text : string) : rust.ref (am'.slice u8) = 00:00:46 verbose #1691 > > inl text = join text 00:00:46 verbose #1692 > > !\($'"!text.as_bytes()"') 00:00:46 verbose #1693 > > 00:00:46 verbose #1694 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:46 verbose #1695 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:46 verbose #1696 > > │ ## python │ 00:00:46 verbose #1697 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:46 verbose #1698 > > 00:00:46 verbose #1699 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:46 verbose #1700 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:46 verbose #1701 > > │ ### encode_utf8 │ 00:00:46 verbose #1702 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:46 verbose #1703 > > 00:00:46 verbose #1704 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:46 verbose #1705 > > inl encode_utf8 (s : string) : string = 00:00:46 verbose #1706 > > inl encoding = "utf-8" 00:00:46 verbose #1707 > > backend_switch { 00:00:46 verbose #1708 > > Fsharp = fun () => 00:00:46 verbose #1709 > > open python_operators 00:00:46 verbose #1710 > > !\\((s, encoding), $'"$0.encode($1)"') : string 00:00:46 verbose #1711 > > Python = fun () => 00:00:46 verbose #1712 > > $'!s.encode(!encoding)' : string 00:00:46 verbose #1713 > > } 00:00:46 verbose #1714 > > 00:00:46 verbose #1715 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:46 verbose #1716 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:46 verbose #1717 > > │ ## sm' │ 00:00:46 verbose #1718 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:46 verbose #1719 > > 00:00:46 verbose #1720 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:46 verbose #1721 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:46 verbose #1722 > > │ ### contains │ 00:00:46 verbose #1723 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:46 verbose #1724 > > 00:00:46 verbose #1725 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:46 verbose #1726 > > inl contains (value : string) (s : string) : bool = 00:00:46 verbose #1727 > > backend_switch { 00:00:46 verbose #1728 > > Fsharp = fun () => $'!s.Contains !value ' : bool 00:00:46 verbose #1729 > > Python = fun () => $'!value in !s ' : bool 00:00:46 verbose #1730 > > } 00:00:47 verbose #1731 > > 00:00:47 verbose #1732 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:47 verbose #1733 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:47 verbose #1734 > > │ ### to_string result t u │ 00:00:47 verbose #1735 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:47 verbose #1736 > > 00:00:47 verbose #1737 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:47 verbose #1738 > > instance to_string result t u = fun x => 00:00:47 verbose #1739 > > real 00:00:47 verbose #1740 > > open rust 00:00:47 verbose #1741 > > typecase (t * u) with 00:00:47 verbose #1742 > > | string * string => 00:00:47 verbose #1743 > > match x with 00:00:47 verbose #1744 > > | Ok x => x 00:00:47 verbose #1745 > > | Error x => $'"sm\'.to_string result / Error: " + !x + ""' : string 00:00:47 verbose #1746 > > | std_string * std_string => 00:00:47 verbose #1747 > > match x with 00:00:47 verbose #1748 > > | Ok x => from_std_string x 00:00:47 verbose #1749 > > | Error x => $'"sm\'.to_string result / Error: " + string !x + ""' : 00:00:47 verbose #1750 > > string 00:00:47 verbose #1751 > > | _ => obj_to_string `u x 00:00:47 verbose #1752 > > 00:00:47 verbose #1753 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:47 verbose #1754 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:47 verbose #1755 > > │ ### format_exception │ 00:00:47 verbose #1756 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:47 verbose #1757 > > 00:00:47 verbose #1758 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:47 verbose #1759 > > inl format_exception (ex : exn) : string = 00:00:47 verbose #1760 > > run_target function 00:00:47 verbose #1761 > > | Fsharp (Native) => fun () => $'$"{!ex.GetType ()}: {!ex.Message}"' 00:00:47 verbose #1762 > > | _ => fun () => ex |> format_debug 00:00:47 verbose #1763 > > 00:00:47 verbose #1764 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:47 verbose #1765 > > //// test 00:00:47 verbose #1766 > > ///! fsharp 00:00:47 verbose #1767 > > ///! rust 00:00:47 verbose #1768 > > ///! typescript 00:00:47 verbose #1769 > > ///! python 00:00:47 verbose #1770 > > 00:00:47 verbose #1771 > > fun () => failwith "test" 00:00:47 verbose #1772 > > |> _throws 00:00:47 verbose #1773 > > |> optionm.value 00:00:47 verbose #1774 > > |> sm'.format_exception 00:00:47 verbose #1775 > > |> _assert_eq (run_target function 00:00:47 verbose #1776 > > | Fsharp _ => fun () => "System.Exception: test" 00:00:47 verbose #1777 > > | Rust _ => fun () => "Exception { message: \"test\" }" 00:00:47 verbose #1778 > > | TypeScript _ => fun () => "Error: test" 00:00:47 verbose #1779 > > | Python _ => fun () => "test" 00:00:47 verbose #1780 > > | _ => fun () => null () 00:00:47 verbose #1781 > > ) 00:00:58 verbose #1782 > > 00:00:58 verbose #1783 > > ╭─[ 11.40s - return value ]────────────────────────────────────────────────────╮ 00:00:58 verbose #1784 > > │ .rs output: │ 00:00:58 verbose #1785 > > │ __assert_eq / actual: "Exception { message: "test" }" / expected: "Exception │ 00:00:58 verbose #1786 > > │ { message: "test" }" │ 00:00:58 verbose #1787 > > │ │ 00:00:58 verbose #1788 > > │ .ts output: │ 00:00:58 verbose #1789 > > │ __assert_eq / actual: Error: test / expected: Error: test │ 00:00:58 verbose #1790 > > │ │ 00:00:58 verbose #1791 > > │ .py output: │ 00:00:58 verbose #1792 > > │ __assert_eq / actual: test / expected: test │ 00:00:58 verbose #1793 > > │ │ 00:00:58 verbose #1794 > > │ │ 00:00:58 verbose #1795 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:58 verbose #1796 > > 00:00:58 verbose #1797 > > ╭─[ 11.40s - stdout ]──────────────────────────────────────────────────────────╮ 00:00:58 verbose #1798 > > │ .fsx output: │ 00:00:58 verbose #1799 > > │ __assert_eq / actual: "System.Exception: test" / expected: │ 00:00:58 verbose #1800 > > │ "System.Exception: test" │ 00:00:58 verbose #1801 > > │ │ 00:00:58 verbose #1802 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:58 verbose #1803 > > 00:00:58 verbose #1804 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:58 verbose #1805 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:58 verbose #1806 > > │ ### range │ 00:00:58 verbose #1807 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:58 verbose #1808 > > 00:00:58 verbose #1809 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:58 verbose #1810 > > inl range forall t. (start : am'.range t) (end : am'.range t) s = 00:00:58 verbose #1811 > > inl start, end = 00:00:58 verbose #1812 > > match start, end with 00:00:58 verbose #1813 > > | Start start, End fn => 00:00:58 verbose #1814 > > start, s |> length' |> fn 00:00:58 verbose #1815 > > | End start_fn, End end_fn => 00:00:58 verbose #1816 > > inl len = s |> length' 00:00:58 verbose #1817 > > start_fn len, end_fn len 00:00:58 verbose #1818 > > s |> slice (start |> i32) (end |> i32) 00:00:58 verbose #1819 > > 00:00:58 verbose #1820 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:58 verbose #1821 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:58 verbose #1822 > > │ ### concat_list │ 00:00:58 verbose #1823 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:58 verbose #1824 > > 00:00:58 verbose #1825 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:58 verbose #1826 > > inl concat_list s list = 00:00:58 verbose #1827 > > list 00:00:58 verbose #1828 > > |> listm'.box 00:00:58 verbose #1829 > > |> seq.of_list' 00:00:58 verbose #1830 > > |> concat s 00:00:59 verbose #1831 > > 00:00:59 verbose #1832 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:59 verbose #1833 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:59 verbose #1834 > > │ ### ellipsis_end │ 00:00:59 verbose #1835 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:59 verbose #1836 > > 00:00:59 verbose #1837 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:59 verbose #1838 > > let ellipsis_end (max : i64) (s : string) = 00:00:59 verbose #1839 > > inl len = sm.length s 00:00:59 verbose #1840 > > if len <= max 00:00:59 verbose #1841 > > then s 00:00:59 verbose #1842 > > else 00:00:59 verbose #1843 > > inl half = f64 max / 2 00:00:59 verbose #1844 > > inl start_half = half |> math.ceil |> i64 00:00:59 verbose #1845 > > inl end_half = half |> math.floor |> i64 00:00:59 verbose #1846 > > inl start = s |> slice 0 (start_half - 1) 00:00:59 verbose #1847 > > inl end = s |> slice (len - end_half) (len - 1) 00:00:59 verbose #1848 > > (a ;[[start; "..."; end]] : _ i32 _) 00:00:59 verbose #1849 > > |> seq.of_array 00:00:59 verbose #1850 > > |> concat "" 00:00:59 verbose #1851 > > 00:00:59 verbose #1852 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:59 verbose #1853 > > //// test 00:00:59 verbose #1854 > > 00:00:59 verbose #1855 > > "12345" 00:00:59 verbose #1856 > > |> ellipsis_end 2 00:00:59 verbose #1857 > > |> _assert_eq "1...5" 00:00:59 verbose #1858 > > 00:00:59 verbose #1859 > > "12345" 00:00:59 verbose #1860 > > |> ellipsis_end 3 00:00:59 verbose #1861 > > |> _assert_eq "12...5" 00:00:59 verbose #1862 > > 00:00:59 verbose #1863 > > "1234567" 00:00:59 verbose #1864 > > |> ellipsis_end 4 00:00:59 verbose #1865 > > |> _assert_eq "12...67" 00:00:59 verbose #1866 > > 00:00:59 verbose #1867 > > ╭─[ 214.22ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:59 verbose #1868 > > │ __assert_eq / actual: "1...5" / expected: "1...5" │ 00:00:59 verbose #1869 > > │ __assert_eq / actual: "12...5" / expected: "12...5" │ 00:00:59 verbose #1870 > > │ __assert_eq / actual: "12...67" / expected: "12...67" │ 00:00:59 verbose #1871 > > │ │ 00:00:59 verbose #1872 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:59 verbose #1873 > > 00:00:59 verbose #1874 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:59 verbose #1875 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:59 verbose #1876 > > │ ### format_ellipsis │ 00:00:59 verbose #1877 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:59 verbose #1878 > > 00:00:59 verbose #1879 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:59 verbose #1880 > > inl format_ellipsis s = 00:00:59 verbose #1881 > > s 00:00:59 verbose #1882 > > |> format_debug 00:00:59 verbose #1883 > > |> ellipsis_end 400 00:00:59 verbose #1884 > > 00:00:59 verbose #1885 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:59 verbose #1886 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:59 verbose #1887 > > │ ### replace_regex │ 00:00:59 verbose #1888 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:59 verbose #1889 > > 00:00:59 verbose #1890 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:59 verbose #1891 > > inl replace_regex (pattern : string) (replacement : string) (s : string) : 00:00:59 verbose #1892 > > string = 00:00:59 verbose #1893 > > run_target_args (fun () => s, pattern, replacement) function 00:00:59 verbose #1894 > > | Fsharp (Native) => fun s, pattern, replacement => 00:00:59 verbose #1895 > > $'System.Text.RegularExpressions.Regex.Replace (!s, !pattern, 00:00:59 verbose #1896 > > !replacement)' 00:00:59 verbose #1897 > > | Rust (Native) => fun s, pattern, replacement => 00:00:59 verbose #1898 > > inl regex = pattern |> new_regex |> resultm.unwrap' 00:00:59 verbose #1899 > > inl s = join s 00:00:59 verbose #1900 > > !\\((regex, s, replacement), $'$"$0.replace_all(&*$1, &*$2)"') 00:00:59 verbose #1901 > > |> cow_to_std_string 00:00:59 verbose #1902 > > |> from_std_string 00:00:59 verbose #1903 > > | _ => fun _ => null () 00:00:59 verbose #1904 > > 00:00:59 verbose #1905 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:59 verbose #1906 > > //// test 00:00:59 verbose #1907 > > ///! fsharp 00:00:59 verbose #1908 > > ///! rust -d regex 00:00:59 verbose #1909 > > 00:00:59 verbose #1910 > > " 123" 00:00:59 verbose #1911 > > |> replace_regex "\\s\\w2" "" 00:00:59 verbose #1912 > > |> _assert_eq "3" 00:01:06 verbose #1913 > > 00:01:06 verbose #1914 > > ╭─[ 7.05s - return value ]─────────────────────────────────────────────────────╮ 00:01:06 verbose #1915 > > │ .rs output (rust -d regex): │ 00:01:06 verbose #1916 > > │ __assert_eq / actual: "3" / expected: "3" │ 00:01:06 verbose #1917 > > │ │ 00:01:06 verbose #1918 > > │ │ 00:01:06 verbose #1919 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:06 verbose #1920 > > 00:01:06 verbose #1921 > > ╭─[ 7.05s - stdout ]───────────────────────────────────────────────────────────╮ 00:01:06 verbose #1922 > > │ .fsx output: │ 00:01:06 verbose #1923 > > │ __assert_eq / actual: "3" / expected: "3" │ 00:01:06 verbose #1924 > > │ │ 00:01:06 verbose #1925 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:06 verbose #1926 > > 00:01:06 verbose #1927 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:06 verbose #1928 > > //// test 00:01:06 verbose #1929 > > ///! rust -d regex 00:01:06 verbose #1930 > > 00:01:06 verbose #1931 > > " let main args =\n ()\n" 00:01:06 verbose #1932 > > |> replace_regex $'@@"(?P<a> *)(?P<b>let\\s+main\\s+.*?\\s*=)"' 00:01:06 verbose #1933 > > "$a[[<EntryPoint>]]\n$a$b" 00:01:06 verbose #1934 > > |> _assert_eq " [[<EntryPoint>]]\n let main args =\n ()\n" 00:01:13 verbose #1935 > > 00:01:13 verbose #1936 > > ╭─[ 6.94s - return value ]─────────────────────────────────────────────────────╮ 00:01:13 verbose #1937 > > │ __assert_eq / actual: " [<EntryPoint>] │ 00:01:13 verbose #1938 > > │ let main args = │ 00:01:13 verbose #1939 > > │ () │ 00:01:13 verbose #1940 > > │ " / expected: " [<EntryPoint>] │ 00:01:13 verbose #1941 > > │ let main args = │ 00:01:13 verbose #1942 > > │ () │ 00:01:13 verbose #1943 > > │ " │ 00:01:13 verbose #1944 > > │ │ 00:01:13 verbose #1945 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:13 verbose #1946 > > 00:01:13 verbose #1947 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:13 verbose #1948 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:13 verbose #1949 > > │ ## main │ 00:01:13 verbose #1950 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:13 verbose #1951 > > 00:01:13 verbose #1952 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:13 verbose #1953 > > inl main () = 00:01:13 verbose #1954 > > $'let contains x = !contains x' : () 00:01:13 verbose #1955 > > $'let ends_with x = !ends_with x' : () 00:01:13 verbose #1956 > > $'let pad_left x = !pad_left x' : () 00:01:13 verbose #1957 > > $'let pad_right x = !pad_right x' : () 00:01:13 verbose #1958 > > $'let replace x = !replace x' : () 00:01:13 verbose #1959 > > $'let replace_regex x = !replace_regex x' : () 00:01:13 verbose #1960 > > inl slice (a : i32) (b : i32) c = slice a b c 00:01:13 verbose #1961 > > $'let slice x = !slice x' : () 00:01:13 verbose #1962 > > $'let split x = !split x' : () 00:01:13 verbose #1963 > > $'let split_string x = !split_string x' : () 00:01:13 verbose #1964 > > $'let starts_with x = !starts_with x' : () 00:01:13 verbose #1965 > > $'let substring x = !substring x' : () 00:01:13 verbose #1966 > > $'let to_lower x = !to_lower x' : () 00:01:13 verbose #1967 > > $'let to_upper x = !to_upper x' : () 00:01:13 verbose #1968 > > $'let trim x = !trim x' : () 00:01:13 verbose #1969 > > inl trim_end x = (a x : _ int _) |> am'.to_list' |> listm'.unbox |> trim_end 00:01:13 verbose #1970 > > $'let trim_end x = !trim_end x' : () 00:01:13 verbose #1971 > > inl trim_start x = (a x : _ int _) |> am'.to_list' |> listm'.unbox |> 00:01:13 verbose #1972 > > trim_start 00:01:13 verbose #1973 > > $'let trim_start x = !trim_start x' : () 00:01:13 verbose #1974 > > $'let ellipsis x = !ellipsis x' : () 00:01:13 verbose #1975 > > $'let ellipsis_end x = !ellipsis_end x' : () 00:01:13 verbose #1976 > > $'let format_exception x = !format_exception x' : () 00:01:13 verbose #1977 > > $'let concat_array_trailing x = !concat_array_trailing x' : () 00:01:13 verbose #1978 > > inl concat a (b : seq.seq' string) = concat a b 00:01:13 verbose #1979 > > $'let concat x = !concat x' : () 00:01:13 verbose #1980 > > $'let join\' x = !join' x' : () 00:01:13 verbose #1981 > > $'let to_char_array x = !to_char_array x' : () 00:01:13 verbose #1982 > > 00:01:13 verbose #1983 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:13 verbose #1984 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:13 verbose #1985 > > │ ## rust │ 00:01:13 verbose #1986 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:13 verbose #1987 > > 00:01:13 verbose #1988 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:13 verbose #1989 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:13 verbose #1990 > > │ ### to_string std_string │ 00:01:13 verbose #1991 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:13 verbose #1992 > > 00:01:13 verbose #1993 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:13 verbose #1994 > > open rust 00:01:13 verbose #1995 > > instance to_string std_string = from_std_string 00:01:14 verbose #1996 > 00:01:13 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 109595 } 00:01:14 verbose #1997 > 00:01:13 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:01:14 verbose #1998 > "nbconvert", 00:01:14 verbose #1999 > "/home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib.ipynb", 00:01:14 verbose #2000 > "--to", 00:01:14 verbose #2001 > "html", 00:01:14 verbose #2002 > "--HTMLExporter.theme=dark", 00:01:14 verbose #2003 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:14 verbose #2004 > 00:01:14 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib.ipynb to html 00:01:14 verbose #2005 > 00:01:14 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:01:14 verbose #2006 > 00:01:14 verbose #7 ! validate(nb) 00:01:15 verbose #2007 > 00:01:14 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:01:15 verbose #2008 > 00:01:14 verbose #9 ! return _pygments_highlight( 00:01:16 verbose #2009 > 00:01:15 verbose #10 ! [NbConvertApp] Writing 575293 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib.html 00:01:16 verbose #2010 > 00:01:15 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 890 } 00:01:16 verbose #2011 > 00:01:15 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 890 } 00:01:16 verbose #2012 > 00:01:15 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:01:16 verbose #2013 > "-c", 00:01:16 verbose #2014 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/sm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:01:16 verbose #2015 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/sm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:16 verbose #2016 > 00:01:16 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:01:16 verbose #2017 > 00:01:16 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:01:16 verbose #2018 > 00:01:16 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 110544 } 00:01:16 debug #2019 runtime.execute_with_options_async / { exit_code = 0; output_length = 117335 } 00:01:16 debug #1 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path sm'.dib --retries 3 00:01:16 debug #2020 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path rust/rust.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:16 verbose #2021 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "rust/rust.dib", "--retries", "3"])) } 00:01:16 verbose #2022 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:01:16 verbose #2023 > "repl", 00:01:16 verbose #2024 > "--exit-after-run", 00:01:16 verbose #2025 > "--run", 00:01:16 verbose #2026 > "/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib", 00:01:16 verbose #2027 > "--output-path", 00:01:16 verbose #2028 > "/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.ipynb", 00:01:16 verbose #2029 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:01:18 verbose #2030 > > 00:01:18 verbose #2031 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:18 verbose #2032 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:18 verbose #2033 > > │ # rust │ 00:01:18 verbose #2034 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:20 verbose #2035 > > 00:01:20 verbose #2036 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:20 verbose #2037 > > //// test 00:01:20 verbose #2038 > > 00:01:20 verbose #2039 > > open testing 00:01:21 verbose #2040 > > 00:01:21 verbose #2041 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:21 verbose #2042 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:21 verbose #2043 > > │ ## rust │ 00:01:21 verbose #2044 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:21 verbose #2045 > > 00:01:21 verbose #2046 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:21 verbose #2047 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:21 verbose #2048 > > │ ### any │ 00:01:21 verbose #2049 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:21 verbose #2050 > > 00:01:21 verbose #2051 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:21 verbose #2052 > > nominal any = 00:01:21 verbose #2053 > > `( 00:01:21 verbose #2054 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:01:21 verbose #2055 > > Fable.Core.Emit(\"core::any::Any\")>]]\n#endif\ntype core_any_Any = class end" 00:01:21 verbose #2056 > > $'' : $'core_any_Any' 00:01:21 verbose #2057 > > ) 00:01:21 verbose #2058 > > 00:01:21 verbose #2059 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:21 verbose #2060 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:21 verbose #2061 > > │ ### try │ 00:01:21 verbose #2062 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:21 verbose #2063 > > 00:01:21 verbose #2064 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:21 verbose #2065 > > nominal try t = 00:01:21 verbose #2066 > > `( 00:01:21 verbose #2067 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:01:21 verbose #2068 > > Fable.Core.Emit(\"_\")>]]\n#endif\ntype core_ops_Try<'T> = class end" 00:01:21 verbose #2069 > > $'' : $'core_ops_Try<`t>' 00:01:21 verbose #2070 > > ) 00:01:21 verbose #2071 > > 00:01:21 verbose #2072 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:21 verbose #2073 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:21 verbose #2074 > > │ ### cow │ 00:01:21 verbose #2075 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:21 verbose #2076 > > 00:01:21 verbose #2077 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:21 verbose #2078 > > nominal cow t = 00:01:21 verbose #2079 > > `( 00:01:21 verbose #2080 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:01:21 verbose #2081 > > Fable.Core.Emit(\"std::borrow::Cow<$0>\")>]]\n#endif\ntype std_borrow_Cow<'T> = 00:01:21 verbose #2082 > > class end" 00:01:21 verbose #2083 > > $'' : $'std_borrow_Cow<`t>' 00:01:21 verbose #2084 > > ) 00:01:21 verbose #2085 > > 00:01:21 verbose #2086 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:21 verbose #2087 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:21 verbose #2088 > > │ ### ref_cell │ 00:01:21 verbose #2089 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:21 verbose #2090 > > 00:01:21 verbose #2091 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:21 verbose #2092 > > nominal ref_cell t = 00:01:21 verbose #2093 > > `( 00:01:21 verbose #2094 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:01:21 verbose #2095 > > Fable.Core.Emit(\"std::cell::RefCell<$0>\")>]]\n#endif\ntype 00:01:21 verbose #2096 > > std_cell_RefCell<'T> = class end" 00:01:21 verbose #2097 > > $'' : $'std_cell_RefCell<`t>' 00:01:21 verbose #2098 > > ) 00:01:21 verbose #2099 > > 00:01:21 verbose #2100 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:21 verbose #2101 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:21 verbose #2102 > > │ ### rc │ 00:01:21 verbose #2103 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:21 verbose #2104 > > 00:01:21 verbose #2105 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:21 verbose #2106 > > nominal rc t = 00:01:21 verbose #2107 > > `( 00:01:21 verbose #2108 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:01:21 verbose #2109 > > Fable.Core.Emit(\"std::rc::Rc<$0>\")>]]\n#endif\ntype std_rc_Rc<'T> = class end" 00:01:21 verbose #2110 > > $'' : $'std_rc_Rc<`t>' 00:01:21 verbose #2111 > > ) 00:01:21 verbose #2112 > > 00:01:21 verbose #2113 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:21 verbose #2114 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:21 verbose #2115 > > │ ### lifetime_ref │ 00:01:21 verbose #2116 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:21 verbose #2117 > > 00:01:21 verbose #2118 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:21 verbose #2119 > > nominal lifetime_ref (t : * -> *) u = 00:01:21 verbose #2120 > > `( 00:01:21 verbose #2121 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:01:21 verbose #2122 > > Fable.Core.Emit(\"$0\")>]]\n#endif\ntype LifetimeRef<'T> = class end" 00:01:21 verbose #2123 > > $'' : $'LifetimeRef<`(t u)>' 00:01:21 verbose #2124 > > ) 00:01:22 verbose #2125 > > 00:01:22 verbose #2126 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:22 verbose #2127 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:22 verbose #2128 > > │ ### lifetime_join │ 00:01:22 verbose #2129 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:22 verbose #2130 > > 00:01:22 verbose #2131 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:22 verbose #2132 > > nominal lifetime_join t u = 00:01:22 verbose #2133 > > `( 00:01:22 verbose #2134 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"$0 + 00:01:22 verbose #2135 > > $1\")>]]\n#endif\ntype LifetimeJoin<'T, 'U> = class end" 00:01:22 verbose #2136 > > $'' : $'LifetimeJoin<`t, `u>' 00:01:22 verbose #2137 > > ) 00:01:22 verbose #2138 > > 00:01:22 verbose #2139 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:22 verbose #2140 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:22 verbose #2141 > > │ ### lifetime │ 00:01:22 verbose #2142 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:22 verbose #2143 > > 00:01:22 verbose #2144 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:22 verbose #2145 > > nominal lifetime t u = 00:01:22 verbose #2146 > > `( 00:01:22 verbose #2147 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"$0 00:01:22 verbose #2148 > > $1\")>]]\n#endif\ntype Lifetime<'T, 'U> = class end" 00:01:22 verbose #2149 > > $'' : $'Lifetime<`t, `u>' 00:01:22 verbose #2150 > > ) 00:01:22 verbose #2151 > > 00:01:22 verbose #2152 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:22 verbose #2153 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:22 verbose #2154 > > │ ### static_lifetime │ 00:01:22 verbose #2155 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:22 verbose #2156 > > 00:01:22 verbose #2157 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:22 verbose #2158 > > nominal static_lifetime = 00:01:22 verbose #2159 > > `( 00:01:22 verbose #2160 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:01:22 verbose #2161 > > Fable.Core.Emit(\"'static\")>]]\n#endif\ntype StaticLifetime = class end" 00:01:22 verbose #2162 > > $'' : $'StaticLifetime' 00:01:22 verbose #2163 > > ) 00:01:22 verbose #2164 > > 00:01:22 verbose #2165 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:22 verbose #2166 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:22 verbose #2167 > > │ ### ref │ 00:01:22 verbose #2168 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:22 verbose #2169 > > 00:01:22 verbose #2170 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:22 verbose #2171 > > nominal ref t = 00:01:22 verbose #2172 > > `( 00:01:22 verbose #2173 > > backend_switch `(()) `({}) { 00:01:22 verbose #2174 > > Fsharp = 00:01:22 verbose #2175 > > (fun () => 00:01:22 verbose #2176 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:01:22 verbose #2177 > > Fable.Core.Emit(\"&$0\")>]]\n#endif\ntype Ref<'T> = class end" 00:01:22 verbose #2178 > > ) : () -> () 00:01:22 verbose #2179 > > } 00:01:22 verbose #2180 > > $'' : $'Ref<`t>' 00:01:22 verbose #2181 > > ) 00:01:22 verbose #2182 > > 00:01:22 verbose #2183 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:22 verbose #2184 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:22 verbose #2185 > > │ ### static_ref │ 00:01:22 verbose #2186 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:22 verbose #2187 > > 00:01:22 verbose #2188 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:22 verbose #2189 > > nominal static_ref t = ref (lifetime static_lifetime t) 00:01:22 verbose #2190 > > 00:01:22 verbose #2191 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:22 verbose #2192 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:22 verbose #2193 > > │ ### weak_rc │ 00:01:22 verbose #2194 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:22 verbose #2195 > > 00:01:22 verbose #2196 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:22 verbose #2197 > > nominal weak_rc t = 00:01:22 verbose #2198 > > `( 00:01:22 verbose #2199 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:01:22 verbose #2200 > > Fable.Core.Emit(\"std::rc::Weak<$0>\")>]]\n#endif\ntype std_rc_Weak<'T> = class 00:01:22 verbose #2201 > > end" 00:01:22 verbose #2202 > > $'' : $'std_rc_Weak<`t>' 00:01:22 verbose #2203 > > ) 00:01:22 verbose #2204 > > 00:01:22 verbose #2205 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:22 verbose #2206 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:22 verbose #2207 > > │ ### box │ 00:01:22 verbose #2208 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:22 verbose #2209 > > 00:01:22 verbose #2210 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:22 verbose #2211 > > nominal box t = 00:01:22 verbose #2212 > > `( 00:01:22 verbose #2213 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:01:22 verbose #2214 > > Fable.Core.Emit(\"Box<$0>\")>]]\n#endif\ntype Box<'T> = class end" 00:01:22 verbose #2215 > > $'' : $'Box<`t>' 00:01:22 verbose #2216 > > ) 00:01:22 verbose #2217 > > 00:01:22 verbose #2218 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:22 verbose #2219 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:22 verbose #2220 > > │ ### mut_cell │ 00:01:22 verbose #2221 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:22 verbose #2222 > > 00:01:22 verbose #2223 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:22 verbose #2224 > > nominal mut_cell t = 00:01:22 verbose #2225 > > `( 00:01:22 verbose #2226 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:01:22 verbose #2227 > > Fable.Core.Emit(\"MutCell<$0>\")>]]\n#endif\ntype MutCell<'T> = class end" 00:01:22 verbose #2228 > > $'' : $'MutCell<`t>' 00:01:22 verbose #2229 > > ) 00:01:22 verbose #2230 > > 00:01:22 verbose #2231 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:22 verbose #2232 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:22 verbose #2233 > > │ ### pin │ 00:01:22 verbose #2234 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:22 verbose #2235 > > 00:01:22 verbose #2236 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:22 verbose #2237 > > nominal pin t = 00:01:22 verbose #2238 > > `( 00:01:22 verbose #2239 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:01:22 verbose #2240 > > Fable.Core.Emit(\"std::pin::Pin<$0>\")>]]\n#endif\ntype std_pin_Pin<'T> = class 00:01:22 verbose #2241 > > end" 00:01:22 verbose #2242 > > $'' : $'std_pin_Pin<`t>' 00:01:22 verbose #2243 > > ) 00:01:22 verbose #2244 > > 00:01:22 verbose #2245 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:22 verbose #2246 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:22 verbose #2247 > > │ ### dyn' │ 00:01:22 verbose #2248 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:22 verbose #2249 > > 00:01:22 verbose #2250 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:22 verbose #2251 > > nominal dyn' t = 00:01:22 verbose #2252 > > `( 00:01:22 verbose #2253 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"dyn 00:01:22 verbose #2254 > > $0\")>]]\n#endif\ntype Dyn<'T> = class end" 00:01:22 verbose #2255 > > $'' : $'Dyn<`t>' 00:01:22 verbose #2256 > > ) 00:01:22 verbose #2257 > > 00:01:22 verbose #2258 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:22 verbose #2259 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:22 verbose #2260 > > │ ### fn' │ 00:01:22 verbose #2261 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:22 verbose #2262 > > 00:01:22 verbose #2263 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:22 verbose #2264 > > nominal fn' t = 00:01:22 verbose #2265 > > `( 00:01:22 verbose #2266 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"Fn() 00:01:22 verbose #2267 > > -> $0\")>]]\n#endif\ntype Fn<'T> = class end" 00:01:22 verbose #2268 > > $'' : $'Fn<`t>' 00:01:22 verbose #2269 > > ) 00:01:22 verbose #2270 > > 00:01:22 verbose #2271 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:22 verbose #2272 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:22 verbose #2273 > > │ ### action_fn │ 00:01:22 verbose #2274 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:22 verbose #2275 > > 00:01:22 verbose #2276 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:22 verbose #2277 > > nominal action_fn t = 00:01:22 verbose #2278 > > `( 00:01:22 verbose #2279 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:01:22 verbose #2280 > > Fable.Core.Emit(\"Fn($0)\")>]]\n#endif\ntype ActionFn<'T> = class end" 00:01:22 verbose #2281 > > $'' : $'ActionFn<`t>' 00:01:22 verbose #2282 > > ) 00:01:23 verbose #2283 > > 00:01:23 verbose #2284 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:23 verbose #2285 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:23 verbose #2286 > > │ ### action_fn2 │ 00:01:23 verbose #2287 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:23 verbose #2288 > > 00:01:23 verbose #2289 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:23 verbose #2290 > > nominal action_fn2 t u = 00:01:23 verbose #2291 > > `( 00:01:23 verbose #2292 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:01:23 verbose #2293 > > Fable.Core.Emit(\"Fn($0, $1)\")>]]\n#endif\ntype ActionFn2<'T, 'U> = class end" 00:01:23 verbose #2294 > > $'' : $'ActionFn2<`t, `u>' 00:01:23 verbose #2295 > > ) 00:01:23 verbose #2296 > > 00:01:23 verbose #2297 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:23 verbose #2298 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:23 verbose #2299 > > │ ### fn_once │ 00:01:23 verbose #2300 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:23 verbose #2301 > > 00:01:23 verbose #2302 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:23 verbose #2303 > > nominal fn_once t = 00:01:23 verbose #2304 > > `( 00:01:23 verbose #2305 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:01:23 verbose #2306 > > Fable.Core.Emit(\"FnOnce() -> $0\")>]]\n#endif\ntype FnOnce<'T> = class end" 00:01:23 verbose #2307 > > $'' : $'FnOnce<`t>' 00:01:23 verbose #2308 > > ) 00:01:23 verbose #2309 > > 00:01:23 verbose #2310 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:23 verbose #2311 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:23 verbose #2312 > > │ ### fn_unit │ 00:01:23 verbose #2313 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:23 verbose #2314 > > 00:01:23 verbose #2315 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:23 verbose #2316 > > nominal fn_unit = 00:01:23 verbose #2317 > > `( 00:01:23 verbose #2318 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:01:23 verbose #2319 > > Fable.Core.Emit(\"Fn()\")>]]\n#endif\ntype FnUnit = class end" 00:01:23 verbose #2320 > > $'' : $'FnUnit' 00:01:23 verbose #2321 > > ) 00:01:23 verbose #2322 > > 00:01:23 verbose #2323 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:23 verbose #2324 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:23 verbose #2325 > > │ ### func0 │ 00:01:23 verbose #2326 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:23 verbose #2327 > > 00:01:23 verbose #2328 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:23 verbose #2329 > > nominal func0 t = 00:01:23 verbose #2330 > > `( 00:01:23 verbose #2331 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:01:23 verbose #2332 > > Fable.Core.Emit(\"Func0<$0>\")>]]\n#endif\ntype Func0<'T> = class end" 00:01:23 verbose #2333 > > $'' : $'Func0<`t>' 00:01:23 verbose #2334 > > ) 00:01:23 verbose #2335 > > 00:01:23 verbose #2336 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:23 verbose #2337 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:23 verbose #2338 > > │ ### func1 │ 00:01:23 verbose #2339 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:23 verbose #2340 > > 00:01:23 verbose #2341 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:23 verbose #2342 > > nominal func1 t u = 00:01:23 verbose #2343 > > `( 00:01:23 verbose #2344 > > typecase t with 00:01:23 verbose #2345 > > | () => `func0 `u 00:01:23 verbose #2346 > > | _ => 00:01:23 verbose #2347 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:01:23 verbose #2348 > > Fable.Core.Emit(\"Func1<$0, $1>\")>]]\n#endif\ntype Func0<'T, 'U> = class end" 00:01:23 verbose #2349 > > $'' : $'Func0<`t, `u>' 00:01:23 verbose #2350 > > ) 00:01:23 verbose #2351 > > 00:01:23 verbose #2352 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:23 verbose #2353 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:23 verbose #2354 > > │ ### impl │ 00:01:23 verbose #2355 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:23 verbose #2356 > > 00:01:23 verbose #2357 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:23 verbose #2358 > > nominal impl t = 00:01:23 verbose #2359 > > `( 00:01:23 verbose #2360 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"impl 00:01:23 verbose #2361 > > $0\")>]]\n#endif\ntype Impl<'T> = class end" 00:01:23 verbose #2362 > > $'' : $'Impl<`t>' 00:01:23 verbose #2363 > > ) 00:01:23 verbose #2364 > > 00:01:23 verbose #2365 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:23 verbose #2366 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:23 verbose #2367 > > │ ### mut' │ 00:01:23 verbose #2368 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:23 verbose #2369 > > 00:01:23 verbose #2370 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:23 verbose #2371 > > nominal mut' t = 00:01:23 verbose #2372 > > `( 00:01:23 verbose #2373 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"mut 00:01:23 verbose #2374 > > $0\")>]]\n#endif\ntype Mut<'T> = class end" 00:01:23 verbose #2375 > > $'' : $'Mut<`t>' 00:01:23 verbose #2376 > > ) 00:01:23 verbose #2377 > > 00:01:23 verbose #2378 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:23 verbose #2379 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:23 verbose #2380 > > │ ### send │ 00:01:23 verbose #2381 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:23 verbose #2382 > > 00:01:23 verbose #2383 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:23 verbose #2384 > > nominal send t = 00:01:23 verbose #2385 > > `( 00:01:23 verbose #2386 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:01:23 verbose #2387 > > Fable.Core.Emit(\"Send\")>]]\n#endif\ntype Send<'T> = class end" 00:01:23 verbose #2388 > > $'' : lifetime_join t $'Send<`t>' 00:01:23 verbose #2389 > > ) 00:01:23 verbose #2390 > > 00:01:23 verbose #2391 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:23 verbose #2392 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:23 verbose #2393 > > │ ### emit_expr │ 00:01:23 verbose #2394 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:23 verbose #2395 > > 00:01:23 verbose #2396 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:23 verbose #2397 > > inl emit_expr forall a t. (args : a) (code : string) : t = 00:01:23 verbose #2398 > > $'Fable.Core.RustInterop.emitRustExpr !args !code ' 00:01:23 verbose #2399 > > 00:01:23 verbose #2400 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:23 verbose #2401 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:23 verbose #2402 > > │ ### (~!\\) │ 00:01:23 verbose #2403 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:23 verbose #2404 > > 00:01:23 verbose #2405 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:23 verbose #2406 > > inl (~!\) forall t. (code : string) : t = 00:01:23 verbose #2407 > > emit_expr () code 00:01:23 verbose #2408 > > 00:01:23 verbose #2409 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:23 verbose #2410 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:23 verbose #2411 > > │ ### (~!\\\\) │ 00:01:23 verbose #2412 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:23 verbose #2413 > > 00:01:23 verbose #2414 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:23 verbose #2415 > > inl (~!\\) forall t u. ((args : t), (code : string)) : u = 00:01:23 verbose #2416 > > emit_expr args code 00:01:23 verbose #2417 > > 00:01:23 verbose #2418 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:23 verbose #2419 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:23 verbose #2420 > > │ ### ptr │ 00:01:23 verbose #2421 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:23 verbose #2422 > > 00:01:23 verbose #2423 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:23 verbose #2424 > > nominal ptr t = 00:01:23 verbose #2425 > > `( 00:01:23 verbose #2426 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:01:23 verbose #2427 > > Fable.Core.Emit(\"*const $0\")>]]\n#endif\ntype Ptr<'T> = class end" 00:01:23 verbose #2428 > > $'' : $'Ptr<`t>' 00:01:23 verbose #2429 > > ) 00:01:24 verbose #2430 > > 00:01:24 verbose #2431 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:24 verbose #2432 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:24 verbose #2433 > > │ ### ptr_read │ 00:01:24 verbose #2434 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:24 verbose #2435 > > 00:01:24 verbose #2436 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:24 verbose #2437 > > inl ptr_read forall t. (x : ptr t) : t = 00:01:24 verbose #2438 > > !\\(x, $'"std::ptr::read($0)"') 00:01:24 verbose #2439 > > 00:01:24 verbose #2440 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:24 verbose #2441 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:24 verbose #2442 > > │ ### u128 │ 00:01:24 verbose #2443 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:24 verbose #2444 > > 00:01:24 verbose #2445 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:24 verbose #2446 > > nominal u128 = 00:01:24 verbose #2447 > > `( 00:01:24 verbose #2448 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:01:24 verbose #2449 > > Fable.Core.Emit(\"u128\")>]]\n#endif\ntype u128 = class end" 00:01:24 verbose #2450 > > $'' : $'u128' 00:01:24 verbose #2451 > > ) 00:01:24 verbose #2452 > > 00:01:24 verbose #2453 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:24 verbose #2454 > > inl u128 forall t. (x : t) : u128 = 00:01:24 verbose #2455 > > !\\(x, $'"$0 as u128"') 00:01:24 verbose #2456 > > 00:01:24 verbose #2457 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:24 verbose #2458 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:24 verbose #2459 > > │ ### f64 │ 00:01:24 verbose #2460 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:24 verbose #2461 > > 00:01:24 verbose #2462 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:24 verbose #2463 > > inl f64 forall t. (x : t) : f64 = 00:01:24 verbose #2464 > > !\\(x, $'"$0 as f64"') 00:01:24 verbose #2465 > > 00:01:24 verbose #2466 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:24 verbose #2467 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:24 verbose #2468 > > │ ### unwrap_0 │ 00:01:24 verbose #2469 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:24 verbose #2470 > > 00:01:24 verbose #2471 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:24 verbose #2472 > > inl unwrap_0 forall (t : * -> *) u. (x : t u) : u = 00:01:24 verbose #2473 > > !\\(x, $'"$0.0"') 00:01:24 verbose #2474 > > 00:01:24 verbose #2475 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:24 verbose #2476 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:24 verbose #2477 > > │ ### unwrap_0_ref │ 00:01:24 verbose #2478 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:24 verbose #2479 > > 00:01:24 verbose #2480 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:24 verbose #2481 > > inl unwrap_0_ref forall (t : * -> *) u. (x : ref (t u)) : ref u = 00:01:24 verbose #2482 > > !\\(x, $'"&$0.0"') 00:01:25 verbose #2483 > > 00:01:25 verbose #2484 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:25 verbose #2485 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:25 verbose #2486 > > │ ### emit │ 00:01:25 verbose #2487 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:25 verbose #2488 > > 00:01:25 verbose #2489 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:25 verbose #2490 > > inl emit forall t. (x : t) : t = 00:01:25 verbose #2491 > > !\\(x, $'"$0"') 00:01:25 verbose #2492 > > 00:01:25 verbose #2493 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:25 verbose #2494 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:25 verbose #2495 > > │ ### emit' │ 00:01:25 verbose #2496 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:25 verbose #2497 > > 00:01:25 verbose #2498 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:25 verbose #2499 > > inl emit' forall t. (x : t) : t = 00:01:25 verbose #2500 > > !\\(x, $'"let !x = $0"') 00:01:25 verbose #2501 > > x 00:01:25 verbose #2502 > > 00:01:25 verbose #2503 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:25 verbose #2504 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:25 verbose #2505 > > │ ### clone │ 00:01:25 verbose #2506 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:25 verbose #2507 > > 00:01:25 verbose #2508 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:25 verbose #2509 > > inl clone forall t. (x : t) : t = 00:01:25 verbose #2510 > > !\\(x, $'"$0.clone()"') 00:01:25 verbose #2511 > > 00:01:25 verbose #2512 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:25 verbose #2513 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:25 verbose #2514 > > │ ### dbg │ 00:01:25 verbose #2515 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:25 verbose #2516 > > 00:01:25 verbose #2517 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:25 verbose #2518 > > inl dbg forall t. (x : t) : t = 00:01:25 verbose #2519 > > !\\(x, $'"dbg\!($0)"') 00:01:25 verbose #2520 > > 00:01:25 verbose #2521 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:25 verbose #2522 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:25 verbose #2523 > > │ ### new_box │ 00:01:25 verbose #2524 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:25 verbose #2525 > > 00:01:25 verbose #2526 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:25 verbose #2527 > > inl new_box forall t. (x : t) : box t = 00:01:25 verbose #2528 > > !\\(x, $'"Box::new($0)"') 00:01:25 verbose #2529 > > 00:01:25 verbose #2530 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:25 verbose #2531 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:25 verbose #2532 > > │ ### new_rc │ 00:01:25 verbose #2533 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:25 verbose #2534 > > 00:01:25 verbose #2535 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:25 verbose #2536 > > inl new_rc forall t. (x : t) : rc t = 00:01:25 verbose #2537 > > !\\(x, $'"std::rc::Rc::new($0)"') 00:01:25 verbose #2538 > > 00:01:25 verbose #2539 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:25 verbose #2540 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:25 verbose #2541 > > │ ### rc_clone │ 00:01:25 verbose #2542 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:25 verbose #2543 > > 00:01:25 verbose #2544 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:25 verbose #2545 > > inl rc_clone forall t. (x : rc t) : rc t = 00:01:25 verbose #2546 > > !\\(x, $'"std::rc::Rc::clone(&$0)"') 00:01:25 verbose #2547 > > 00:01:25 verbose #2548 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:25 verbose #2549 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:25 verbose #2550 > > │ ### rc_unwrap_or_clone │ 00:01:25 verbose #2551 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:25 verbose #2552 > > 00:01:25 verbose #2553 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:25 verbose #2554 > > inl rc_unwrap_or_clone forall t. (x : rc t) : t = 00:01:25 verbose #2555 > > !\\(x, $'"std::rc::Rc::unwrap_or_clone($0)"') 00:01:25 verbose #2556 > > 00:01:25 verbose #2557 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:25 verbose #2558 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:25 verbose #2559 > > │ ### rc_downgrade │ 00:01:25 verbose #2560 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:25 verbose #2561 > > 00:01:25 verbose #2562 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:25 verbose #2563 > > inl rc_downgrade forall t. (x : rc t) : weak_rc t = 00:01:25 verbose #2564 > > !\\(x, $'"std::rc::Rc::downgrade(&$0)"') 00:01:25 verbose #2565 > > 00:01:25 verbose #2566 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:25 verbose #2567 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:25 verbose #2568 > > │ ### new_ref_cell │ 00:01:25 verbose #2569 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:25 verbose #2570 > > 00:01:25 verbose #2571 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:25 verbose #2572 > > inl new_ref_cell forall t. (x : t) : ref_cell t = 00:01:25 verbose #2573 > > !\\(x, $'"std::cell::RefCell::new($0)"') 00:01:25 verbose #2574 > > 00:01:25 verbose #2575 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:25 verbose #2576 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:25 verbose #2577 > > │ ### ref_cell_borrow │ 00:01:25 verbose #2578 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:25 verbose #2579 > > 00:01:25 verbose #2580 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:25 verbose #2581 > > inl ref_cell_borrow forall t. (x : rc (ref_cell t)) : t = 00:01:25 verbose #2582 > > !\\(x, $'"*std::cell::RefCell::borrow(&std::rc::Rc::clone(&$0))"') 00:01:26 verbose #2583 > > 00:01:26 verbose #2584 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:26 verbose #2585 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:26 verbose #2586 > > │ ### ref_cell_borrow_mut │ 00:01:26 verbose #2587 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:26 verbose #2588 > > 00:01:26 verbose #2589 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:26 verbose #2590 > > inl ref_cell_borrow_mut forall t. (x : rc (ref_cell t)) : mut' t = 00:01:26 verbose #2591 > > !\\(x, $'"*std::cell::RefCell::borrow_mut(&std::rc::Rc::clone(&$0))"') 00:01:26 verbose #2592 > > 00:01:26 verbose #2593 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:26 verbose #2594 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:26 verbose #2595 > > │ ### to_mut │ 00:01:26 verbose #2596 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:26 verbose #2597 > > 00:01:26 verbose #2598 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:26 verbose #2599 > > inl to_mut forall t. (x : t) : () = 00:01:26 verbose #2600 > > (!\($'"true; // 1"') : bool) |> ignore 00:01:26 verbose #2601 > > !\($'"let mut !x = !x"') : () 00:01:26 verbose #2602 > > // (!\($'"true; !x"') : bool) |> ignore 00:01:26 verbose #2603 > > // !\($'"!x"') 00:01:26 verbose #2604 > > // inl result = !\($'"!x"') : mut' t 00:01:26 verbose #2605 > > // !\($'"!result"') 00:01:26 verbose #2606 > > // inl result = !\($'"*/ // a"') : mut' t 00:01:26 verbose #2607 > > // inl result = !\($'"!x"') : mut' t 00:01:26 verbose #2608 > > // result |> fun x => $'!x |> unbox // b' 00:01:26 verbose #2609 > > 00:01:26 verbose #2610 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:26 verbose #2611 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:26 verbose #2612 > > │ ### ref_map │ 00:01:26 verbose #2613 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:26 verbose #2614 > > 00:01:26 verbose #2615 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:26 verbose #2616 > > inl ref_map forall t u. (fn : t -> u) (x : ref t) : ref u = 00:01:26 verbose #2617 > > !\($'"!fn(!x)"') 00:01:26 verbose #2618 > > 00:01:26 verbose #2619 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:26 verbose #2620 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:26 verbose #2621 > > │ ### ref_eval │ 00:01:26 verbose #2622 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:26 verbose #2623 > > 00:01:26 verbose #2624 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:26 verbose #2625 > > inl ref_eval forall t u. (fn : t -> u) (ref : ref t) : u = 00:01:26 verbose #2626 > > !\\(fn, $'"$0(!ref.clone())"') 00:01:26 verbose #2627 > > 00:01:26 verbose #2628 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:26 verbose #2629 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:26 verbose #2630 > > │ ### cow_as_ref │ 00:01:26 verbose #2631 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:26 verbose #2632 > > 00:01:26 verbose #2633 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:26 verbose #2634 > > inl cow_as_ref forall t. (s : cow t) : ref t = 00:01:26 verbose #2635 > > !\\(s, $'"$0.as_ref()"') 00:01:26 verbose #2636 > > 00:01:26 verbose #2637 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:26 verbose #2638 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:26 verbose #2639 > > │ ### from_mut │ 00:01:26 verbose #2640 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:26 verbose #2641 > > 00:01:26 verbose #2642 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:26 verbose #2643 > > inl from_mut forall t. (x : mut' t) : t = 00:01:26 verbose #2644 > > !\($'"!x"') 00:01:26 verbose #2645 > > 00:01:26 verbose #2646 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:26 verbose #2647 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:26 verbose #2648 > > │ ### box_fn │ 00:01:26 verbose #2649 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:26 verbose #2650 > > 00:01:26 verbose #2651 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:26 verbose #2652 > > inl box_fn forall t. (x : () -> ()) : box t = 00:01:26 verbose #2653 > > inl x = join x 00:01:26 verbose #2654 > > !\($'"Box::new(move || !x())"') 00:01:26 verbose #2655 > > 00:01:26 verbose #2656 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:26 verbose #2657 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:26 verbose #2658 > > │ ### box_pin │ 00:01:26 verbose #2659 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:26 verbose #2660 > > 00:01:26 verbose #2661 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:26 verbose #2662 > > inl box_pin forall t. (x : t) : pin (box t) = 00:01:26 verbose #2663 > > !\\(x, $'"Box::pin($0)"') 00:01:26 verbose #2664 > > 00:01:26 verbose #2665 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:26 verbose #2666 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:26 verbose #2667 > > │ ### to_ref │ 00:01:26 verbose #2668 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:26 verbose #2669 > > 00:01:26 verbose #2670 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:26 verbose #2671 > > inl to_ref forall t. (x : t) : ref t = 00:01:26 verbose #2672 > > !\\(x, $'"&$0"') 00:01:26 verbose #2673 > > 00:01:26 verbose #2674 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:26 verbose #2675 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:26 verbose #2676 > > │ ### to_ref_mut │ 00:01:26 verbose #2677 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:26 verbose #2678 > > 00:01:26 verbose #2679 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:26 verbose #2680 > > inl to_ref_mut forall t. (x : t) : ref (mut' t) = 00:01:26 verbose #2681 > > !\\(x, $'"&mut $0"') 00:01:26 verbose #2682 > > 00:01:26 verbose #2683 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:26 verbose #2684 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:26 verbose #2685 > > │ ### deref │ 00:01:26 verbose #2686 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:26 verbose #2687 > > 00:01:26 verbose #2688 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:26 verbose #2689 > > inl deref forall t. (ref : ref t) : t = 00:01:26 verbose #2690 > > !\\(ref, $'"*$0"') 00:01:27 verbose #2691 > > 00:01:27 verbose #2692 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:27 verbose #2693 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:27 verbose #2694 > > │ ### from_ref │ 00:01:27 verbose #2695 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:27 verbose #2696 > > 00:01:27 verbose #2697 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:27 verbose #2698 > > inl from_ref forall t. (ref : ref t) : t = 00:01:27 verbose #2699 > > !\($'"!ref"') 00:01:27 verbose #2700 > > 00:01:27 verbose #2701 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:27 verbose #2702 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:27 verbose #2703 > > │ ### into │ 00:01:27 verbose #2704 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:27 verbose #2705 > > 00:01:27 verbose #2706 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:27 verbose #2707 > > inl into forall t u. (x : t) : u = 00:01:27 verbose #2708 > > !\($'"!x.into()"') 00:01:27 verbose #2709 > > 00:01:27 verbose #2710 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:27 verbose #2711 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:27 verbose #2712 > > │ ### ops_deref │ 00:01:27 verbose #2713 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:27 verbose #2714 > > 00:01:27 verbose #2715 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:27 verbose #2716 > > inl ops_deref forall t. (ref : t) : t = 00:01:27 verbose #2717 > > !\\(ref, $'"core::ops::Deref::deref(&$0)"') 00:01:27 verbose #2718 > > 00:01:27 verbose #2719 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:27 verbose #2720 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:27 verbose #2721 > > │ ### func0_eval │ 00:01:27 verbose #2722 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:27 verbose #2723 > > 00:01:27 verbose #2724 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:27 verbose #2725 > > inl func0_eval forall t. (x : func0 t) : t = 00:01:27 verbose #2726 > > !\\(x, $'"$0()"') 00:01:27 verbose #2727 > > 00:01:27 verbose #2728 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:27 verbose #2729 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:27 verbose #2730 > > │ ### func0_move │ 00:01:27 verbose #2731 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:27 verbose #2732 > > 00:01:27 verbose #2733 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:27 verbose #2734 > > inl func0_move forall t. (fn : func0 t) : t = 00:01:27 verbose #2735 > > inl fn = join fn 00:01:27 verbose #2736 > > !\($'"(move || !fn())()"') 00:01:27 verbose #2737 > > 00:01:27 verbose #2738 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:27 verbose #2739 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:27 verbose #2740 > > │ ### move │ 00:01:27 verbose #2741 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:27 verbose #2742 > > 00:01:27 verbose #2743 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:27 verbose #2744 > > inl move forall t. (fn : () -> t) : func0 t = 00:01:27 verbose #2745 > > !\\(fn, $'"Func0::new(move || $0())"') 00:01:27 verbose #2746 > > 00:01:27 verbose #2747 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:27 verbose #2748 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:27 verbose #2749 > > │ ### to_static_ref_unbox │ 00:01:27 verbose #2750 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:27 verbose #2751 > > 00:01:27 verbose #2752 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:27 verbose #2753 > > inl to_static_ref_unbox forall t. (x : ref t) : static_ref t = 00:01:27 verbose #2754 > > x |> unbox 00:01:27 verbose #2755 > > 00:01:27 verbose #2756 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:27 verbose #2757 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:27 verbose #2758 > > │ ### from_static_ref_unbox │ 00:01:27 verbose #2759 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:27 verbose #2760 > > 00:01:27 verbose #2761 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:27 verbose #2762 > > inl from_static_ref_unbox forall t. (x : static_ref t) : ref t = 00:01:27 verbose #2763 > > x |> unbox 00:01:27 verbose #2764 > > 00:01:27 verbose #2765 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:27 verbose #2766 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:27 verbose #2767 > > │ ### box_leak │ 00:01:27 verbose #2768 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:27 verbose #2769 > > 00:01:27 verbose #2770 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:27 verbose #2771 > > inl box_leak forall t. (x : box t) : static_ref (mut' t) = 00:01:27 verbose #2772 > > !\\(x, $'"Box::leak($0)"') 00:01:27 verbose #2773 > > 00:01:27 verbose #2774 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:27 verbose #2775 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:27 verbose #2776 > > │ ### drop │ 00:01:27 verbose #2777 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:27 verbose #2778 > > 00:01:27 verbose #2779 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:27 verbose #2780 > > inl drop forall t. (x : t) : () = 00:01:27 verbose #2781 > > (!\\(x, $'"true; drop($0)"') : bool) |> ignore 00:01:27 verbose #2782 > > 00:01:27 verbose #2783 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:27 verbose #2784 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:27 verbose #2785 > > │ ### break │ 00:01:27 verbose #2786 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:27 verbose #2787 > > 00:01:27 verbose #2788 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:27 verbose #2789 > > inl break () : () = 00:01:27 verbose #2790 > > (!\($'"true; break"') : bool) |> ignore 00:01:28 verbose #2791 > > 00:01:28 verbose #2792 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:28 verbose #2793 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:28 verbose #2794 > > │ ### fix_closure' │ 00:01:28 verbose #2795 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:28 verbose #2796 > > 00:01:28 verbose #2797 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:28 verbose #2798 > > inl fix_closure' (depth : u8 * u8) x = 00:01:28 verbose #2799 > > inl rec loop text (acc : string) n : string = 00:01:28 verbose #2800 > > if n <= 0 00:01:28 verbose #2801 > > then acc 00:01:28 verbose #2802 > > else loop text (acc +. text) (n - 1) 00:01:28 verbose #2803 > > inl a = depth |> fst |> loop "}" "" 00:01:28 verbose #2804 > > inl b = depth |> snd |> loop "{" "" 00:01:28 verbose #2805 > > $'"true; !x " + !a + "); " + !b + " // rust.fix_closure\'"' : string 00:01:28 verbose #2806 > > 00:01:28 verbose #2807 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:28 verbose #2808 > > //// test 00:01:28 verbose #2809 > > 00:01:28 verbose #2810 > > fix_closure' (3, 2) 0i32 00:01:28 verbose #2811 > > |> _assert_eq "true; 0 }}}); {{ // rust.fix_closure'" 00:01:28 verbose #2812 > > 00:01:28 verbose #2813 > > ╭─[ 604.64ms - stdout ]────────────────────────────────────────────────────────╮ 00:01:28 verbose #2814 > > │ __assert_eq / actual: "true; 0 }}}); {{ // rust.fix_closure'" / expected: │ 00:01:28 verbose #2815 > > │ "true; 0 }}}); {{ // rust.fix_closure'" │ 00:01:28 verbose #2816 > > │ │ 00:01:28 verbose #2817 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:28 verbose #2818 > > 00:01:28 verbose #2819 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:28 verbose #2820 > > //// test 00:01:28 verbose #2821 > > 00:01:28 verbose #2822 > > fix_closure' (0, 0) () 00:01:28 verbose #2823 > > |> _assert_eq "true; () ); // rust.fix_closure\'" 00:01:28 verbose #2824 > > 00:01:28 verbose #2825 > > ╭─[ 112.71ms - stdout ]────────────────────────────────────────────────────────╮ 00:01:28 verbose #2826 > > │ __assert_eq / actual: "true; () ); // rust.fix_closure'" / expected: "true; │ 00:01:28 verbose #2827 > > │ () ); // rust.fix_closure'" │ 00:01:28 verbose #2828 > > │ │ 00:01:28 verbose #2829 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:28 verbose #2830 > > 00:01:28 verbose #2831 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:28 verbose #2832 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:28 verbose #2833 > > │ ### fix_closure │ 00:01:28 verbose #2834 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:28 verbose #2835 > > 00:01:28 verbose #2836 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:28 verbose #2837 > > inl fix_closure depth x = 00:01:28 verbose #2838 > > inl code = fix_closure' depth x 00:01:28 verbose #2839 > > (!\code : bool) |> ignore 00:01:28 verbose #2840 > > 00:01:28 verbose #2841 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:28 verbose #2842 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:28 verbose #2843 > > │ ### loop │ 00:01:28 verbose #2844 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:28 verbose #2845 > > 00:01:28 verbose #2846 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:28 verbose #2847 > > inl loop (depth : i32) (fn : () -> ()) : () = 00:01:28 verbose #2848 > > (!\($'"true; loop { // rust.loop"') : bool) |> ignore 00:01:28 verbose #2849 > > fn () 00:01:28 verbose #2850 > > 00:01:28 verbose #2851 > > listm.init depth id 00:01:28 verbose #2852 > > |> listm.iter fun n => 00:01:28 verbose #2853 > > (!\($'"true; } // rust.loop"') : bool) |> ignore 00:01:28 verbose #2854 > > 00:01:28 verbose #2855 > > (!\($'"true; } // rust.loop"') : bool) |> ignore 00:01:28 verbose #2856 > > 00:01:28 verbose #2857 > > listm.init depth id 00:01:28 verbose #2858 > > |> listm.iter fun n => 00:01:28 verbose #2859 > > (!\($'"true; { // rust.loop"') : bool) |> ignore 00:01:29 verbose #2860 > > 00:01:29 verbose #2861 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:29 verbose #2862 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:29 verbose #2863 > > │ ### capture │ 00:01:29 verbose #2864 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:29 verbose #2865 > > 00:01:29 verbose #2866 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:29 verbose #2867 > > inl capture forall t. (fn : () -> t) : t = 00:01:29 verbose #2868 > > (!\($'"true; let _capture = (|| { //"') : bool) |> ignore 00:01:29 verbose #2869 > > (!\\(fn (), $'"true; $0 })()"') : bool) |> ignore 00:01:29 verbose #2870 > > !\($'"_capture"') 00:01:29 verbose #2871 > > 00:01:29 verbose #2872 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:29 verbose #2873 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:29 verbose #2874 > > │ ### capture_move │ 00:01:29 verbose #2875 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:29 verbose #2876 > > 00:01:29 verbose #2877 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:29 verbose #2878 > > inl capture_move forall t. (fn : () -> t) : t = 00:01:29 verbose #2879 > > (!\($'"true; let _capture_move = (move || { //"') : bool) |> ignore 00:01:29 verbose #2880 > > (!\\(fn (), $'"true; $0 })()"') : bool) |> ignore 00:01:29 verbose #2881 > > !\($'"_capture_move"') 00:01:29 verbose #2882 > > 00:01:29 verbose #2883 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:29 verbose #2884 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:29 verbose #2885 > > │ ### type_emit │ 00:01:29 verbose #2886 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:29 verbose #2887 > > 00:01:29 verbose #2888 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:29 verbose #2889 > > nominal type_emit t = 00:01:29 verbose #2890 > > `( 00:01:29 verbose #2891 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"*/ $0 00:01:29 verbose #2892 > > /*\")>]]\n#endif\ntype TypeEmit<'T> = class end" 00:01:29 verbose #2893 > > $'' : $'TypeEmit<`t>' 00:01:29 verbose #2894 > > ) 00:01:29 verbose #2895 > > 00:01:29 verbose #2896 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:29 verbose #2897 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:29 verbose #2898 > > │ ### partial_eq_wrapper │ 00:01:29 verbose #2899 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:29 verbose #2900 > > 00:01:29 verbose #2901 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:29 verbose #2902 > > nominal partial_eq_wrapper t = 00:01:29 verbose #2903 > > `( 00:01:29 verbose #2904 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:01:29 verbose #2905 > > Fable.Core.Emit(\"PartialEqWrapper<$0>\")>]]\n#endif\ntype PartialEqWrapper<'T> 00:01:29 verbose #2906 > > = class end" 00:01:29 verbose #2907 > > $'' : $'PartialEqWrapper<`t>' 00:01:29 verbose #2908 > > ) 00:01:29 verbose #2909 > > 00:01:29 verbose #2910 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:29 verbose #2911 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:29 verbose #2912 > > │ ### new_partial_eq_wrapper │ 00:01:29 verbose #2913 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:29 verbose #2914 > > 00:01:29 verbose #2915 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:29 verbose #2916 > > inl new_partial_eq_wrapper forall t. 00:01:29 verbose #2917 > > (eq_fn : ref (partial_eq_wrapper t) -> ref (partial_eq_wrapper t) -> bool) 00:01:29 verbose #2918 > > (x : t) 00:01:29 verbose #2919 > > : partial_eq_wrapper t 00:01:29 verbose #2920 > > = 00:01:29 verbose #2921 > > inl struct () = 00:01:29 verbose #2922 > > !\($'"} //"') : () 00:01:29 verbose #2923 > > 00:01:29 verbose #2924 > > !\($'"#[[derive( //"') : () 00:01:29 verbose #2925 > > !\($'" Debug, //"') : () 00:01:29 verbose #2926 > > !\($'" Clone, //"') : () 00:01:29 verbose #2927 > > !\($'")]] //"') : () 00:01:29 verbose #2928 > > !\($'"pub struct PartialEqWrapper<T>(T); /*"') : () 00:01:29 verbose #2929 > > 00:01:29 verbose #2930 > > !\($'"*/ impl PartialEq for PartialEqWrapper< /*"') : () 00:01:29 verbose #2931 > > (null () : type_emit t) |> ignore 00:01:29 verbose #2932 > > !\($'"*/ > { //"') : () 00:01:29 verbose #2933 > > 00:01:29 verbose #2934 > > !\($'"fn eq(&self, other: &Self) -> bool { //"') : () 00:01:29 verbose #2935 > > 00:01:29 verbose #2936 > > inl self : ref (partial_eq_wrapper t) = !\($'$"self"') 00:01:29 verbose #2937 > > inl other : ref (partial_eq_wrapper t) = !\($'$"other"') 00:01:29 verbose #2938 > > 00:01:29 verbose #2939 > > self 00:01:29 verbose #2940 > > |> eq_fn other 00:01:29 verbose #2941 > > |> fun x => !\($'$"!x //"') 00:01:29 verbose #2942 > > 00:01:29 verbose #2943 > > !\($'"} } } fn _main() { { { //"') : () 00:01:29 verbose #2944 > > 00:01:29 verbose #2945 > > $'let _!struct = true' : () 00:01:29 verbose #2946 > > 00:01:29 verbose #2947 > > !\\(x, $'"PartialEqWrapper($0)"') 00:01:29 verbose #2948 > > 00:01:29 verbose #2949 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:29 verbose #2950 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:29 verbose #2951 > > │ ### clone_wrapper │ 00:01:29 verbose #2952 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:29 verbose #2953 > > 00:01:29 verbose #2954 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:29 verbose #2955 > > nominal clone_wrapper t = 00:01:29 verbose #2956 > > `( 00:01:29 verbose #2957 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:01:29 verbose #2958 > > Fable.Core.Emit(\"CloneWrapper<$0>\")>]]\n#endif\ntype CloneWrapper<'T> = class 00:01:29 verbose #2959 > > end" 00:01:29 verbose #2960 > > $'' : $'CloneWrapper<`t>' 00:01:29 verbose #2961 > > ) 00:01:29 verbose #2962 > > 00:01:29 verbose #2963 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:29 verbose #2964 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:29 verbose #2965 > > │ ### new_clone_wrapper │ 00:01:29 verbose #2966 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:29 verbose #2967 > > 00:01:29 verbose #2968 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:29 verbose #2969 > > inl new_clone_wrapper forall t. 00:01:29 verbose #2970 > > (clone_fn : ref (clone_wrapper t) -> ref (clone_wrapper t)) 00:01:29 verbose #2971 > > (x : t) 00:01:29 verbose #2972 > > : clone_wrapper t 00:01:29 verbose #2973 > > = 00:01:29 verbose #2974 > > inl struct () = 00:01:29 verbose #2975 > > !\($'"} //"') : () 00:01:29 verbose #2976 > > 00:01:29 verbose #2977 > > !\($'"#[[derive( //"') : () 00:01:29 verbose #2978 > > !\($'" Debug, //"') : () 00:01:29 verbose #2979 > > !\($'")]] //"') : () 00:01:29 verbose #2980 > > !\($'"pub struct CloneWrapper<T>(T); /*"') : () 00:01:29 verbose #2981 > > 00:01:29 verbose #2982 > > !\($'"*/ impl Clone for CloneWrapper< /*"') : () 00:01:29 verbose #2983 > > (null () : type_emit t) |> ignore 00:01:29 verbose #2984 > > !\($'"*/ > { //"') : () 00:01:29 verbose #2985 > > 00:01:29 verbose #2986 > > !\($'"fn clone(&self) -> Self { //"') : () 00:01:29 verbose #2987 > > 00:01:29 verbose #2988 > > inl self : ref (clone_wrapper t) = !\($'$"self"') 00:01:29 verbose #2989 > > 00:01:29 verbose #2990 > > self 00:01:29 verbose #2991 > > |> clone_fn 00:01:29 verbose #2992 > > |> fun x => !\($'$"!x.clone() //"') 00:01:29 verbose #2993 > > 00:01:29 verbose #2994 > > !\($'"} } } fn _main() { { { //"') : () 00:01:29 verbose #2995 > > 00:01:29 verbose #2996 > > $'let _!struct = true' : () 00:01:29 verbose #2997 > > 00:01:29 verbose #2998 > > !\\(x, $'"CloneWrapper($0)"') 00:01:29 verbose #2999 > 00:00:13 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 53807 } 00:01:29 verbose #3000 > 00:00:13 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:01:29 verbose #3001 > "nbconvert", 00:01:29 verbose #3002 > "/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.ipynb", 00:01:29 verbose #3003 > "--to", 00:01:29 verbose #3004 > "html", 00:01:29 verbose #3005 > "--HTMLExporter.theme=dark", 00:01:29 verbose #3006 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:30 verbose #3007 > 00:00:13 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.ipynb to html 00:01:30 verbose #3008 > 00:00:13 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:01:30 verbose #3009 > 00:00:13 verbose #7 ! validate(nb) 00:01:30 verbose #3010 > 00:00:14 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:01:30 verbose #3011 > 00:00:14 verbose #9 ! return _pygments_highlight( 00:01:31 verbose #3012 > 00:00:14 verbose #10 ! [NbConvertApp] Writing 423643 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.html 00:01:31 verbose #3013 > 00:00:14 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 } 00:01:31 verbose #3014 > 00:00:14 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 } 00:01:31 verbose #3015 > 00:00:14 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:01:31 verbose #3016 > "-c", 00:01:31 verbose #3017 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:01:31 verbose #3018 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:31 verbose #3019 > 00:00:15 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:01:31 verbose #3020 > 00:00:15 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:01:31 verbose #3021 > 00:00:15 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 54768 } 00:01:31 debug #3022 runtime.execute_with_options_async / { exit_code = 0; output_length = 59577 } 00:01:31 debug #2 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path rust/rust.dib --retries 3 00:01:31 debug #3023 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path rust/testing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:31 verbose #3024 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "rust/testing.dib", "--retries", "3"])) } 00:01:31 verbose #3025 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:01:31 verbose #3026 > "repl", 00:01:31 verbose #3027 > "--exit-after-run", 00:01:31 verbose #3028 > "--run", 00:01:31 verbose #3029 > "/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib", 00:01:31 verbose #3030 > "--output-path", 00:01:31 verbose #3031 > "/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.ipynb", 00:01:31 verbose #3032 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:01:33 verbose #3033 > > 00:01:33 verbose #3034 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:33 verbose #3035 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:33 verbose #3036 > > │ # rust/testing │ 00:01:33 verbose #3037 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:35 verbose #3038 > > 00:01:35 verbose #3039 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:35 verbose #3040 > > open rust.rust_operators 00:01:36 verbose #3041 > > 00:01:36 verbose #3042 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:36 verbose #3043 > > //// test 00:01:36 verbose #3044 > > 00:01:36 verbose #3045 > > open testing 00:01:36 verbose #3046 > > 00:01:36 verbose #3047 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:36 verbose #3048 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:36 verbose #3049 > > │ ### run_tests' │ 00:01:36 verbose #3050 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:36 verbose #3051 > > 00:01:36 verbose #3052 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:36 verbose #3053 > > inl run_tests' tests = 00:01:36 verbose #3054 > > (!\($'"true; () //"') : bool) |> ignore 00:01:36 verbose #3055 > > 00:01:36 verbose #3056 > > inl fields = reflection.get_record_fields tests 00:01:36 verbose #3057 > > 00:01:36 verbose #3058 > > fields 00:01:36 verbose #3059 > > |> listm.iter fun name, (fn : string -> ()) => 00:01:36 verbose #3060 > > !\($'"} /* /*"') 00:01:36 verbose #3061 > > (!\($'$"*/ #[[test]] fn " + !name + "() { //"') : bool) |> ignore 00:01:36 verbose #3062 > > fn name 00:01:36 verbose #3063 > > 00:01:36 verbose #3064 > > fields 00:01:36 verbose #3065 > > |> listm.iter fun _ => 00:01:36 verbose #3066 > > !\($'"{ //"') : () 00:01:36 verbose #3067 > > 00:01:36 verbose #3068 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:36 verbose #3069 > > //// test 00:01:36 verbose #3070 > > 00:01:36 verbose #3071 > > inl run test = 00:01:36 verbose #3072 > > if env.get_environment_variable "TEST" = "1" 00:01:36 verbose #3073 > > then () 00:01:36 verbose #3074 > > else 00:01:36 verbose #3075 > > runtime.execution_options fun x => { x with 00:01:36 verbose #3076 > > command = "cargo test -- --show-output" 00:01:36 verbose #3077 > > working_directory = file_system.get_source_directory () |> Some |> 00:01:36 verbose #3078 > > optionm'.box 00:01:36 verbose #3079 > > environment_variables = ;[[ "TEST", "1" ]] 00:01:36 verbose #3080 > > } 00:01:36 verbose #3081 > > |> runtime.execute_with_options 00:01:36 verbose #3082 > > |> fun exit_code, result => 00:01:36 verbose #3083 > > exit_code |> _assert_eq 0i32 00:01:36 verbose #3084 > > result |> _assert_string_contains "test result: ok. 1 passed; 0 00:01:36 verbose #3085 > > failed; 0 ignored;" 00:01:36 verbose #3086 > > 00:01:36 verbose #3087 > > $'let tests () = !test ()' : () 00:01:36 verbose #3088 > > 00:01:36 verbose #3089 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:36 verbose #3090 > > //// test 00:01:36 verbose #3091 > > ///! rust -d encoding_rs encoding_rs_io 00:01:36 verbose #3092 > > 00:01:36 verbose #3093 > > fun () => 00:01:36 verbose #3094 > > run_tests' { 00:01:36 verbose #3095 > > a = _assert_eq "a" 00:01:36 verbose #3096 > > } 00:01:36 verbose #3097 > > |> run 00:01:53 verbose #3098 > > 00:01:53 verbose #3099 > > ╭─[ 16.63s - return value ]────────────────────────────────────────────────────╮ 00:01:53 verbose #3100 > > │ 00:00:00 debug #1 runtime.execute_with_options / { file_name = │ 00:01:53 verbose #3101 > > │ cargo; arguments = [ │ 00:01:53 verbose #3102 > > │ "test", │ 00:01:53 verbose #3103 > > │ "--", │ 00:01:53 verbose #3104 > > │ "--show-output", │ 00:01:53 verbose #3105 > > │ ]; options = { command = cargo test -- --show-output; cancellation_token = │ 00:01:53 verbose #3106 > > │ None; environment_variables = Array(MutCell([("TEST", "1")])); on_line = │ 00:01:53 verbose #3107 > > │ None; stdin = None; trace = true; working_directory = Some( │ 00:01:53 verbose #3108 > > │ │ 00:01:53 verbose #3109 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │ 00:01:53 verbose #3110 > > │ ckages/Rust/66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2e27d2d05bc91767bb6d │ 00:01:53 verbose #3111 > > │ ", │ 00:01:53 verbose #3112 > > │ ) } } │ 00:01:53 verbose #3113 > > │ 00:00:00 verbose #2 ! Compiling │ 00:01:53 verbose #3114 > > │ spiral_builder_66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2e27d2d05bc91767b │ 00:01:53 verbose #3115 > > │ b6d v0.0.1 │ 00:01:53 verbose #3116 > > │ (/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │ 00:01:53 verbose #3117 > > │ ckages/Rust/66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2e27d2d05bc91767bb6d │ 00:01:53 verbose #3118 > > │ ) │ 00:01:53 verbose #3119 > > │ 00:00:01 verbose #3 ! Finished `test` profile [unoptimized │ 00:01:53 verbose #3120 > > │ + debuginfo] target(s) in 1.33s │ 00:01:53 verbose #3121 > > │ 00:00:01 verbose #4 ! Running unittests spiral_builder.rs │ 00:01:53 verbose #3122 > > │ (/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/ta │ 00:01:53 verbose #3123 > > │ rget/debug/deps/spiral_builder_66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2 │ 00:01:53 verbose #3124 > > │ e27d2d05bc91767bb6d-eee90a269654ed30) │ 00:01:53 verbose #3125 > > │ 00:00:01 verbose #5 > │ 00:01:53 verbose #3126 > > │ 00:00:01 verbose #6 > running 1 test │ 00:01:53 verbose #3127 > > │ 00:00:01 verbose #7 > test module_7e2cd9e0::Spiral_builder::a ... ok │ 00:01:53 verbose #3128 > > │ 00:00:01 verbose #8 > │ 00:01:53 verbose #3129 > > │ 00:00:01 verbose #9 > successes: │ 00:01:53 verbose #3130 > > │ 00:00:01 verbose #10 > │ 00:01:53 verbose #3131 > > │ 00:00:01 verbose #...0:01 verbose #15 > successes: │ 00:01:53 verbose #3132 > > │ 00:00:01 verbose #16 > module_7e2cd9e0::Spiral_builder::a │ 00:01:53 verbose #3133 > > │ 00:00:01 verbose #17 > │ 00:01:53 verbose #3134 > > │ 00:00:01 verbose #18 > test result: ok. 1 passed; 0 failed; 0 ignored; │ 00:01:53 verbose #3135 > > │ 0 measured; 0 filtered out; finished in 0.00s │ 00:01:53 verbose #3136 > > │ 00:00:01 verbose #19 > │ 00:01:53 verbose #3137 > > │ 00:00:01 verbose #20 runtime.execute_with_options / result / { │ 00:01:53 verbose #3138 > > │ exit_code = 0; std_trace_length = 944 } │ 00:01:53 verbose #3139 > > │ __assert_eq / actual: 0 / expected: 0 │ 00:01:53 verbose #3140 > > │ __assert_string_contains / actual: "test result: ok. 1 passed; 0 failed; 0 │ 00:01:53 verbose #3141 > > │ ignored;" / expected: " Compiling │ 00:01:53 verbose #3142 > > │ spiral_builder_66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2e27d2d05bc91767b │ 00:01:53 verbose #3143 > > │ b6d v0.0.1 │ 00:01:53 verbose #3144 > > │ (/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │ 00:01:53 verbose #3145 > > │ ckages/Rust/66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2e27d2d05bc91767bb6d) │ 00:01:53 verbose #3146 > > │ [0m │ 00:01:53 verbose #3147 > > │ Finished `test` profile [unoptimized + debuginfo] target(s) │ 00:01:53 verbose #3148 > > │ in 1.33s │ 00:01:53 verbose #3149 > > │ Running unittests spiral_builder.rs │ 00:01:53 verbose #3150 > > │ (/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/ta │ 00:01:53 verbose #3151 > > │ rget/debug/deps/spiral_builder_66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2 │ 00:01:53 verbose #3152 > > │ e27d2d05bc91767bb6d-eee90a269654ed30) │ 00:01:53 verbose #3153 > > │ │ 00:01:53 verbose #3154 > > │ running 1 test │ 00:01:53 verbose #3155 > > │ test module_7e2cd9e0::Spiral_builder::a ... ok │ 00:01:53 verbose #3156 > > │ │ 00:01:53 verbose #3157 > > │ successes: │ 00:01:53 verbose #3158 > > │ │ 00:01:53 verbose #3159 > > │ ---- module_7e2cd9e0::Spiral_builder::a stdout ---- │ 00:01:53 verbose #3160 > > │ __assert_eq / actual: "a" / expected: "a" │ 00:01:53 verbose #3161 > > │ │ 00:01:53 verbose #3162 > > │ │ 00:01:53 verbose #3163 > > │ successes: │ 00:01:53 verbose #3164 > > │ module_7e2cd9e0::Spiral_builder::a │ 00:01:53 verbose #3165 > > │ │ 00:01:53 verbose #3166 > > │ test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; │ 00:01:53 verbose #3167 > > │ finished in 0.00s │ 00:01:53 verbose #3168 > > │ " │ 00:01:53 verbose #3169 > > │ │ 00:01:53 verbose #3170 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:53 verbose #3171 > > 00:01:53 verbose #3172 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:53 verbose #3173 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:53 verbose #3174 > > │ ### run_tests │ 00:01:53 verbose #3175 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:53 verbose #3176 > > 00:01:53 verbose #3177 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:53 verbose #3178 > > inl run_tests tests : () = 00:01:53 verbose #3179 > > real 00:01:53 verbose #3180 > > inl tests = 00:01:53 verbose #3181 > > real_core.record_map 00:01:53 verbose #3182 > > fun { key value } => 00:01:53 verbose #3183 > > (fun _ => value ()) : string -> () 00:01:53 verbose #3184 > > tests 00:01:53 verbose #3185 > > run_tests' `(`tests) tests 00:01:53 verbose #3186 > > 00:01:53 verbose #3187 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:53 verbose #3188 > > //// test 00:01:53 verbose #3189 > > ///! rust -d encoding_rs encoding_rs_io 00:01:53 verbose #3190 > > 00:01:53 verbose #3191 > > fun () => 00:01:53 verbose #3192 > > run_tests { 00:01:53 verbose #3193 > > a = fun () => "a" |> _assert_eq "a" 00:01:53 verbose #3194 > > } 00:01:53 verbose #3195 > > |> run 00:01:58 verbose #3196 > > 00:01:58 verbose #3197 > > ╭─[ 5.17s - return value ]─────────────────────────────────────────────────────╮ 00:01:58 verbose #3198 > > │ 00:00:00 debug #1 runtime.execute_with_options / { file_name = │ 00:01:58 verbose #3199 > > │ cargo; arguments = [ │ 00:01:58 verbose #3200 > > │ "test", │ 00:01:58 verbose #3201 > > │ "--", │ 00:01:58 verbose #3202 > > │ "--show-output", │ 00:01:58 verbose #3203 > > │ ]; options = { command = cargo test -- --show-output; cancellation_token = │ 00:01:58 verbose #3204 > > │ None; environment_variables = Array(MutCell([("TEST", "1")])); on_line = │ 00:01:58 verbose #3205 > > │ None; stdin = None; trace = true; working_directory = Some( │ 00:01:58 verbose #3206 > > │ │ 00:01:58 verbose #3207 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │ 00:01:58 verbose #3208 > > │ ckages/Rust/66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2e27d2d05bc91767bb6d │ 00:01:58 verbose #3209 > > │ ", │ 00:01:58 verbose #3210 > > │ ) } } │ 00:01:58 verbose #3211 > > │ 00:00:00 verbose #2 ! Compiling │ 00:01:58 verbose #3212 > > │ spiral_builder_66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2e27d2d05bc91767b │ 00:01:58 verbose #3213 > > │ b6d v0.0.1 │ 00:01:58 verbose #3214 > > │ (/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │ 00:01:58 verbose #3215 > > │ ckages/Rust/66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2e27d2d05bc91767bb6d │ 00:01:58 verbose #3216 > > │ ) │ 00:01:58 verbose #3217 > > │ 00:00:01 verbose #3 ! Finished `test` profile [unoptimized │ 00:01:58 verbose #3218 > > │ + debuginfo] target(s) in 1.27s │ 00:01:58 verbose #3219 > > │ 00:00:01 verbose #4 ! Running unittests spiral_builder.rs │ 00:01:58 verbose #3220 > > │ (/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/ta │ 00:01:58 verbose #3221 > > │ rget/debug/deps/spiral_builder_66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2 │ 00:01:58 verbose #3222 > > │ e27d2d05bc91767bb6d-eee90a269654ed30) │ 00:01:58 verbose #3223 > > │ 00:00:01 verbose #5 > │ 00:01:58 verbose #3224 > > │ 00:00:01 verbose #6 > running 1 test │ 00:01:58 verbose #3225 > > │ 00:00:01 verbose #7 > test module_7e2cd9e0::Spiral_builder::a ... ok │ 00:01:58 verbose #3226 > > │ 00:00:01 verbose #8 > │ 00:01:58 verbose #3227 > > │ 00:00:01 verbose #9 > successes: │ 00:01:58 verbose #3228 > > │ 00:00:01 verbose #10 > │ 00:01:58 verbose #3229 > > │ 00:00:01 verbose #...0:01 verbose #15 > successes: │ 00:01:58 verbose #3230 > > │ 00:00:01 verbose #16 > module_7e2cd9e0::Spiral_builder::a │ 00:01:58 verbose #3231 > > │ 00:00:01 verbose #17 > │ 00:01:58 verbose #3232 > > │ 00:00:01 verbose #18 > test result: ok. 1 passed; 0 failed; 0 ignored; │ 00:01:58 verbose #3233 > > │ 0 measured; 0 filtered out; finished in 0.00s │ 00:01:58 verbose #3234 > > │ 00:00:01 verbose #19 > │ 00:01:58 verbose #3235 > > │ 00:00:01 verbose #20 runtime.execute_with_options / result / { │ 00:01:58 verbose #3236 > > │ exit_code = 0; std_trace_length = 944 } │ 00:01:58 verbose #3237 > > │ __assert_eq / actual: 0 / expected: 0 │ 00:01:58 verbose #3238 > > │ __assert_string_contains / actual: "test result: ok. 1 passed; 0 failed; 0 │ 00:01:58 verbose #3239 > > │ ignored;" / expected: " Compiling │ 00:01:58 verbose #3240 > > │ spiral_builder_66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2e27d2d05bc91767b │ 00:01:58 verbose #3241 > > │ b6d v0.0.1 │ 00:01:58 verbose #3242 > > │ (/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │ 00:01:58 verbose #3243 > > │ ckages/Rust/66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2e27d2d05bc91767bb6d) │ 00:01:58 verbose #3244 > > │ [0m │ 00:01:58 verbose #3245 > > │ Finished `test` profile [unoptimized + debuginfo] target(s) │ 00:01:58 verbose #3246 > > │ in 1.27s │ 00:01:58 verbose #3247 > > │ Running unittests spiral_builder.rs │ 00:01:58 verbose #3248 > > │ (/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/ta │ 00:01:58 verbose #3249 > > │ rget/debug/deps/spiral_builder_66dfdd3eec75a9880e2f677fd19a43257c6cb37fce1c2 │ 00:01:58 verbose #3250 > > │ e27d2d05bc91767bb6d-eee90a269654ed30) │ 00:01:58 verbose #3251 > > │ │ 00:01:58 verbose #3252 > > │ running 1 test │ 00:01:58 verbose #3253 > > │ test module_7e2cd9e0::Spiral_builder::a ... ok │ 00:01:58 verbose #3254 > > │ │ 00:01:58 verbose #3255 > > │ successes: │ 00:01:58 verbose #3256 > > │ │ 00:01:58 verbose #3257 > > │ ---- module_7e2cd9e0::Spiral_builder::a stdout ---- │ 00:01:58 verbose #3258 > > │ __assert_eq / actual: "a" / expected: "a" │ 00:01:58 verbose #3259 > > │ │ 00:01:58 verbose #3260 > > │ │ 00:01:58 verbose #3261 > > │ successes: │ 00:01:58 verbose #3262 > > │ module_7e2cd9e0::Spiral_builder::a │ 00:01:58 verbose #3263 > > │ │ 00:01:58 verbose #3264 > > │ test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; │ 00:01:58 verbose #3265 > > │ finished in 0.00s │ 00:01:58 verbose #3266 > > │ " │ 00:01:58 verbose #3267 > > │ │ 00:01:58 verbose #3268 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:58 verbose #3269 > > 00:01:58 verbose #3270 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:58 verbose #3271 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:01:58 verbose #3272 > > │ ### run_tests_log │ 00:01:58 verbose #3273 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:01:58 verbose #3274 > > 00:01:58 verbose #3275 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:58 verbose #3276 > > inl run_tests_log tests : () = 00:01:58 verbose #3277 > > real 00:01:58 verbose #3278 > > inl tests = 00:01:58 verbose #3279 > > real_core.record_map 00:01:58 verbose #3280 > > fun { key value } => 00:01:58 verbose #3281 > > (fun _ => value false) : () -> () 00:01:58 verbose #3282 > > tests 00:01:58 verbose #3283 > > run_tests `(`tests) tests 00:01:58 verbose #3284 > > 00:01:58 verbose #3285 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:58 verbose #3286 > > //// test 00:01:58 verbose #3287 > > ///! rust -d encoding_rs encoding_rs_io 00:01:58 verbose #3288 > > 00:01:58 verbose #3289 > > fun () => 00:01:58 verbose #3290 > > run_tests_log { 00:01:58 verbose #3291 > > a = _assert_eq false 00:01:58 verbose #3292 > > } 00:01:58 verbose #3293 > > |> run 00:02:14 verbose #3294 > > 00:02:14 verbose #3295 > > ╭─[ 15.63s - return value ]────────────────────────────────────────────────────╮ 00:02:14 verbose #3296 > > │ 00:00:00 debug #1 runtime.execute_with_options / { file_name = │ 00:02:14 verbose #3297 > > │ cargo; arguments = [ │ 00:02:14 verbose #3298 > > │ "test", │ 00:02:14 verbose #3299 > > │ "--", │ 00:02:14 verbose #3300 > > │ "--show-output", │ 00:02:14 verbose #3301 > > │ ]; options = { command = cargo test -- --show-output; cancellation_token = │ 00:02:14 verbose #3302 > > │ None; environment_variables = Array(MutCell([("TEST", "1")])); on_line = │ 00:02:14 verbose #3303 > > │ None; stdin = None; trace = true; working_directory = Some( │ 00:02:14 verbose #3304 > > │ │ 00:02:14 verbose #3305 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │ 00:02:14 verbose #3306 > > │ ckages/Rust/024d5e7bebc76817695f42e0cb6c6b2efeed8a08c0c7c3bccf53eaff79c97fe8 │ 00:02:14 verbose #3307 > > │ ", │ 00:02:14 verbose #3308 > > │ ) } } │ 00:02:14 verbose #3309 > > │ 00:00:00 verbose #2 ! Compiling │ 00:02:14 verbose #3310 > > │ spiral_builder_024d5e7bebc76817695f42e0cb6c6b2efeed8a08c0c7c3bccf53eaff79c97 │ 00:02:14 verbose #3311 > > │ fe8 v0.0.1 │ 00:02:14 verbose #3312 > > │ (/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │ 00:02:14 verbose #3313 > > │ ckages/Rust/024d5e7bebc76817695f42e0cb6c6b2efeed8a08c0c7c3bccf53eaff79c97fe8 │ 00:02:14 verbose #3314 > > │ ) │ 00:02:14 verbose #3315 > > │ 00:00:01 verbose #3 ! Finished `test` profile [unoptimized │ 00:02:14 verbose #3316 > > │ + debuginfo] target(s) in 1.30s │ 00:02:14 verbose #3317 > > │ 00:00:01 verbose #4 ! Running unittests spiral_builder.rs │ 00:02:14 verbose #3318 > > │ (/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/ta │ 00:02:14 verbose #3319 > > │ rget/debug/deps/spiral_builder_024d5e7bebc76817695f42e0cb6c6b2efeed8a08c0c7c │ 00:02:14 verbose #3320 > > │ 3bccf53eaff79c97fe8-49e36eed56b8402d) │ 00:02:14 verbose #3321 > > │ 00:00:01 verbose #5 > │ 00:02:14 verbose #3322 > > │ 00:00:01 verbose #6 > running 1 test │ 00:02:14 verbose #3323 > > │ 00:00:01 verbose #7 > test module_7e2cd9e0::Spiral_builder::a ... ok │ 00:02:14 verbose #3324 > > │ 00:00:01 verbose #8 > │ 00:02:14 verbose #3325 > > │ 00:00:01 verbose #9 > successes: │ 00:02:14 verbose #3326 > > │ 00:00:01 verbose #10 > │ 00:02:14 verbose #3327 > > │ 00:00:01 verbose #... verbose #15 > successes: │ 00:02:14 verbose #3328 > > │ 00:00:01 verbose #16 > module_7e2cd9e0::Spiral_builder::a │ 00:02:14 verbose #3329 > > │ 00:00:01 verbose #17 > │ 00:02:14 verbose #3330 > > │ 00:00:01 verbose #18 > test result: ok. 1 passed; 0 failed; 0 ignored; │ 00:02:14 verbose #3331 > > │ 0 measured; 0 filtered out; finished in 0.00s │ 00:02:14 verbose #3332 > > │ 00:00:01 verbose #19 > │ 00:02:14 verbose #3333 > > │ 00:00:01 verbose #20 runtime.execute_with_options / result / { │ 00:02:14 verbose #3334 > > │ exit_code = 0; std_trace_length = 948 } │ 00:02:14 verbose #3335 > > │ __assert_eq / actual: 0 / expected: 0 │ 00:02:14 verbose #3336 > > │ __assert_string_contains / actual: "test result: ok. 1 passed; 0 failed; 0 │ 00:02:14 verbose #3337 > > │ ignored;" / expected: " Compiling │ 00:02:14 verbose #3338 > > │ spiral_builder_024d5e7bebc76817695f42e0cb6c6b2efeed8a08c0c7c3bccf53eaff79c97 │ 00:02:14 verbose #3339 > > │ fe8 v0.0.1 │ 00:02:14 verbose #3340 > > │ (/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/pa │ 00:02:14 verbose #3341 > > │ ckages/Rust/024d5e7bebc76817695f42e0cb6c6b2efeed8a08c0c7c3bccf53eaff79c97fe8) │ 00:02:14 verbose #3342 > > │ [0m │ 00:02:14 verbose #3343 > > │ Finished `test` profile [unoptimized + debuginfo] target(s) │ 00:02:14 verbose #3344 > > │ in 1.30s │ 00:02:14 verbose #3345 > > │ Running unittests spiral_builder.rs │ 00:02:14 verbose #3346 > > │ (/home/runner/work/polyglot/polyglot/target/spiral_builder/spiral_builder/ta │ 00:02:14 verbose #3347 > > │ rget/debug/deps/spiral_builder_024d5e7bebc76817695f42e0cb6c6b2efeed8a08c0c7c │ 00:02:14 verbose #3348 > > │ 3bccf53eaff79c97fe8-49e36eed56b8402d) │ 00:02:14 verbose #3349 > > │ │ 00:02:14 verbose #3350 > > │ running 1 test │ 00:02:14 verbose #3351 > > │ test module_7e2cd9e0::Spiral_builder::a ... ok │ 00:02:14 verbose #3352 > > │ │ 00:02:14 verbose #3353 > > │ successes: │ 00:02:14 verbose #3354 > > │ │ 00:02:14 verbose #3355 > > │ ---- module_7e2cd9e0::Spiral_builder::a stdout ---- │ 00:02:14 verbose #3356 > > │ __assert_eq / actual: false / expected: false │ 00:02:14 verbose #3357 > > │ │ 00:02:14 verbose #3358 > > │ │ 00:02:14 verbose #3359 > > │ successes: │ 00:02:14 verbose #3360 > > │ module_7e2cd9e0::Spiral_builder::a │ 00:02:14 verbose #3361 > > │ │ 00:02:14 verbose #3362 > > │ test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; │ 00:02:14 verbose #3363 > > │ finished in 0.00s │ 00:02:14 verbose #3364 > > │ " │ 00:02:14 verbose #3365 > > │ │ 00:02:14 verbose #3366 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:14 verbose #3367 > 00:00:42 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 27732 } 00:02:14 verbose #3368 > 00:00:42 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:02:14 verbose #3369 > "nbconvert", 00:02:14 verbose #3370 > "/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.ipynb", 00:02:14 verbose #3371 > "--to", 00:02:14 verbose #3372 > "html", 00:02:14 verbose #3373 > "--HTMLExporter.theme=dark", 00:02:14 verbose #3374 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:14 verbose #3375 > 00:00:43 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.ipynb to html 00:02:14 verbose #3376 > 00:00:43 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:02:14 verbose #3377 > 00:00:43 verbose #7 ! validate(nb) 00:02:15 verbose #3378 > 00:00:43 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:02:15 verbose #3379 > 00:00:43 verbose #9 ! return _pygments_highlight( 00:02:15 verbose #3380 > 00:00:43 verbose #10 ! [NbConvertApp] Writing 299226 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.html 00:02:15 verbose #3381 > 00:00:43 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 908 } 00:02:15 verbose #3382 > 00:00:43 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 908 } 00:02:15 verbose #3383 > 00:00:43 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:02:15 verbose #3384 > "-c", 00:02:15 verbose #3385 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:02:15 verbose #3386 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:15 verbose #3387 > 00:00:43 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:02:15 verbose #3388 > 00:00:43 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:02:15 verbose #3389 > 00:00:43 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 28699 } 00:02:15 debug #3390 runtime.execute_with_options_async / { exit_code = 0; output_length = 32265 } 00:02:15 debug #3 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path rust/testing.dib --retries 3 00:02:15 debug #3391 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path rust/near.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:15 verbose #3392 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "rust/near.dib", "--retries", "3"])) } 00:02:15 verbose #3393 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:02:15 verbose #3394 > "repl", 00:02:15 verbose #3395 > "--exit-after-run", 00:02:15 verbose #3396 > "--run", 00:02:15 verbose #3397 > "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib", 00:02:15 verbose #3398 > "--output-path", 00:02:15 verbose #3399 > "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.ipynb", 00:02:15 verbose #3400 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:02:17 verbose #3401 > > 00:02:17 verbose #3402 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:17 verbose #3403 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:17 verbose #3404 > > │ # near │ 00:02:17 verbose #3405 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:19 verbose #3406 > > 00:02:19 verbose #3407 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:19 verbose #3408 > > open rust 00:02:19 verbose #3409 > > open rust.rust_operators 00:02:20 verbose #3410 > > 00:02:20 verbose #3411 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:20 verbose #3412 > > //// test 00:02:20 verbose #3413 > > 00:02:20 verbose #3414 > > open testing 00:02:20 verbose #3415 > > 00:02:20 verbose #3416 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:20 verbose #3417 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:20 verbose #3418 > > │ ## near │ 00:02:20 verbose #3419 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:20 verbose #3420 > > 00:02:20 verbose #3421 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:20 verbose #3422 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:20 verbose #3423 > > │ ### vector │ 00:02:20 verbose #3424 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:20 verbose #3425 > > 00:02:20 verbose #3426 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:20 verbose #3427 > > nominal vector t = 00:02:20 verbose #3428 > > `( 00:02:20 verbose #3429 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:02:20 verbose #3430 > > Fable.Core.Emit(\"near_sdk::store::vec::Vector<$0>\")>]]\n#endif\ntype 00:02:20 verbose #3431 > > near_sdk_store_vec_Vector<'T> = class end" 00:02:20 verbose #3432 > > $'' : $'near_sdk_store_vec_Vector<`t>' 00:02:20 verbose #3433 > > ) 00:02:20 verbose #3434 > > 00:02:20 verbose #3435 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:20 verbose #3436 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:20 verbose #3437 > > │ ### lookup_map │ 00:02:20 verbose #3438 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:20 verbose #3439 > > 00:02:20 verbose #3440 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:20 verbose #3441 > > nominal lookup_map k v = 00:02:20 verbose #3442 > > `( 00:02:20 verbose #3443 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:02:20 verbose #3444 > > Fable.Core.Emit(\"near_sdk::store::LookupMap<$0, $1>\")>]]\n#endif\ntype 00:02:20 verbose #3445 > > near_sdk_store_LookupMap<'K, 'V> = class end" 00:02:20 verbose #3446 > > $'' : $'near_sdk_store_LookupMap<`k, `v>' 00:02:20 verbose #3447 > > ) 00:02:20 verbose #3448 > > 00:02:20 verbose #3449 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:20 verbose #3450 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:20 verbose #3451 > > │ ### account_id │ 00:02:20 verbose #3452 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:20 verbose #3453 > > 00:02:20 verbose #3454 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:20 verbose #3455 > > nominal account_id = 00:02:20 verbose #3456 > > `( 00:02:20 verbose #3457 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:02:20 verbose #3458 > > Fable.Core.Emit(\"near_sdk::AccountId\")>]]\n#endif\ntype near_sdk_AccountId = 00:02:20 verbose #3459 > > class end" 00:02:20 verbose #3460 > > $'' : $'near_sdk_AccountId' 00:02:20 verbose #3461 > > ) 00:02:20 verbose #3462 > > 00:02:20 verbose #3463 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:20 verbose #3464 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:20 verbose #3465 > > │ ### new_lookup_map │ 00:02:20 verbose #3466 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:20 verbose #3467 > > 00:02:20 verbose #3468 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:20 verbose #3469 > > inl new_lookup_map prefix = 00:02:20 verbose #3470 > > !\($'"near_sdk::store::LookupMap::new(!prefix)"') 00:02:20 verbose #3471 > > 00:02:20 verbose #3472 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:20 verbose #3473 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:20 verbose #3474 > > │ ### new_vector │ 00:02:20 verbose #3475 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:20 verbose #3476 > > 00:02:20 verbose #3477 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:20 verbose #3478 > > inl new_vector prefix = 00:02:20 verbose #3479 > > !\($'"near_sdk::store::vec::Vector::new(!prefix)"') 00:02:21 verbose #3480 > 00:00:05 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 4436 } 00:02:21 verbose #3481 > 00:00:05 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:02:21 verbose #3482 > "nbconvert", 00:02:21 verbose #3483 > "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.ipynb", 00:02:21 verbose #3484 > "--to", 00:02:21 verbose #3485 > "html", 00:02:21 verbose #3486 > "--HTMLExporter.theme=dark", 00:02:21 verbose #3487 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:21 verbose #3488 > 00:00:05 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.ipynb to html 00:02:21 verbose #3489 > 00:00:05 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:02:21 verbose #3490 > 00:00:05 verbose #7 ! validate(nb) 00:02:22 verbose #3491 > 00:00:06 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:02:22 verbose #3492 > 00:00:06 verbose #9 ! return _pygments_highlight( 00:02:22 verbose #3493 > 00:00:06 verbose #10 ! [NbConvertApp] Writing 280646 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.html 00:02:22 verbose #3494 > 00:00:06 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 } 00:02:22 verbose #3495 > 00:00:06 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 } 00:02:22 verbose #3496 > 00:00:06 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:02:22 verbose #3497 > "-c", 00:02:22 verbose #3498 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:02:22 verbose #3499 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:22 verbose #3500 > 00:00:06 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:02:22 verbose #3501 > 00:00:06 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:02:22 verbose #3502 > 00:00:06 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 5397 } 00:02:22 debug #3503 runtime.execute_with_options_async / { exit_code = 0; output_length = 8424 } 00:02:22 debug #4 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path rust/near.dib --retries 3 00:02:22 debug #3504 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path testing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:22 verbose #3505 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "testing.dib", "--retries", "3"])) } 00:02:22 verbose #3506 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:02:22 verbose #3507 > "repl", 00:02:22 verbose #3508 > "--exit-after-run", 00:02:22 verbose #3509 > "--run", 00:02:22 verbose #3510 > "/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib", 00:02:22 verbose #3511 > "--output-path", 00:02:22 verbose #3512 > "/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.ipynb", 00:02:22 verbose #3513 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:02:23 verbose #3514 > > 00:02:23 verbose #3515 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:23 verbose #3516 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:23 verbose #3517 > > │ # testing │ 00:02:23 verbose #3518 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:23 verbose #3519 > > 00:02:23 verbose #3520 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:23 verbose #3521 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:23 verbose #3522 > > │ ## testing │ 00:02:23 verbose #3523 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:23 verbose #3524 > > 00:02:23 verbose #3525 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:23 verbose #3526 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:23 verbose #3527 > > │ ### testing_trace │ 00:02:23 verbose #3528 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:26 verbose #3529 > > 00:02:26 verbose #3530 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:26 verbose #3531 > > union testing_trace = 00:02:26 verbose #3532 > > | Console 00:02:26 verbose #3533 > > | Trace 00:02:26 verbose #3534 > > | TraceRaw 00:02:26 verbose #3535 > > | Silent 00:02:26 verbose #3536 > > 00:02:26 verbose #3537 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:26 verbose #3538 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:26 verbose #3539 > > │ ### __expect │ 00:02:26 verbose #3540 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:26 verbose #3541 > > 00:02:26 verbose #3542 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:26 verbose #3543 > > inl rec __expect fn trace' name b a = 00:02:26 verbose #3544 > > inl result = fn a b 00:02:26 verbose #3545 > > inl result = 00:02:26 verbose #3546 > > result || join result 00:02:26 verbose #3547 > > inl get_raw_text () = 00:02:26 verbose #3548 > > backend_switch { 00:02:26 verbose #3549 > > Fsharp = fun () => $'$"{!name} / actual: %A{!a} / expected: %A{!b}"' 00:02:26 verbose #3550 > > : string 00:02:26 verbose #3551 > > Python = fun () => $'f"{!name} / actual: {!a} / expected: {!b}"' : 00:02:26 verbose #3552 > > string 00:02:26 verbose #3553 > > } 00:02:26 verbose #3554 > > match trace' with 00:02:26 verbose #3555 > > | Console => 00:02:26 verbose #3556 > > inl text = get_raw_text () 00:02:26 verbose #3557 > > text |> console.write_line 00:02:26 verbose #3558 > > text 00:02:26 verbose #3559 > > | Trace => 00:02:26 verbose #3560 > > trace Info (fun () => name) fun () => { actual = a; expected = b } 00:02:26 verbose #3561 > > get_raw_text () 00:02:26 verbose #3562 > > | TraceRaw => 00:02:26 verbose #3563 > > inl text = get_raw_text () 00:02:26 verbose #3564 > > trace_raw Info fun () => text 00:02:26 verbose #3565 > > text 00:02:26 verbose #3566 > > | Silent => reflection.nameof { __expect } 00:02:26 verbose #3567 > > |> assert result 00:02:27 verbose #3568 > > 00:02:27 verbose #3569 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:27 verbose #3570 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:27 verbose #3571 > > │ ### __assert_approx_eq │ 00:02:27 verbose #3572 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:27 verbose #3573 > > 00:02:27 verbose #3574 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:27 verbose #3575 > > inl rec __assert_approx_eq trace e b a = 00:02:27 verbose #3576 > > __expect 00:02:27 verbose #3577 > > (fun a b => abs (b - a) < (e |> optionm.defaultWith 0.00000001)) 00:02:27 verbose #3578 > > trace 00:02:27 verbose #3579 > > (reflection.nameof { __assert_approx_eq }) 00:02:27 verbose #3580 > > b 00:02:27 verbose #3581 > > a 00:02:27 verbose #3582 > > 00:02:27 verbose #3583 > > inl _assert_approx_eq e b a = 00:02:27 verbose #3584 > > __assert_approx_eq Console e b a 00:02:27 verbose #3585 > > 00:02:27 verbose #3586 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:27 verbose #3587 > > //// test 00:02:27 verbose #3588 > > ///! fsharp 00:02:27 verbose #3589 > > ///! cuda 00:02:27 verbose #3590 > > ///! rust 00:02:27 verbose #3591 > > ///! typescript 00:02:27 verbose #3592 > > ///! python 00:02:27 verbose #3593 > > 00:02:27 verbose #3594 > > 12.345f64 00:02:27 verbose #3595 > > |> _assert_approx_eq (Some 0.0001f64) 12.345f64 00:02:38 verbose #3596 > > 00:02:38 verbose #3597 > > ╭─[ 11.80s - return value ]────────────────────────────────────────────────────╮ 00:02:38 verbose #3598 > > │ .py output (Cuda): │ 00:02:38 verbose #3599 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345 │ 00:02:38 verbose #3600 > > │ │ 00:02:38 verbose #3601 > > │ .rs output: │ 00:02:38 verbose #3602 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345 │ 00:02:38 verbose #3603 > > │ │ 00:02:38 verbose #3604 > > │ .ts output: │ 00:02:38 verbose #3605 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345 │ 00:02:38 verbose #3606 > > │ │ 00:02:38 verbose #3607 > > │ .py output: │ 00:02:38 verbose #3608 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345 │ 00:02:38 verbose #3609 > > │ │ 00:02:38 verbose #3610 > > │ │ 00:02:38 verbose #3611 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:38 verbose #3612 > > 00:02:38 verbose #3613 > > ╭─[ 11.81s - stdout ]──────────────────────────────────────────────────────────╮ 00:02:38 verbose #3614 > > │ .fsx output: │ 00:02:38 verbose #3615 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345 │ 00:02:38 verbose #3616 > > │ │ 00:02:38 verbose #3617 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:38 verbose #3618 > > 00:02:38 verbose #3619 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:38 verbose #3620 > > //// test 00:02:38 verbose #3621 > > //// print_code 00:02:38 verbose #3622 > > 00:02:38 verbose #3623 > > 1f64 00:02:38 verbose #3624 > > |> __assert_approx_eq Console (Some 3) 2 00:02:39 verbose #3625 > > 00:02:39 verbose #3626 > > ╭─[ 100.23ms - stdout ]────────────────────────────────────────────────────────╮ 00:02:39 verbose #3627 > > │ let rec closure0 (v0 : string) () : unit = │ 00:02:39 verbose #3628 > > │ let v1 : (string -> unit) = System.Console.WriteLine │ 00:02:39 verbose #3629 > > │ v1 v0 │ 00:02:39 verbose #3630 > > │ and method0 () : unit = │ 00:02:39 verbose #3631 > > │ let v0 : string = "__assert_approx_eq" │ 00:02:39 verbose #3632 > > │ let v1 : string = $"{v0} / actual: %A{1.0} / expected: %A{2.0}" │ 00:02:39 verbose #3633 > > │ let v4 : unit = () │ 00:02:39 verbose #3634 > > │ let v5 : (unit -> unit) = closure0(v1) │ 00:02:39 verbose #3635 > > │ let v6 : unit = (fun () -> v5 (); v4) () │ 00:02:39 verbose #3636 > > │ () │ 00:02:39 verbose #3637 > > │ method0() │ 00:02:39 verbose #3638 > > │ │ 00:02:39 verbose #3639 > > │ __assert_approx_eq / actual: 1.0 / expected: 2.0 │ 00:02:39 verbose #3640 > > │ │ 00:02:39 verbose #3641 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:39 verbose #3642 > > 00:02:39 verbose #3643 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:39 verbose #3644 > > //// test 00:02:39 verbose #3645 > > //// print_code 00:02:39 verbose #3646 > > 00:02:39 verbose #3647 > > (dyn 1f64) 00:02:39 verbose #3648 > > |> _assert_approx_eq (Some 3) 2 00:02:39 verbose #3649 > > 00:02:39 verbose #3650 > > ╭─[ 192.05ms - stdout ]────────────────────────────────────────────────────────╮ 00:02:39 verbose #3651 > > │ let rec method1 (v0 : bool) : bool = │ 00:02:39 verbose #3652 > > │ v0 │ 00:02:39 verbose #3653 > > │ and closure0 (v0 : string) () : unit = │ 00:02:39 verbose #3654 > > │ let v1 : (string -> unit) = System.Console.WriteLine │ 00:02:39 verbose #3655 > > │ v1 v0 │ 00:02:39 verbose #3656 > > │ and method0 () : unit = │ 00:02:39 verbose #3657 > > │ let v0 : float = 1.0 │ 00:02:39 verbose #3658 > > │ let v1 : float = 2.0 - v0 │ 00:02:39 verbose #3659 > > │ let v2 : float = -v1 │ 00:02:39 verbose #3660 > > │ let v3 : bool = v1 >= v2 │ 00:02:39 verbose #3661 > > │ let v4 : float = │ 00:02:39 verbose #3662 > > │ if v3 then │ 00:02:39 verbose #3663 > > │ v1 │ 00:02:39 verbose #3664 > > │ else │ 00:02:39 verbose #3665 > > │ v2 │ 00:02:39 verbose #3666 > > │ let v5 : bool = v4 < 3.0 │ 00:02:39 verbose #3667 > > │ let v7 : bool = │ 00:02:39 verbose #3668 > > │ if v5 then │ 00:02:39 verbose #3669 > > │ true │ 00:02:39 verbose #3670 > > │ else │ 00:02:39 verbose #3671 > > │ method1(v5) │ 00:02:39 verbose #3672 > > │ let v8 : string = "__assert_approx_eq" │ 00:02:39 verbose #3673 > > │ let v9 : string = $"{v8} / actual: %A{v0} / expected: %A{2.0}" │ 00:02:39 verbose #3674 > > │ let v12 : unit = () │ 00:02:39 verbose #3675 > > │ let v13 : (unit -> unit) = closure0(v9) │ 00:02:39 verbose #3676 > > │ let v14 : unit = (fun () -> v13 (); v12) () │ 00:02:39 verbose #3677 > > │ let v16 : bool = v7 = false │ 00:02:39 verbose #3678 > > │ if v16 then │ 00:02:39 verbose #3679 > > │ failwith<unit> v9 │ 00:02:39 verbose #3680 > > │ method0() │ 00:02:39 verbose #3681 > > │ │ 00:02:39 verbose #3682 > > │ __assert_approx_eq / actual: 1.0 / expected: 2.0 │ 00:02:39 verbose #3683 > > │ │ 00:02:39 verbose #3684 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:39 verbose #3685 > > 00:02:39 verbose #3686 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:39 verbose #3687 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:39 verbose #3688 > > │ ### __assert_eq │ 00:02:39 verbose #3689 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:39 verbose #3690 > > 00:02:39 verbose #3691 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:39 verbose #3692 > > inl rec __assert_eq trace b a = 00:02:39 verbose #3693 > > __expect (=) trace (reflection.nameof { __assert_eq }) b a 00:02:39 verbose #3694 > > 00:02:39 verbose #3695 > > inl _assert_eq b a = 00:02:39 verbose #3696 > > __assert_eq Console b a 00:02:39 verbose #3697 > > 00:02:39 verbose #3698 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:39 verbose #3699 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:39 verbose #3700 > > │ ### __assert_eq' │ 00:02:39 verbose #3701 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:39 verbose #3702 > > 00:02:39 verbose #3703 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:39 verbose #3704 > > inl rec __assert_eq' trace b a = 00:02:39 verbose #3705 > > __expect (=.) trace (reflection.nameof { __assert_eq' }) b a 00:02:39 verbose #3706 > > 00:02:39 verbose #3707 > > inl _assert_eq' b a = 00:02:39 verbose #3708 > > __assert_eq' Console b a 00:02:39 verbose #3709 > > 00:02:39 verbose #3710 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:39 verbose #3711 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:39 verbose #3712 > > │ ### __assert_ne │ 00:02:39 verbose #3713 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:39 verbose #3714 > > 00:02:39 verbose #3715 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:39 verbose #3716 > > inl rec __assert_ne trace b a = 00:02:39 verbose #3717 > > __expect (<>.) trace (reflection.nameof { __assert_ne }) b a 00:02:39 verbose #3718 > > 00:02:39 verbose #3719 > > inl _assert_ne b a = 00:02:39 verbose #3720 > > __assert_ne Console b a 00:02:39 verbose #3721 > > 00:02:39 verbose #3722 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:39 verbose #3723 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:39 verbose #3724 > > │ ### __assert_gt │ 00:02:39 verbose #3725 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:39 verbose #3726 > > 00:02:39 verbose #3727 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:39 verbose #3728 > > inl rec __assert_gt trace b a = 00:02:39 verbose #3729 > > __expect (>) trace (reflection.nameof { __assert_gt }) b a 00:02:39 verbose #3730 > > 00:02:39 verbose #3731 > > inl _assert_gt b a = 00:02:39 verbose #3732 > > __assert_gt Console b a 00:02:39 verbose #3733 > > 00:02:39 verbose #3734 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:39 verbose #3735 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:39 verbose #3736 > > │ ### __assert_ge │ 00:02:39 verbose #3737 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:39 verbose #3738 > > 00:02:39 verbose #3739 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:39 verbose #3740 > > inl rec __assert_ge trace b a = 00:02:39 verbose #3741 > > __expect (>=) trace (reflection.nameof { __assert_ge }) b a 00:02:39 verbose #3742 > > 00:02:39 verbose #3743 > > inl _assert_ge b a = 00:02:39 verbose #3744 > > __assert_ge Console b a 00:02:39 verbose #3745 > > 00:02:39 verbose #3746 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:39 verbose #3747 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:39 verbose #3748 > > │ ### __assert_lt │ 00:02:39 verbose #3749 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:39 verbose #3750 > > 00:02:39 verbose #3751 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:39 verbose #3752 > > inl rec __assert_lt trace b a = 00:02:39 verbose #3753 > > __expect (<) trace (reflection.nameof { __assert_lt }) b a 00:02:39 verbose #3754 > > 00:02:39 verbose #3755 > > inl _assert_lt b a = 00:02:39 verbose #3756 > > __assert_lt Console b a 00:02:39 verbose #3757 > > 00:02:39 verbose #3758 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:39 verbose #3759 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:39 verbose #3760 > > │ ### __assert_le │ 00:02:39 verbose #3761 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:39 verbose #3762 > > 00:02:39 verbose #3763 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:39 verbose #3764 > > inl rec __assert_le trace b a = 00:02:39 verbose #3765 > > __expect (<=) trace (reflection.nameof { __assert_le }) b a 00:02:39 verbose #3766 > > 00:02:39 verbose #3767 > > inl _assert_le b a = 00:02:39 verbose #3768 > > __assert_le Console b a 00:02:39 verbose #3769 > > 00:02:39 verbose #3770 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:39 verbose #3771 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:39 verbose #3772 > > │ ### __assert_string_contains │ 00:02:39 verbose #3773 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:39 verbose #3774 > > 00:02:39 verbose #3775 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:39 verbose #3776 > > inl rec __assert_string_contains trace b a = 00:02:39 verbose #3777 > > __expect sm'.contains trace (reflection.nameof { __assert_string_contains }) 00:02:39 verbose #3778 > > a b 00:02:39 verbose #3779 > > 00:02:39 verbose #3780 > > inl _assert_string_contains b a = 00:02:39 verbose #3781 > > __assert_string_contains Console b a 00:02:39 verbose #3782 > > 00:02:39 verbose #3783 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:39 verbose #3784 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:39 verbose #3785 > > │ ### __assert_between │ 00:02:39 verbose #3786 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:39 verbose #3787 > > 00:02:39 verbose #3788 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:39 verbose #3789 > > inl rec __assert_between trace a b actual = 00:02:39 verbose #3790 > > inl assert_between actual (a, b) = 00:02:39 verbose #3791 > > __assert_ge Silent a actual 00:02:39 verbose #3792 > > __assert_le Silent b actual 00:02:39 verbose #3793 > > true 00:02:39 verbose #3794 > > __expect assert_between trace (reflection.nameof { __assert_between }) (a, 00:02:39 verbose #3795 > > b) actual 00:02:39 verbose #3796 > > 00:02:39 verbose #3797 > > inl _assert_between a b actual = 00:02:39 verbose #3798 > > __assert_between Console a b actual 00:02:39 verbose #3799 > > 00:02:39 verbose #3800 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:39 verbose #3801 > > inl rec _assert_fn fn list = 00:02:39 verbose #3802 > > list 00:02:39 verbose #3803 > > |> listm.rev 00:02:39 verbose #3804 > > |> listm.map fun input, expected => join 00:02:39 verbose #3805 > > input 00:02:39 verbose #3806 > > |> fn 00:02:39 verbose #3807 > > |> resultm.get 00:02:39 verbose #3808 > > |> fun x => 00:02:39 verbose #3809 > > inl expected' = join expected 00:02:39 verbose #3810 > > inl name = reflection.nameof { _assert_fn } 00:02:39 verbose #3811 > > try 00:02:39 verbose #3812 > > fun () => 00:02:39 verbose #3813 > > console.write_line "" 00:02:39 verbose #3814 > > trace Verbose 00:02:39 verbose #3815 > > fun () => name 00:02:39 verbose #3816 > > fun () => { input } 00:02:39 verbose #3817 > > x 00:02:39 verbose #3818 > > |> _assert_eq' expected' 00:02:39 verbose #3819 > > true 00:02:39 verbose #3820 > > fun ex => 00:02:39 verbose #3821 > > trace Critical 00:02:39 verbose #3822 > > fun () => 00:02:39 verbose #3823 > > $'$"{!name} / error"' 00:02:39 verbose #3824 > > fun () => { ex expected } 00:02:39 verbose #3825 > > Some false 00:02:39 verbose #3826 > > |> optionm.value 00:02:39 verbose #3827 > > |> listm'.filter not 00:02:39 verbose #3828 > > |> function 00:02:39 verbose #3829 > > | [[]] => () 00:02:39 verbose #3830 > > | x => failwith $'$"{!x}"' 00:02:40 verbose #3831 > > 00:02:40 verbose #3832 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:40 verbose #3833 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:40 verbose #3834 > > │ ## fsharp │ 00:02:40 verbose #3835 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:40 verbose #3836 > > 00:02:40 verbose #3837 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:40 verbose #3838 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:40 verbose #3839 > > │ ### __assert_contains │ 00:02:40 verbose #3840 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:40 verbose #3841 > > 00:02:40 verbose #3842 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:40 verbose #3843 > > inl rec __assert_contains forall t u. (trace : testing_trace) (b : t) (a : u) : 00:02:40 verbose #3844 > > () = 00:02:40 verbose #3845 > > __expect 00:02:40 verbose #3846 > > fun a b => 00:02:40 verbose #3847 > > a 00:02:40 verbose #3848 > > |> $'List.ofSeq' 00:02:40 verbose #3849 > > |> fun x => x : listm'.list' t 00:02:40 verbose #3850 > > |> $'List.tryFind' ((=) b) 00:02:40 verbose #3851 > > |> optionm'.unbox 00:02:40 verbose #3852 > > |> fun (x : option t) => x <> None 00:02:40 verbose #3853 > > trace 00:02:40 verbose #3854 > > // TODO: forall nameof (Cannot dyn a forall into a runtime var.) 00:02:40 verbose #3855 > > // Metavars that are not part of the enclosing function's signature are 00:02:40 verbose #3856 > > not allowed. They need to be values. 00:02:40 verbose #3857 > > // Got: {__assert_contains : testing_trace -> _ -> _ -> ()} -> string 00:02:40 verbose #3858 > > // (reflection.nameof { __assert_contains }) 00:02:40 verbose #3859 > > "__assert_contains" 00:02:40 verbose #3860 > > b 00:02:40 verbose #3861 > > a 00:02:40 verbose #3862 > > 00:02:40 verbose #3863 > > inl _assert_contains b a = 00:02:40 verbose #3864 > > __assert_contains Console b a 00:02:40 verbose #3865 > > 00:02:40 verbose #3866 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:40 verbose #3867 > > //// test 00:02:40 verbose #3868 > > 00:02:40 verbose #3869 > > ;[[ "a"; "b"; "c" ]] 00:02:40 verbose #3870 > > |> _assert_contains "b" 00:02:40 verbose #3871 > > 00:02:40 verbose #3872 > > ╭─[ 718.17ms - stdout ]────────────────────────────────────────────────────────╮ 00:02:40 verbose #3873 > > │ __assert_contains / actual: [|"a"; "b"; "c"|] / expected: "b" │ 00:02:40 verbose #3874 > > │ │ 00:02:40 verbose #3875 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:40 verbose #3876 > > 00:02:40 verbose #3877 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:40 verbose #3878 > > //// test 00:02:40 verbose #3879 > > 00:02:40 verbose #3880 > > "abcd" 00:02:40 verbose #3881 > > |> _assert_contains 'b' 00:02:41 verbose #3882 > > 00:02:41 verbose #3883 > > ╭─[ 131.13ms - stdout ]────────────────────────────────────────────────────────╮ 00:02:41 verbose #3884 > > │ __assert_contains / actual: "abcd" / expected: 'b' │ 00:02:41 verbose #3885 > > │ │ 00:02:41 verbose #3886 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:41 verbose #3887 > > 00:02:41 verbose #3888 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:41 verbose #3889 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:41 verbose #3890 > > │ ### _throws │ 00:02:41 verbose #3891 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:41 verbose #3892 > > 00:02:41 verbose #3893 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:41 verbose #3894 > > inl _throws (fn : () -> ()) : option exn = 00:02:41 verbose #3895 > > inl none = None : option exn 00:02:41 verbose #3896 > > inl some (s : exn) = Some s 00:02:41 verbose #3897 > > $'try !fn (); !none with ex -> ex |> !some ' 00:02:41 verbose #3898 > > 00:02:41 verbose #3899 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:41 verbose #3900 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:41 verbose #3901 > > │ ### print_and_return │ 00:02:41 verbose #3902 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:41 verbose #3903 > > 00:02:41 verbose #3904 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:41 verbose #3905 > > inl rec print_and_return x = 00:02:41 verbose #3906 > > inl name = reflection.nameof { print_and_return } 00:02:41 verbose #3907 > > $'printfn $"{!name} / x: {!x}"' 00:02:41 verbose #3908 > > x 00:02:41 verbose #3909 > 00:00:18 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 22544 } 00:02:41 verbose #3910 > 00:00:18 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:02:41 verbose #3911 > "nbconvert", 00:02:41 verbose #3912 > "/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.ipynb", 00:02:41 verbose #3913 > "--to", 00:02:41 verbose #3914 > "html", 00:02:41 verbose #3915 > "--HTMLExporter.theme=dark", 00:02:41 verbose #3916 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:41 verbose #3917 > 00:00:19 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.ipynb to html 00:02:41 verbose #3918 > 00:00:19 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:02:41 verbose #3919 > 00:00:19 verbose #7 ! validate(nb) 00:02:42 verbose #3920 > 00:00:19 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:02:42 verbose #3921 > 00:00:19 verbose #9 ! return _pygments_highlight( 00:02:42 verbose #3922 > 00:00:19 verbose #10 ! [NbConvertApp] Writing 318363 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.html 00:02:42 verbose #3923 > 00:00:19 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 } 00:02:42 verbose #3924 > 00:00:19 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 } 00:02:42 verbose #3925 > 00:00:19 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:02:42 verbose #3926 > "-c", 00:02:42 verbose #3927 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:02:42 verbose #3928 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:42 verbose #3929 > 00:00:20 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:02:42 verbose #3930 > 00:00:20 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:02:42 verbose #3931 > 00:00:20 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 23501 } 00:02:42 debug #3932 runtime.execute_with_options_async / { exit_code = 0; output_length = 27144 } 00:02:42 debug #5 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path testing.dib --retries 3 00:02:42 debug #3933 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path guid.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:42 verbose #3934 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "guid.dib", "--retries", "3"])) } 00:02:42 verbose #3935 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:02:42 verbose #3936 > "repl", 00:02:42 verbose #3937 > "--exit-after-run", 00:02:42 verbose #3938 > "--run", 00:02:42 verbose #3939 > "/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib", 00:02:42 verbose #3940 > "--output-path", 00:02:42 verbose #3941 > "/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.ipynb", 00:02:42 verbose #3942 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:02:44 verbose #3943 > > 00:02:44 verbose #3944 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:44 verbose #3945 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:44 verbose #3946 > > │ # guid │ 00:02:44 verbose #3947 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:46 verbose #3948 > > 00:02:46 verbose #3949 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:46 verbose #3950 > > //// test 00:02:46 verbose #3951 > > 00:02:46 verbose #3952 > > open testing 00:02:47 verbose #3953 > > 00:02:47 verbose #3954 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:47 verbose #3955 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:47 verbose #3956 > > │ ## guid │ 00:02:47 verbose #3957 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:47 verbose #3958 > > 00:02:47 verbose #3959 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:47 verbose #3960 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:47 verbose #3961 > > │ ### guid │ 00:02:47 verbose #3962 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:47 verbose #3963 > > 00:02:47 verbose #3964 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:47 verbose #3965 > > nominal guid_python = 00:02:47 verbose #3966 > > `( 00:02:47 verbose #3967 > > global "import uuid" 00:02:47 verbose #3968 > > $'' : $'uuid.UUID' 00:02:47 verbose #3969 > > ) 00:02:47 verbose #3970 > > type guid_switch = 00:02:47 verbose #3971 > > { 00:02:47 verbose #3972 > > Fsharp : $'System.Guid' 00:02:47 verbose #3973 > > Python : guid_python 00:02:47 verbose #3974 > > } 00:02:47 verbose #3975 > > nominal guid = $'backend_switch `(guid_switch)' 00:02:47 verbose #3976 > > 00:02:47 verbose #3977 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:47 verbose #3978 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:47 verbose #3979 > > │ ### new_guid │ 00:02:47 verbose #3980 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:47 verbose #3981 > > 00:02:47 verbose #3982 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:47 verbose #3983 > > inl new_guid (x : string) : guid = 00:02:47 verbose #3984 > > x |> convert 00:02:47 verbose #3985 > > 00:02:47 verbose #3986 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:47 verbose #3987 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:47 verbose #3988 > > │ ### new_raw_guid │ 00:02:47 verbose #3989 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:47 verbose #3990 > > 00:02:47 verbose #3991 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:47 verbose #3992 > > inl new_raw_guid () : guid = 00:02:47 verbose #3993 > > backend_switch { 00:02:47 verbose #3994 > > Fsharp = fun () => $'System.Guid.NewGuid' () : guid 00:02:47 verbose #3995 > > Python = fun () => $'uuid.uuid4()' : guid 00:02:47 verbose #3996 > > } 00:02:47 verbose #3997 > > 00:02:47 verbose #3998 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:47 verbose #3999 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:02:47 verbose #4000 > > │ ### hash_guid │ 00:02:47 verbose #4001 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:02:47 verbose #4002 > > 00:02:47 verbose #4003 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:47 verbose #4004 > > type hash_guid = guid 00:02:47 verbose #4005 > > 00:02:47 verbose #4006 > > let hash_guid (~hash : string) : hash_guid = 00:02:47 verbose #4007 > > run_target function 00:02:47 verbose #4008 > > | Rust (Contract) => fun () => null () 00:02:47 verbose #4009 > > | _ => fun () => 00:02:47 verbose #4010 > > inl hash = hash |> sm'.pad_left 32i32 '0' 00:02:47 verbose #4011 > > backend_switch { 00:02:47 verbose #4012 > > Fsharp = fun () => 00:02:47 verbose #4013 > > $'`hash_guid 00:02:47 verbose #4014 > > $"{!hash.[[0..7]]}-{!hash.[[8..11]]}-{!hash.[[12..15]]}-{!hash.[[16..19]]}-{!has 00:02:47 verbose #4015 > > h.[[20..31]]}"' : hash_guid 00:02:47 verbose #4016 > > Python = fun () => 00:02:47 verbose #4017 > > $'f"{!hash[[0:8]]}-{!hash[[8:12]]}-{!hash[[12:16]]}-{!hash[[16:20]]}-{!hash[[20: 00:02:47 verbose #4018 > > 32]]}"' : hash_guid 00:02:47 verbose #4019 > > } 00:02:47 verbose #4020 > > 00:02:47 verbose #4021 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:47 verbose #4022 > > //// test 00:02:47 verbose #4023 > > ///! fsharp 00:02:47 verbose #4024 > > ///! cuda 00:02:47 verbose #4025 > > ///! rust 00:02:47 verbose #4026 > > ///! typescript 00:02:47 verbose #4027 > > ///! python 00:02:47 verbose #4028 > > 00:02:47 verbose #4029 > > "" 00:02:47 verbose #4030 > > |> hash_guid 00:02:47 verbose #4031 > > |> _assert_eq' (new_guid "00000000-0000-0000-0000-000000000000") 00:02:47 verbose #4032 > > 00:02:47 verbose #4033 > > "123456789012345678901234567890123" 00:02:47 verbose #4034 > > |> hash_guid 00:02:47 verbose #4035 > > |> _assert_eq' (new_guid "12345678-9012-3456-7890-123456789012") 00:03:00 verbose #4036 > > 00:03:00 verbose #4037 > > ╭─[ 12.40s - return value ]────────────────────────────────────────────────────╮ 00:03:00 verbose #4038 > > │ │ 00:03:00 verbose #4039 > > │ .py output (Cuda): │ 00:03:00 verbose #4040 > > │ __assert_eq' / actual: 00000000-0000-0000-0000-000000000000 / expected: │ 00:03:00 verbose #4041 > > │ 00000000-0000-0000-0000-000000000000 │ 00:03:00 verbose #4042 > > │ __assert_eq' / actual: 12345678-9012-3456-7890-123456789012 / expected: │ 00:03:00 verbose #4043 > > │ 12345678-9012-3456-7890-123456789012 │ 00:03:00 verbose #4044 > > │ │ 00:03:00 verbose #4045 > > │ │ 00:03:00 verbose #4046 > > │ .rs output: │ 00:03:00 verbose #4047 > > │ __assert_eq' / actual: Guid(00000000-0000-0000-0000-000000000000) / │ 00:03:00 verbose #4048 > > │ expected: Guid(00000000-0000-0000-0000-000000000000) │ 00:03:00 verbose #4049 > > │ __assert_eq' / actual: Guid(12345678-9012-3456-7890-123456789012) / │ 00:03:00 verbose #4050 > > │ expected: Guid(12345678-9012-3456-7890-123456789012) │ 00:03:00 verbose #4051 > > │ │ 00:03:00 verbose #4052 > > │ │ 00:03:00 verbose #4053 > > │ .ts output: │ 00:03:00 verbose #4054 > > │ __assert_eq' / actual: 00000000-0000-0000-0000-000000000000 / expected: │ 00:03:00 verbose #4055 > > │ 00000000-0000-0000-0000-000000000000 │ 00:03:00 verbose #4056 > > │ __assert_eq' / actual: 12345678-9012-3456-7890-123456789012 / expected: │ 00:03:00 verbose #4057 > > │ 12345678-9012-3456-7890-123456789012 │ 00:03:00 verbose #4058 > > │ │ 00:03:00 verbose #4059 > > │ │ 00:03:00 verbose #4060 > > │ .py output: │ 00:03:00 verbose #4061 > > │ __assert_eq' / actual: 00000000-0000-0000-0000-000000000000 / expected: │ 00:03:00 verbose #4062 > > │ 00000000-0000-0000-0000-000000000000 │ 00:03:00 verbose #4063 > > │ __assert_eq' / actual: 12345678-9012-3456-7890-123456789012 / expected: │ 00:03:00 verbose #4064 > > │ 12345678-9012-3456-7890-123456789012 │ 00:03:00 verbose #4065 > > │ │ 00:03:00 verbose #4066 > > │ │ 00:03:00 verbose #4067 > > │ │ 00:03:00 verbose #4068 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:00 verbose #4069 > > 00:03:00 verbose #4070 > > ╭─[ 12.41s - stdout ]──────────────────────────────────────────────────────────╮ 00:03:00 verbose #4071 > > │ .fsx output: │ 00:03:00 verbose #4072 > > │ __assert_eq' / actual: 00000000-0000-0000-0000-000000000000 / expected: │ 00:03:00 verbose #4073 > > │ 00000000-0000-0000-0000-000000000000 │ 00:03:00 verbose #4074 > > │ __assert_eq' / actual: 12345678-9012-3456-7890-123456789012 / expected: │ 00:03:00 verbose #4075 > > │ 12345678-9012-3456-7890-123456789012 │ 00:03:00 verbose #4076 > > │ │ 00:03:00 verbose #4077 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:00 verbose #4078 > > 00:03:00 verbose #4079 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:00 verbose #4080 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:00 verbose #4081 > > │ ## main │ 00:03:00 verbose #4082 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:00 verbose #4083 > > 00:03:00 verbose #4084 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:00 verbose #4085 > > inl main () = 00:03:00 verbose #4086 > > $'let new_guid x = !new_guid x' : () 00:03:00 verbose #4087 > > $'let hash_guid x = !hash_guid x' : () 00:03:00 verbose #4088 > > $'let new_raw_guid x = !new_raw_guid x' : () 00:03:00 verbose #4089 > 00:00:17 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 9171 } 00:03:00 verbose #4090 > 00:00:17 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:03:00 verbose #4091 > "nbconvert", 00:03:00 verbose #4092 > "/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.ipynb", 00:03:00 verbose #4093 > "--to", 00:03:00 verbose #4094 > "html", 00:03:00 verbose #4095 > "--HTMLExporter.theme=dark", 00:03:00 verbose #4096 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:03:00 verbose #4097 > 00:00:18 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.ipynb to html 00:03:00 verbose #4098 > 00:00:18 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:03:00 verbose #4099 > 00:00:18 verbose #7 ! validate(nb) 00:03:01 verbose #4100 > 00:00:18 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:03:01 verbose #4101 > 00:00:18 verbose #9 ! return _pygments_highlight( 00:03:01 verbose #4102 > 00:00:18 verbose #10 ! [NbConvertApp] Writing 284775 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.html 00:03:01 verbose #4103 > 00:00:18 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 } 00:03:01 verbose #4104 > 00:00:18 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 } 00:03:01 verbose #4105 > 00:00:18 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:03:01 verbose #4106 > "-c", 00:03:01 verbose #4107 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:03:01 verbose #4108 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:03:01 verbose #4109 > 00:00:18 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:03:01 verbose #4110 > 00:00:18 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:03:01 verbose #4111 > 00:00:18 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 10122 } 00:03:01 debug #4112 runtime.execute_with_options_async / { exit_code = 0; output_length = 13239 } 00:03:01 debug #6 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path guid.dib --retries 3 00:03:01 debug #4113 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path async.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:03:01 verbose #4114 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "async.dib", "--retries", "3"])) } 00:03:01 verbose #4115 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:03:01 verbose #4116 > "repl", 00:03:01 verbose #4117 > "--exit-after-run", 00:03:01 verbose #4118 > "--run", 00:03:01 verbose #4119 > "/home/runner/work/polyglot/polyglot/lib/spiral/async.dib", 00:03:01 verbose #4120 > "--output-path", 00:03:01 verbose #4121 > "/home/runner/work/polyglot/polyglot/lib/spiral/async.dib.ipynb", 00:03:01 verbose #4122 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/async.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/async.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:03:03 verbose #4123 > > 00:03:03 verbose #4124 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:03 verbose #4125 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:03 verbose #4126 > > │ # async │ 00:03:03 verbose #4127 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:05 verbose #4128 > > 00:03:05 verbose #4129 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:05 verbose #4130 > > //// test 00:03:05 verbose #4131 > > 00:03:05 verbose #4132 > > open testing 00:03:06 verbose #4133 > > 00:03:06 verbose #4134 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:06 verbose #4135 > > open rust 00:03:06 verbose #4136 > > open rust_operators 00:03:06 verbose #4137 > > 00:03:06 verbose #4138 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:06 verbose #4139 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:06 verbose #4140 > > │ ## rust │ 00:03:06 verbose #4141 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:06 verbose #4142 > > 00:03:06 verbose #4143 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:06 verbose #4144 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:06 verbose #4145 > > │ ### future │ 00:03:06 verbose #4146 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:06 verbose #4147 > > 00:03:06 verbose #4148 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:06 verbose #4149 > > nominal future t = 00:03:06 verbose #4150 > > `( 00:03:06 verbose #4151 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:06 verbose #4152 > > Fable.Core.Emit(\"std::future::Future<Output = $0>\")>]]\n#endif\ntype 00:03:06 verbose #4153 > > std_future_Future<'T> = class end" 00:03:06 verbose #4154 > > $'' : $'std_future_Future<`t>' 00:03:06 verbose #4155 > > ) 00:03:06 verbose #4156 > > 00:03:06 verbose #4157 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:06 verbose #4158 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:06 verbose #4159 > > │ ### future_pin │ 00:03:06 verbose #4160 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:06 verbose #4161 > > 00:03:06 verbose #4162 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:06 verbose #4163 > > type future_pin t = rust.pin (rust.box (rust.dyn' (future t))) 00:03:06 verbose #4164 > > 00:03:06 verbose #4165 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:06 verbose #4166 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:06 verbose #4167 > > │ ### future_pin_send │ 00:03:06 verbose #4168 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:06 verbose #4169 > > 00:03:06 verbose #4170 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:06 verbose #4171 > > type future_pin_send t = rust.pin (rust.box (rust.send (rust.dyn' (future t)))) 00:03:06 verbose #4172 > > 00:03:06 verbose #4173 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:06 verbose #4174 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:06 verbose #4175 > > │ ### block_on │ 00:03:06 verbose #4176 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:06 verbose #4177 > > 00:03:06 verbose #4178 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:06 verbose #4179 > > inl block_on forall t. (fn : future_pin t) : t = 00:03:06 verbose #4180 > > inl runtime : infer = 00:03:06 verbose #4181 > > 00:03:06 verbose #4182 > > !\($'$"tokio::runtime::Builder::new_multi_thread().enable_all().build().unwrap() 00:03:06 verbose #4183 > > "') 00:03:06 verbose #4184 > > !\\(fn, $'"!runtime.handle().block_on($0)"') 00:03:06 verbose #4185 > > 00:03:06 verbose #4186 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:06 verbose #4187 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:06 verbose #4188 > > │ ### block_on' │ 00:03:06 verbose #4189 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:06 verbose #4190 > > 00:03:06 verbose #4191 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:06 verbose #4192 > > inl block_on' forall t. (fn : future_pin t) : t = 00:03:06 verbose #4193 > > !\\(fn, $'"futures_lite::future::block_on($0)"') 00:03:06 verbose #4194 > > 00:03:06 verbose #4195 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:06 verbose #4196 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:06 verbose #4197 > > │ ### block_on'' │ 00:03:06 verbose #4198 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:06 verbose #4199 > > 00:03:06 verbose #4200 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:06 verbose #4201 > > inl block_on'' forall t. (fn : future_pin t) : t = 00:03:06 verbose #4202 > > !\\(fn, $'"futures::executor::block_on($0)"') 00:03:06 verbose #4203 > > 00:03:06 verbose #4204 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:06 verbose #4205 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:06 verbose #4206 > > │ ### block_on''' │ 00:03:06 verbose #4207 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:06 verbose #4208 > > 00:03:06 verbose #4209 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:06 verbose #4210 > > inl block_on''' forall t. (fn : future_pin t) : t = 00:03:06 verbose #4211 > > !\\(fn, $'"async_std::task::block_on($0)"') 00:03:07 verbose #4212 > > 00:03:07 verbose #4213 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:07 verbose #4214 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:07 verbose #4215 > > │ ### block_on_send │ 00:03:07 verbose #4216 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:07 verbose #4217 > > 00:03:07 verbose #4218 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:07 verbose #4219 > > inl block_on_send forall t. (fn : future_pin_send t) : t = 00:03:07 verbose #4220 > > !\($'"tokio::runtime::block_on(!fn)"') 00:03:07 verbose #4221 > > 00:03:07 verbose #4222 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:07 verbose #4223 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:07 verbose #4224 > > │ ### stream_ext │ 00:03:07 verbose #4225 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:07 verbose #4226 > > 00:03:07 verbose #4227 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:07 verbose #4228 > > nominal stream_ext = 00:03:07 verbose #4229 > > `( 00:03:07 verbose #4230 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:07 verbose #4231 > > Fable.Core.Emit(\"tokio_stream::StreamExt\")>]]\n#endif\ntype 00:03:07 verbose #4232 > > tokio_stream_StreamExt = class end" 00:03:07 verbose #4233 > > $'' : $'tokio_stream_StreamExt' 00:03:07 verbose #4234 > > ) 00:03:07 verbose #4235 > > 00:03:07 verbose #4236 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:07 verbose #4237 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:07 verbose #4238 > > │ ### join_handle │ 00:03:07 verbose #4239 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:07 verbose #4240 > > 00:03:07 verbose #4241 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:07 verbose #4242 > > nominal join_handle t = 00:03:07 verbose #4243 > > `( 00:03:07 verbose #4244 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:07 verbose #4245 > > Fable.Core.Emit(\"tokio::task::JoinHandle<$0>\")>]]\n#endif\ntype 00:03:07 verbose #4246 > > tokio_task_JoinHandle<'T> = class end" 00:03:07 verbose #4247 > > $'' : $'tokio_task_JoinHandle<`t>' 00:03:07 verbose #4248 > > ) 00:03:07 verbose #4249 > > 00:03:07 verbose #4250 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:07 verbose #4251 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:07 verbose #4252 > > │ ### stream_collect │ 00:03:07 verbose #4253 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:07 verbose #4254 > > 00:03:07 verbose #4255 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:07 verbose #4256 > > inl stream_collect forall t u. 00:03:07 verbose #4257 > > (stream : t) 00:03:07 verbose #4258 > > : future_pin (am'.vec u) 00:03:07 verbose #4259 > > = 00:03:07 verbose #4260 > > !\($'"Box::pin(tokio_stream::StreamExt::collect(!stream))"') 00:03:07 verbose #4261 > > 00:03:07 verbose #4262 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:07 verbose #4263 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:07 verbose #4264 > > │ ### stream_next │ 00:03:07 verbose #4265 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:07 verbose #4266 > > 00:03:07 verbose #4267 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:07 verbose #4268 > > inl stream_next forall t u. 00:03:07 verbose #4269 > > (stream : t) 00:03:07 verbose #4270 > > : future_pin (optionm'.option' u) 00:03:07 verbose #4271 > > = 00:03:07 verbose #4272 > > !\($'"let mut !stream = !stream"') 00:03:07 verbose #4273 > > !\($'"Box::pin(tokio_stream::StreamExt::next(&mut !stream))"') 00:03:07 verbose #4274 > > 00:03:07 verbose #4275 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:07 verbose #4276 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:07 verbose #4277 > > │ ### stream_filter_map │ 00:03:07 verbose #4278 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:07 verbose #4279 > > 00:03:07 verbose #4280 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:07 verbose #4281 > > inl stream_filter_map forall t u v. 00:03:07 verbose #4282 > > (fn : u -> optionm'.option' v) 00:03:07 verbose #4283 > > (stream : t) 00:03:07 verbose #4284 > > : infer' v 00:03:07 verbose #4285 > > = 00:03:07 verbose #4286 > > inl fn = join fn 00:03:07 verbose #4287 > > !\($'"tokio_stream::StreamExt::filter_map(!stream, |x| !fn(x))"') 00:03:07 verbose #4288 > > 00:03:07 verbose #4289 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:07 verbose #4290 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:07 verbose #4291 > > │ ### spawn │ 00:03:07 verbose #4292 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:07 verbose #4293 > > 00:03:07 verbose #4294 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:07 verbose #4295 > > inl spawn forall t. (fn : future_pin_send t) : join_handle t = 00:03:07 verbose #4296 > > !\($'"tokio::runtime::spawn(!fn)"') 00:03:07 verbose #4297 > > 00:03:07 verbose #4298 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:07 verbose #4299 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:07 verbose #4300 > > │ ### try_join_all │ 00:03:07 verbose #4301 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:07 verbose #4302 > > 00:03:07 verbose #4303 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:07 verbose #4304 > > nominal try_join_all t = 00:03:07 verbose #4305 > > `( 00:03:07 verbose #4306 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:07 verbose #4307 > > Fable.Core.Emit(\"futures::future::TryJoinAll<$0>\")>]]\n#endif\ntype 00:03:07 verbose #4308 > > futures_future_TryJoinAll<'T> = class end" 00:03:07 verbose #4309 > > $'' : $'futures_future_TryJoinAll<`t>' 00:03:07 verbose #4310 > > ) 00:03:07 verbose #4311 > > 00:03:07 verbose #4312 > > inl try_join_all forall t. (x : am'.vec (future_pin (resultm.result' t 00:03:07 verbose #4313 > > sm'.std_string))) : try_join_all (future_pin (resultm.result' t sm'.std_string)) 00:03:07 verbose #4314 > > = 00:03:07 verbose #4315 > > inl x = join x 00:03:07 verbose #4316 > > !\($'"futures::future::try_join_all(!x)"') 00:03:07 verbose #4317 > > 00:03:07 verbose #4318 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:07 verbose #4319 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:07 verbose #4320 > > │ ### fuse │ 00:03:07 verbose #4321 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:07 verbose #4322 > > 00:03:07 verbose #4323 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:07 verbose #4324 > > nominal fuse t = 00:03:07 verbose #4325 > > `( 00:03:07 verbose #4326 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:07 verbose #4327 > > Fable.Core.Emit(\"tokio::prelude::stream::Fuse<$0>\")>]]\n#endif\ntype 00:03:07 verbose #4328 > > tokio_prelude_stream_Fuse<'T> = class end" 00:03:07 verbose #4329 > > $'' : $'tokio_prelude_stream_Fuse<`t>' 00:03:07 verbose #4330 > > ) 00:03:07 verbose #4331 > > 00:03:07 verbose #4332 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:07 verbose #4333 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:07 verbose #4334 > > │ ### future_fuse │ 00:03:07 verbose #4335 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:07 verbose #4336 > > 00:03:07 verbose #4337 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:07 verbose #4338 > > inl future_fuse forall t. (x : future_pin t) : fuse (future_pin t) = 00:03:07 verbose #4339 > > !\($'"futures::future::FutureExt::fuse(!x)"') 00:03:07 verbose #4340 > > 00:03:07 verbose #4341 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:07 verbose #4342 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:07 verbose #4343 > > │ ### join_all │ 00:03:07 verbose #4344 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:07 verbose #4345 > > 00:03:07 verbose #4346 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:07 verbose #4347 > > nominal join_all t = 00:03:07 verbose #4348 > > `( 00:03:07 verbose #4349 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:07 verbose #4350 > > Fable.Core.Emit(\"futures::future::JoinAll<$0>\")>]]\n#endif\ntype 00:03:07 verbose #4351 > > futures_future_JoinAll<'T> = class end" 00:03:07 verbose #4352 > > $'' : $'futures_future_JoinAll<`t>' 00:03:07 verbose #4353 > > ) 00:03:07 verbose #4354 > > 00:03:07 verbose #4355 > > inl join_all forall t. (x : am'.vec (future_pin t)) : join_all (future_pin t) = 00:03:07 verbose #4356 > > inl x = join x 00:03:07 verbose #4357 > > !\($'"futures::future::join_all(!x)"') 00:03:08 verbose #4358 > > 00:03:08 verbose #4359 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:08 verbose #4360 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:08 verbose #4361 > > │ ### join_all_send │ 00:03:08 verbose #4362 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:08 verbose #4363 > > 00:03:08 verbose #4364 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:08 verbose #4365 > > inl join_all_send forall t. (x : am'.vec (future_pin_send t)) : join_all 00:03:08 verbose #4366 > > (future_pin_send t) = 00:03:08 verbose #4367 > > inl x = join x 00:03:08 verbose #4368 > > !\($'"futures::future::join_all(!x)"') 00:03:08 verbose #4369 > > 00:03:08 verbose #4370 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:08 verbose #4371 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:08 verbose #4372 > > │ ### await_handle │ 00:03:08 verbose #4373 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:08 verbose #4374 > > 00:03:08 verbose #4375 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:08 verbose #4376 > > inl await_handle forall t. (x : join_handle t) : t = 00:03:08 verbose #4377 > > !\($'"!x.await"') 00:03:08 verbose #4378 > > 00:03:08 verbose #4379 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:08 verbose #4380 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:08 verbose #4381 > > │ ### await_all │ 00:03:08 verbose #4382 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:08 verbose #4383 > > 00:03:08 verbose #4384 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:08 verbose #4385 > > inl await_all forall t. (x : join_all (future_pin t)) : am'.vec t = 00:03:08 verbose #4386 > > !\($'"!x.await"') 00:03:08 verbose #4387 > > 00:03:08 verbose #4388 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:08 verbose #4389 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:08 verbose #4390 > > │ ### await_all_send │ 00:03:08 verbose #4391 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:08 verbose #4392 > > 00:03:08 verbose #4393 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:08 verbose #4394 > > inl await_all_send forall t. (x : join_all (future_pin_send t)) : am'.vec t = 00:03:08 verbose #4395 > > !\($'"!x.await"') 00:03:08 verbose #4396 > > 00:03:08 verbose #4397 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:08 verbose #4398 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:08 verbose #4399 > > │ ### try_await_all │ 00:03:08 verbose #4400 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:08 verbose #4401 > > 00:03:08 verbose #4402 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:08 verbose #4403 > > inl try_await_all forall t. (x : try_join_all (future_pin (resultm.result' t 00:03:08 verbose #4404 > > sm'.std_string))) : resultm.result' (am'.vec t) sm'.std_string = 00:03:08 verbose #4405 > > !\($'"!x.await"') 00:03:08 verbose #4406 > > 00:03:08 verbose #4407 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:08 verbose #4408 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:08 verbose #4409 > > │ ### try_await_all_send │ 00:03:08 verbose #4410 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:08 verbose #4411 > > 00:03:08 verbose #4412 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:08 verbose #4413 > > inl try_await_all_send forall t. (x : try_join_all (future_pin_send 00:03:08 verbose #4414 > > (resultm.result' t sm'.std_string))) : resultm.result' (am'.vec t) 00:03:08 verbose #4415 > > sm'.std_string = 00:03:08 verbose #4416 > > !\($'"!x.await"') 00:03:08 verbose #4417 > > 00:03:08 verbose #4418 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:08 verbose #4419 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:08 verbose #4420 > > │ ### await │ 00:03:08 verbose #4421 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:08 verbose #4422 > > 00:03:08 verbose #4423 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:08 verbose #4424 > > inl await forall t. (x : future_pin t) : t = 00:03:08 verbose #4425 > > !\($'"!x.await"') 00:03:08 verbose #4426 > > 00:03:08 verbose #4427 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:08 verbose #4428 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:08 verbose #4429 > > │ ### await │ 00:03:08 verbose #4430 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:08 verbose #4431 > > 00:03:08 verbose #4432 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:08 verbose #4433 > > inl await_send forall t. (x : future_pin_send t) : t = 00:03:08 verbose #4434 > > !\($'"!x.await"') 00:03:08 verbose #4435 > > 00:03:08 verbose #4436 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:08 verbose #4437 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:08 verbose #4438 > > │ ### into_iter │ 00:03:08 verbose #4439 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:08 verbose #4440 > > 00:03:08 verbose #4441 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:08 verbose #4442 > > nominal into_iter t = 00:03:08 verbose #4443 > > `( 00:03:08 verbose #4444 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:08 verbose #4445 > > Fable.Core.Emit(\"rayon::vec::IntoIter<$0>\")>]]\n#endif\ntype 00:03:08 verbose #4446 > > rayon_vec_IntoIter<'T> = class end" 00:03:08 verbose #4447 > > $'' : $'rayon_vec_IntoIter<`t>' 00:03:08 verbose #4448 > > ) 00:03:08 verbose #4449 > > 00:03:08 verbose #4450 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:08 verbose #4451 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:08 verbose #4452 > > │ ### into_par_iter │ 00:03:08 verbose #4453 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:08 verbose #4454 > > 00:03:08 verbose #4455 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:08 verbose #4456 > > inl into_par_iter forall t. (x : am'.vec t) : into_iter t = 00:03:08 verbose #4457 > > !\\(x, $'"rayon::iter::IntoParallelIterator::into_par_iter($0)"') 00:03:08 verbose #4458 > > 00:03:08 verbose #4459 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:08 verbose #4460 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:08 verbose #4461 > > │ ### par_iter │ 00:03:08 verbose #4462 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:08 verbose #4463 > > 00:03:08 verbose #4464 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:08 verbose #4465 > > inl par_iter forall t. (x : am'.vec t) : into_iter t = 00:03:08 verbose #4466 > > !\($'"rayon::iter::IntoParallelIterator::par_iter(!x)"') 00:03:08 verbose #4467 > > 00:03:08 verbose #4468 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:08 verbose #4469 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:08 verbose #4470 > > │ ### iter_map │ 00:03:08 verbose #4471 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:08 verbose #4472 > > 00:03:08 verbose #4473 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:08 verbose #4474 > > nominal iter_map t u = 00:03:08 verbose #4475 > > `( 00:03:08 verbose #4476 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:08 verbose #4477 > > Fable.Core.Emit(\"rayon::iter::Map<$0, _>\")>]]\n#endif\ntype rayon_iter_Map<'T> 00:03:08 verbose #4478 > > = class end" 00:03:08 verbose #4479 > > $'' : $'rayon_iter_Map<`t>' 00:03:08 verbose #4480 > > ) 00:03:09 verbose #4481 > > 00:03:09 verbose #4482 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:09 verbose #4483 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:09 verbose #4484 > > │ ### par_map │ 00:03:09 verbose #4485 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:09 verbose #4486 > > 00:03:09 verbose #4487 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:09 verbose #4488 > > inl par_map forall t u. (fn : t -> u) (ar : into_iter t) : iter_map (into_iter 00:03:09 verbose #4489 > > t) u = 00:03:09 verbose #4490 > > !\\((ar, fn), $'"rayon::iter::ParallelIterator::map($0, |x| $1(x))"') 00:03:09 verbose #4491 > > 00:03:09 verbose #4492 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:09 verbose #4493 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:09 verbose #4494 > > │ ### par_collect │ 00:03:09 verbose #4495 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:09 verbose #4496 > > 00:03:09 verbose #4497 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:09 verbose #4498 > > inl par_collect forall t u. (iter : iter_map (into_iter t) u) : am'.vec u = 00:03:09 verbose #4499 > > !\\(iter, $'"rayon::iter::ParallelIterator::collect($0)"') 00:03:09 verbose #4500 > > 00:03:09 verbose #4501 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:09 verbose #4502 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:09 verbose #4503 > > │ ### try_join_all_iter │ 00:03:09 verbose #4504 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:09 verbose #4505 > > 00:03:09 verbose #4506 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:09 verbose #4507 > > inl try_join_all_iter forall t. (x : am'.vec (future_pin_send (resultm.result' t 00:03:09 verbose #4508 > > sm'.std_string))) : try_join_all (future_pin_send (resultm.result' t 00:03:09 verbose #4509 > > sm'.std_string)) = 00:03:09 verbose #4510 > > inl x = join x 00:03:09 verbose #4511 > > !\($'"futures::future::try_join_all(!x)"') 00:03:09 verbose #4512 > > 00:03:09 verbose #4513 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:09 verbose #4514 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:09 verbose #4515 > > │ ### future_init │ 00:03:09 verbose #4516 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:09 verbose #4517 > > 00:03:09 verbose #4518 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:09 verbose #4519 > > inl future_init forall t. (move : bool) (x : () -> t) : infer' t = 00:03:09 verbose #4520 > > if move 00:03:09 verbose #4521 > > then (!\($'"true; let __future_init = Box::pin(async move { //"') : bool) |> 00:03:09 verbose #4522 > > ignore 00:03:09 verbose #4523 > > else (!\($'"true; let __future_init = Box::pin(async { //"') : bool) |> 00:03:09 verbose #4524 > > ignore 00:03:09 verbose #4525 > > 00:03:09 verbose #4526 > > inl is_unit : bool = 00:03:09 verbose #4527 > > real 00:03:09 verbose #4528 > > typecase t with 00:03:09 verbose #4529 > > | () => true 00:03:09 verbose #4530 > > | _ => false 00:03:09 verbose #4531 > > 00:03:09 verbose #4532 > > inl x' = x () 00:03:09 verbose #4533 > > inl x' = join x' 00:03:09 verbose #4534 > > 00:03:09 verbose #4535 > > inl depth = 00:03:09 verbose #4536 > > if is_unit 00:03:09 verbose #4537 > > then 2, 1 00:03:09 verbose #4538 > > else 1, 0 00:03:09 verbose #4539 > > 00:03:09 verbose #4540 > > x' |> rust.fix_closure depth 00:03:09 verbose #4541 > > 00:03:09 verbose #4542 > > !\($'"__future_init"') 00:03:09 verbose #4543 > > 00:03:09 verbose #4544 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:09 verbose #4545 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:09 verbose #4546 > > │ ### new_future │ 00:03:09 verbose #4547 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:09 verbose #4548 > > 00:03:09 verbose #4549 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:09 verbose #4550 > > inl new_future forall t. (x : () -> t) : future_pin t = 00:03:09 verbose #4551 > > inl result = future_init false x 00:03:09 verbose #4552 > > !\($'"!result"') 00:03:09 verbose #4553 > > 00:03:09 verbose #4554 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:09 verbose #4555 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:09 verbose #4556 > > │ ### new_future_move │ 00:03:09 verbose #4557 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:09 verbose #4558 > > 00:03:09 verbose #4559 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:09 verbose #4560 > > inl new_future_move forall t. (x : () -> t) : future_pin t = 00:03:09 verbose #4561 > > inl result = future_init true x 00:03:09 verbose #4562 > > !\($'"!result"') 00:03:09 verbose #4563 > > 00:03:09 verbose #4564 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:09 verbose #4565 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:09 verbose #4566 > > │ ### new_future_send │ 00:03:09 verbose #4567 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:09 verbose #4568 > > 00:03:09 verbose #4569 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:09 verbose #4570 > > inl new_future_send forall t. (x : () -> t) : future_pin_send t = 00:03:09 verbose #4571 > > inl result = future_init false x 00:03:09 verbose #4572 > > !\($'"!result"') 00:03:09 verbose #4573 > > 00:03:09 verbose #4574 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:09 verbose #4575 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:09 verbose #4576 > > │ ### new_future_move_send │ 00:03:09 verbose #4577 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:09 verbose #4578 > > 00:03:09 verbose #4579 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:09 verbose #4580 > > inl new_future_move_send forall t. (x : () -> t) : future_pin_send t = 00:03:09 verbose #4581 > > inl result = future_init true x 00:03:09 verbose #4582 > > !\($'"!result"') 00:03:09 verbose #4583 > > 00:03:09 verbose #4584 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:09 verbose #4585 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:09 verbose #4586 > > │ ## fsharp │ 00:03:09 verbose #4587 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:09 verbose #4588 > > 00:03:09 verbose #4589 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:09 verbose #4590 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:09 verbose #4591 > > │ ### async │ 00:03:09 verbose #4592 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:09 verbose #4593 > > 00:03:09 verbose #4594 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:09 verbose #4595 > > nominal async t = $'Async<`t>' 00:03:09 verbose #4596 > > 00:03:09 verbose #4597 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:09 verbose #4598 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:09 verbose #4599 > > │ ### task │ 00:03:09 verbose #4600 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:09 verbose #4601 > > 00:03:09 verbose #4602 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:09 verbose #4603 > > nominal task t = 00:03:09 verbose #4604 > > `( 00:03:09 verbose #4605 > > typecase t with 00:03:09 verbose #4606 > > | () => $'' : $'System.Threading.Tasks.Task' 00:03:09 verbose #4607 > > | _ => $'' : $'System.Threading.Tasks.Task<`t>' 00:03:09 verbose #4608 > > ) 00:03:09 verbose #4609 > > 00:03:09 verbose #4610 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:09 verbose #4611 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:09 verbose #4612 > > │ ### new_async_unit │ 00:03:09 verbose #4613 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:09 verbose #4614 > > 00:03:09 verbose #4615 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:09 verbose #4616 > > inl new_async_unit forall t. (fn : () -> ()) : async t = 00:03:09 verbose #4617 > > run_target function 00:03:09 verbose #4618 > > | Fsharp (Native) => fun () => 00:03:09 verbose #4619 > > inl result : optionm'.option' (async t) = optionm'.none' () 00:03:09 verbose #4620 > > $'let mutable _!result = !result ' 00:03:09 verbose #4621 > > $'async {' 00:03:09 verbose #4622 > > fn () 00:03:09 verbose #4623 > > real 00:03:09 verbose #4624 > > typecase t with 00:03:09 verbose #4625 > > | () => $'()' : () 00:03:09 verbose #4626 > > | _ => () 00:03:09 verbose #4627 > > $'}' 00:03:09 verbose #4628 > > $'|> fun x -> _!result <- Some x' 00:03:09 verbose #4629 > > $'match _!result with Some x -> x | None -> failwith 00:03:09 verbose #4630 > > "async.new_async_unit / _!result=None"' 00:03:09 verbose #4631 > > | _ => fun () => null () 00:03:10 verbose #4632 > > 00:03:10 verbose #4633 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:10 verbose #4634 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:10 verbose #4635 > > │ ### new_async │ 00:03:10 verbose #4636 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:10 verbose #4637 > > 00:03:10 verbose #4638 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:10 verbose #4639 > > inl new_async forall t. (fn : () -> t) : async t = 00:03:10 verbose #4640 > > new_async_unit (fn >> ignore) 00:03:10 verbose #4641 > > 00:03:10 verbose #4642 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:10 verbose #4643 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:10 verbose #4644 > > │ ### new_task │ 00:03:10 verbose #4645 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:10 verbose #4646 > > 00:03:10 verbose #4647 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:10 verbose #4648 > > inl new_task forall t. (fn : () -> t) : task t = 00:03:10 verbose #4649 > > run_target function 00:03:10 verbose #4650 > > | Fsharp (Native) => fun () => 00:03:10 verbose #4651 > > inl result : optionm'.option' (task t) = optionm'.none' () 00:03:10 verbose #4652 > > $'let mutable _!result = !result ' 00:03:10 verbose #4653 > > $'task {' 00:03:10 verbose #4654 > > fn () |> ignore 00:03:10 verbose #4655 > > $'}' 00:03:10 verbose #4656 > > $'|> fun x -> _!result <- Some x' 00:03:10 verbose #4657 > > $'match _!result with Some x -> x | None -> failwith "async.new_task 00:03:10 verbose #4658 > > / _!result=None"' 00:03:10 verbose #4659 > > | _ => fun () => null () 00:03:10 verbose #4660 > > 00:03:10 verbose #4661 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:10 verbose #4662 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:10 verbose #4663 > > │ ### await_task │ 00:03:10 verbose #4664 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:10 verbose #4665 > > 00:03:10 verbose #4666 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:10 verbose #4667 > > inl await_task forall t. (a : task t) : async t = 00:03:10 verbose #4668 > > run_target function 00:03:10 verbose #4669 > > | Fsharp (Native) => fun () => 00:03:10 verbose #4670 > > a |> $'Async.AwaitTask' 00:03:10 verbose #4671 > > | _ => fun () => null () 00:03:10 verbose #4672 > > 00:03:10 verbose #4673 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:10 verbose #4674 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:10 verbose #4675 > > │ ### ignore │ 00:03:10 verbose #4676 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:10 verbose #4677 > > 00:03:10 verbose #4678 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:10 verbose #4679 > > inl ignore forall t. (a : async t) : async () = 00:03:10 verbose #4680 > > run_target function 00:03:10 verbose #4681 > > | Fsharp (Native) => fun () => 00:03:10 verbose #4682 > > a |> $'Async.Ignore' 00:03:10 verbose #4683 > > | _ => fun () => null () 00:03:10 verbose #4684 > > 00:03:10 verbose #4685 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:10 verbose #4686 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:10 verbose #4687 > > │ ### run_synchronously │ 00:03:10 verbose #4688 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:10 verbose #4689 > > 00:03:10 verbose #4690 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:10 verbose #4691 > > inl run_synchronously forall t. (a : async t) : t = 00:03:10 verbose #4692 > > run_target function 00:03:10 verbose #4693 > > | Fsharp (Native) => fun () => 00:03:10 verbose #4694 > > a |> $'Async.RunSynchronously' 00:03:10 verbose #4695 > > | _ => fun () => null () 00:03:10 verbose #4696 > > 00:03:10 verbose #4697 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:10 verbose #4698 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:10 verbose #4699 > > │ ### start │ 00:03:10 verbose #4700 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:10 verbose #4701 > > 00:03:10 verbose #4702 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:10 verbose #4703 > > inl start (a : async ()) : () = 00:03:10 verbose #4704 > > run_target function 00:03:10 verbose #4705 > > | Fsharp (Native) => fun () => 00:03:10 verbose #4706 > > a |> $'Async.Start' 00:03:10 verbose #4707 > > | _ => fun () => null () 00:03:11 verbose #4708 > > 00:03:11 verbose #4709 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:11 verbose #4710 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:11 verbose #4711 > > │ ### start_child │ 00:03:11 verbose #4712 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:11 verbose #4713 > > 00:03:11 verbose #4714 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:11 verbose #4715 > > inl start_child forall t. (a : async t) : async (async t) = 00:03:11 verbose #4716 > > run_target function 00:03:11 verbose #4717 > > | Fsharp (Native) => fun () => 00:03:11 verbose #4718 > > a |> $'Async.StartChild' 00:03:11 verbose #4719 > > | _ => fun () => null () 00:03:11 verbose #4720 > > 00:03:11 verbose #4721 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:11 verbose #4722 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:11 verbose #4723 > > │ ### start_child_timeout │ 00:03:11 verbose #4724 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:11 verbose #4725 > > 00:03:11 verbose #4726 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:11 verbose #4727 > > inl start_child_timeout forall t. (timeout : i32) (a : async t) : async (async 00:03:11 verbose #4728 > > t) = 00:03:11 verbose #4729 > > run_target function 00:03:11 verbose #4730 > > | Fsharp (Native) => fun () => 00:03:11 verbose #4731 > > $'Async.StartChild (!a, !timeout)' 00:03:11 verbose #4732 > > | _ => fun () => null () 00:03:11 verbose #4733 > > 00:03:11 verbose #4734 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:11 verbose #4735 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:11 verbose #4736 > > │ ### start_immediate │ 00:03:11 verbose #4737 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:11 verbose #4738 > > 00:03:11 verbose #4739 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:11 verbose #4740 > > inl start_immediate forall t. (a : async t) : () = 00:03:11 verbose #4741 > > run_target function 00:03:11 verbose #4742 > > | Fsharp (Native) => fun () => 00:03:11 verbose #4743 > > a |> $'Async.StartImmediate' 00:03:11 verbose #4744 > > | _ => fun () => null () 00:03:11 verbose #4745 > > 00:03:11 verbose #4746 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:11 verbose #4747 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:11 verbose #4748 > > │ ### task_canceled_exception │ 00:03:11 verbose #4749 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:11 verbose #4750 > > 00:03:11 verbose #4751 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:11 verbose #4752 > > nominal task_canceled_exception = 00:03:11 verbose #4753 > > $'System.Threading.Tasks.TaskCanceledException' 00:03:11 verbose #4754 > > 00:03:11 verbose #4755 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:11 verbose #4756 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:11 verbose #4757 > > │ ### sleep │ 00:03:11 verbose #4758 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:11 verbose #4759 > > 00:03:11 verbose #4760 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:11 verbose #4761 > > inl sleep (ms : i32) : async () = 00:03:11 verbose #4762 > > run_target function 00:03:11 verbose #4763 > > | Fsharp (Native) => fun () => 00:03:11 verbose #4764 > > ms |> $'Async.Sleep' 00:03:11 verbose #4765 > > | _ => fun () => null () 00:03:11 verbose #4766 > > 00:03:11 verbose #4767 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:11 verbose #4768 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:11 verbose #4769 > > │ ### do │ 00:03:11 verbose #4770 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:11 verbose #4771 > > 00:03:11 verbose #4772 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:11 verbose #4773 > > inl do (a : async ()) : () = 00:03:11 verbose #4774 > > $'do\! !a ' 00:03:11 verbose #4775 > > 00:03:11 verbose #4776 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:11 verbose #4777 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:11 verbose #4778 > > │ ### let' │ 00:03:11 verbose #4779 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:11 verbose #4780 > > 00:03:11 verbose #4781 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:11 verbose #4782 > > inl let' forall t. (a : async t) : t = 00:03:11 verbose #4783 > > $'let\! !a = !a ' 00:03:11 verbose #4784 > > $'!a ' 00:03:11 verbose #4785 > > 00:03:11 verbose #4786 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:11 verbose #4787 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:11 verbose #4788 > > │ ### return_await │ 00:03:11 verbose #4789 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:11 verbose #4790 > > 00:03:11 verbose #4791 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:11 verbose #4792 > > inl return_await forall t. (a : async t) : () = 00:03:11 verbose #4793 > > $'return\! !a ' 00:03:11 verbose #4794 > > 00:03:11 verbose #4795 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:11 verbose #4796 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:11 verbose #4797 > > │ ### return_await' │ 00:03:11 verbose #4798 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:11 verbose #4799 > > 00:03:11 verbose #4800 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:11 verbose #4801 > > inl return_await' forall t. (a : async t) : t = 00:03:11 verbose #4802 > > $'return\! !a ' 00:03:11 verbose #4803 > > 00:03:11 verbose #4804 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:11 verbose #4805 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:11 verbose #4806 > > │ ### map │ 00:03:11 verbose #4807 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:11 verbose #4808 > > 00:03:11 verbose #4809 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:11 verbose #4810 > > inl map forall t u. (fn : t -> u) (a : async t) : async u = 00:03:11 verbose #4811 > > fun () => 00:03:11 verbose #4812 > > inl x = a |> let' 00:03:11 verbose #4813 > > fn x |> return 00:03:11 verbose #4814 > > |> new_async_unit 00:03:12 verbose #4815 > > 00:03:12 verbose #4816 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:12 verbose #4817 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:12 verbose #4818 > > │ ### catch' │ 00:03:12 verbose #4819 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:12 verbose #4820 > > 00:03:12 verbose #4821 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:12 verbose #4822 > > inl catch' forall t e. (a : async t) : async (choice2' t e) = 00:03:12 verbose #4823 > > run_target function 00:03:12 verbose #4824 > > | Fsharp (Native) => fun () => 00:03:12 verbose #4825 > > a |> $'Async.Catch' 00:03:12 verbose #4826 > > | _ => fun () => null () 00:03:12 verbose #4827 > > 00:03:12 verbose #4828 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:12 verbose #4829 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:12 verbose #4830 > > │ ### catch │ 00:03:12 verbose #4831 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:12 verbose #4832 > > 00:03:12 verbose #4833 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:12 verbose #4834 > > inl catch forall t e. (a : async t) : async (result t e) = 00:03:12 verbose #4835 > > a 00:03:12 verbose #4836 > > |> catch' 00:03:12 verbose #4837 > > |> map choice2_unbox 00:03:12 verbose #4838 > > |> map function 00:03:12 verbose #4839 > > | C1of2 result => Ok result 00:03:12 verbose #4840 > > | C2of2 ex => Error ex 00:03:12 verbose #4841 > > 00:03:12 verbose #4842 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:12 verbose #4843 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:12 verbose #4844 > > │ ### run_with_timeout_async │ 00:03:12 verbose #4845 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:12 verbose #4846 > > 00:03:12 verbose #4847 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:12 verbose #4848 > > inl run_with_timeout_async forall t. (timeout : i32) (fn : async t) : async 00:03:12 verbose #4849 > > (option t) = 00:03:12 verbose #4850 > > run_target function 00:03:12 verbose #4851 > > | Fsharp (Native) => fun () => 00:03:12 verbose #4852 > > fun () => 00:03:12 verbose #4853 > > inl child = fn |> start_child_timeout timeout |> let' 00:03:12 verbose #4854 > > child 00:03:12 verbose #4855 > > |> catch 00:03:12 verbose #4856 > > |> map function 00:03:12 verbose #4857 > > | Ok result => Some result 00:03:12 verbose #4858 > > | Error ex when ex |> sm'.format_debug |> sm'.contains 00:03:12 verbose #4859 > > "System.TimeoutException" => 00:03:12 verbose #4860 > > trace Verbose 00:03:12 verbose #4861 > > fun () => $'"async.run_with_timeout_async"' 00:03:12 verbose #4862 > > fun () => { timeout } 00:03:12 verbose #4863 > > None 00:03:12 verbose #4864 > > | Error (ex : exn) => 00:03:12 verbose #4865 > > trace Critical 00:03:12 verbose #4866 > > fun () => $'$"async.run_with_timeout_async**"' 00:03:12 verbose #4867 > > fun () => { timeout ex = ex |> sm'.format_exception 00:03:12 verbose #4868 > > } 00:03:12 verbose #4869 > > None 00:03:12 verbose #4870 > > |> return_await 00:03:12 verbose #4871 > > |> new_async_unit 00:03:12 verbose #4872 > > | _ => fun () => null () 00:03:12 verbose #4873 > > 00:03:12 verbose #4874 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:12 verbose #4875 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:12 verbose #4876 > > │ ### run_with_timeout │ 00:03:12 verbose #4877 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:12 verbose #4878 > > 00:03:12 verbose #4879 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:12 verbose #4880 > > inl run_with_timeout timeout fn = 00:03:12 verbose #4881 > > fn 00:03:12 verbose #4882 > > |> run_with_timeout_async timeout 00:03:12 verbose #4883 > > |> run_synchronously 00:03:12 verbose #4884 > > 00:03:12 verbose #4885 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:12 verbose #4886 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:12 verbose #4887 > > │ ### cancellation_token │ 00:03:12 verbose #4888 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:12 verbose #4889 > > 00:03:12 verbose #4890 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:12 verbose #4891 > > inl cancellation_token () : async threading.cancellation_token = 00:03:12 verbose #4892 > > $'Async.CancellationToken' 00:03:12 verbose #4893 > > 00:03:12 verbose #4894 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:12 verbose #4895 > > inl default_cancellation_token () : threading.cancellation_token = 00:03:12 verbose #4896 > > $'Async.DefaultCancellationToken' 00:03:12 verbose #4897 > > 00:03:12 verbose #4898 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:12 verbose #4899 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:12 verbose #4900 > > │ ### merge_cancellation_token_with_default_async │ 00:03:12 verbose #4901 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:12 verbose #4902 > > 00:03:12 verbose #4903 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:12 verbose #4904 > > inl merge_cancellation_token_with_default_async 00:03:12 verbose #4905 > > (token : threading.cancellation_token) 00:03:12 verbose #4906 > > : async threading.cancellation_token 00:03:12 verbose #4907 > > = 00:03:12 verbose #4908 > > run_target function 00:03:12 verbose #4909 > > | Fsharp (Native) => fun () => 00:03:12 verbose #4910 > > fun () => 00:03:12 verbose #4911 > > inl ct = cancellation_token () |> let' 00:03:12 verbose #4912 > > inl dct = default_cancellation_token () 00:03:12 verbose #4913 > > inl cts = threading.create_linked_token_source ;[[ ct; dct; 00:03:12 verbose #4914 > > token ]] 00:03:12 verbose #4915 > > cts |> threading.cancellation_source_token |> return 00:03:12 verbose #4916 > > |> new_async_unit 00:03:12 verbose #4917 > > | _ => fun () => null () 00:03:12 verbose #4918 > > 00:03:12 verbose #4919 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:12 verbose #4920 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:12 verbose #4921 > > │ ### with_trace_level │ 00:03:12 verbose #4922 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:12 verbose #4923 > > 00:03:12 verbose #4924 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:12 verbose #4925 > > inl with_trace_level forall t. level fn : _ t = new_async fun () => 00:03:12 verbose #4926 > > inl trace_state = get_trace_state_or_init None 00:03:12 verbose #4927 > > inl old_trace_level = *trace_state.level 00:03:12 verbose #4928 > > inl trace_level = trace_state.level 00:03:12 verbose #4929 > > try_finally 00:03:12 verbose #4930 > > fun () => 00:03:12 verbose #4931 > > trace_level <- level 00:03:12 verbose #4932 > > fn |> return_await 00:03:12 verbose #4933 > > fun () => 00:03:12 verbose #4934 > > trace_level <- old_trace_level 00:03:12 verbose #4935 > > 00:03:12 verbose #4936 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:12 verbose #4937 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:12 verbose #4938 > > │ ### value_task │ 00:03:12 verbose #4939 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:12 verbose #4940 > > 00:03:12 verbose #4941 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:12 verbose #4942 > > nominal value_task = $'System.Threading.Tasks.ValueTask' 00:03:12 verbose #4943 > > 00:03:12 verbose #4944 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:12 verbose #4945 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:12 verbose #4946 > > │ ### value_task_as_task │ 00:03:12 verbose #4947 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:12 verbose #4948 > > 00:03:12 verbose #4949 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:12 verbose #4950 > > inl value_task_as_task (task : value_task) : task () = 00:03:12 verbose #4951 > > $'!task.AsTask' () 00:03:13 verbose #4952 > > 00:03:13 verbose #4953 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:13 verbose #4954 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:13 verbose #4955 > > │ ### await_value_task_unit │ 00:03:13 verbose #4956 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:13 verbose #4957 > > 00:03:13 verbose #4958 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:13 verbose #4959 > > inl await_value_task_unit (task : value_task) : async () = 00:03:13 verbose #4960 > > task |> value_task_as_task |> await_task 00:03:13 verbose #4961 > > 00:03:13 verbose #4962 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:13 verbose #4963 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:13 verbose #4964 > > │ ## main │ 00:03:13 verbose #4965 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:13 verbose #4966 > > 00:03:13 verbose #4967 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:13 verbose #4968 > > inl main () = 00:03:13 verbose #4969 > > $'let merge_cancellation_token_with_default_async x = 00:03:13 verbose #4970 > > !merge_cancellation_token_with_default_async x' : () 00:03:13 verbose #4971 > 00:00:12 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 48175 } 00:03:13 verbose #4972 > 00:00:12 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:03:13 verbose #4973 > "nbconvert", 00:03:13 verbose #4974 > "/home/runner/work/polyglot/polyglot/lib/spiral/async.dib.ipynb", 00:03:13 verbose #4975 > "--to", 00:03:13 verbose #4976 > "html", 00:03:13 verbose #4977 > "--HTMLExporter.theme=dark", 00:03:13 verbose #4978 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/async.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:03:14 verbose #4979 > 00:00:12 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/async.dib.ipynb to html 00:03:14 verbose #4980 > 00:00:12 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:03:14 verbose #4981 > 00:00:12 verbose #7 ! validate(nb) 00:03:14 verbose #4982 > 00:00:13 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:03:14 verbose #4983 > 00:00:13 verbose #9 ! return _pygments_highlight( 00:03:15 verbose #4984 > 00:00:13 verbose #10 ! [NbConvertApp] Writing 404407 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/async.dib.html 00:03:15 verbose #4985 > 00:00:13 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 894 } 00:03:15 verbose #4986 > 00:00:13 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 894 } 00:03:15 verbose #4987 > 00:00:13 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:03:15 verbose #4988 > "-c", 00:03:15 verbose #4989 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/async.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:03:15 verbose #4990 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/async.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:03:15 verbose #4991 > 00:00:13 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:03:15 verbose #4992 > 00:00:13 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:03:15 verbose #4993 > 00:00:13 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 49128 } 00:03:15 debug #4994 runtime.execute_with_options_async / { exit_code = 0; output_length = 53659 } 00:03:15 debug #7 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path async.dib --retries 3 00:03:15 debug #4995 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path runtime.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:03:15 verbose #4996 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "runtime.dib", "--retries", "3"])) } 00:03:15 verbose #4997 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:03:15 verbose #4998 > "repl", 00:03:15 verbose #4999 > "--exit-after-run", 00:03:15 verbose #5000 > "--run", 00:03:15 verbose #5001 > "/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib", 00:03:15 verbose #5002 > "--output-path", 00:03:15 verbose #5003 > "/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.ipynb", 00:03:15 verbose #5004 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:03:17 verbose #5005 > > 00:03:17 verbose #5006 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:17 verbose #5007 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:17 verbose #5008 > > │ # runtime │ 00:03:17 verbose #5009 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:19 verbose #5010 > > 00:03:19 verbose #5011 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:19 verbose #5012 > > open rust 00:03:19 verbose #5013 > > open rust_operators 00:03:19 verbose #5014 > > open sm'_operators 00:03:20 verbose #5015 > > 00:03:20 verbose #5016 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:20 verbose #5017 > > //// test 00:03:20 verbose #5018 > > 00:03:20 verbose #5019 > > open testing 00:03:20 verbose #5020 > > open file_system_operators 00:03:20 verbose #5021 > > 00:03:20 verbose #5022 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:20 verbose #5023 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:20 verbose #5024 > > │ ## runtime │ 00:03:20 verbose #5025 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:20 verbose #5026 > > 00:03:20 verbose #5027 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:20 verbose #5028 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:20 verbose #5029 > > │ ### split_args │ 00:03:20 verbose #5030 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:20 verbose #5031 > > 00:03:20 verbose #5032 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:20 verbose #5033 > > let split_args (args : string) : result (array_base string) string = 00:03:20 verbose #5034 > > open parsing 00:03:20 verbose #5035 > > inl esc = [[ '\\'; '`' ]] 00:03:20 verbose #5036 > > inl quotes = [[ '"' ]] 00:03:20 verbose #5037 > > inl special = esc ++ quotes 00:03:20 verbose #5038 > > inl p_esc_char c = 00:03:20 verbose #5039 > > p_char c >>. any_char () |>> fun c' => $'$"{!c}{!c'}"' 00:03:20 verbose #5040 > > inl p_word = special |> none_of |>> sm'.obj_to_string 00:03:20 verbose #5041 > > inl p_plain = special ++ [[ ' ' ]] |> none_of |> many1_chars 00:03:20 verbose #5042 > > inl p_text = p_word |> many1_strings 00:03:20 verbose #5043 > > inl p_esc = esc |> listm.map p_esc_char |> choice 00:03:20 verbose #5044 > > inl p_quoted = (p_word <|> p_esc) |> many |>> sm'.concat_list "" 00:03:20 verbose #5045 > > inl p_quoted_all = p_quoted |> between (p_char '"') (p_char '"') 00:03:20 verbose #5046 > > inl p_esc_root = p_esc >>% "" >>. (p_word |> many) |>> sm'.concat_list "" 00:03:20 verbose #5047 > > inl p_content = p_plain <|> p_quoted_all <|> p_esc_root 00:03:20 verbose #5048 > > inl p_args = spaces1 () |> sep_by p_content 00:03:20 verbose #5049 > > args 00:03:20 verbose #5050 > > |> parse p_args 00:03:20 verbose #5051 > > |> resultm.map (fst >> listm'.box >> listm'.to_array') 00:03:20 verbose #5052 > > 00:03:20 verbose #5053 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:20 verbose #5054 > > //// test 00:03:20 verbose #5055 > > ///! fsharp 00:03:20 verbose #5056 > > ////! cuda // Only stack allocated primitive types (i8,i16,i32,i64 and 00:03:20 verbose #5057 > > u8,u16,u32,u64 and f32,f64 and bool) are allowed in CuPy arrays. 00:03:20 verbose #5058 > > ///! rust 00:03:20 verbose #5059 > > ///! typescript 00:03:20 verbose #5060 > > ///! python 00:03:20 verbose #5061 > > 00:03:20 verbose #5062 > > [[ 00:03:20 verbose #5063 > > "a b c", 00:03:20 verbose #5064 > > ;[[ "a"; "b"; "c" ]] 00:03:20 verbose #5065 > > 00:03:20 verbose #5066 > > "e f \"g h\" i", 00:03:20 verbose #5067 > > ;[[ "e"; "f"; "g h"; "i" ]] 00:03:20 verbose #5068 > > 00:03:20 verbose #5069 > > "\"j k\" \"l\" \"m\"", 00:03:20 verbose #5070 > > ;[[ "j k"; "l"; "m" ]] 00:03:20 verbose #5071 > > 00:03:20 verbose #5072 > > "s -t \"u \`\"v\`\" w\"", 00:03:20 verbose #5073 > > ;[[ "s"; "-t"; "u \`\"v\`\" w" ]] 00:03:20 verbose #5074 > > 00:03:20 verbose #5075 > > "n -o \"p \\\"q\\\" r\"", 00:03:20 verbose #5076 > > ;[[ "n"; "-o"; "p \\\"q\\\" r" ]] 00:03:20 verbose #5077 > > 00:03:20 verbose #5078 > > "r -s \"t \\\"u\\\"\"", 00:03:20 verbose #5079 > > ;[[ "r"; "-s"; "t \\\"u\\\"" ]] 00:03:20 verbose #5080 > > 00:03:20 verbose #5081 > > $'$"x -y \\\"$z -a \'(b=\\\\\\"c-id=)[[a-fA-F0-9]]{{8}}\', {{ \`$_[[1]] + 00:03:20 verbose #5082 > > \`$d++ }}\\\""', 00:03:20 verbose #5083 > > ;[[ "x"; "-y"; "$z -a '(b=\\\"c-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$d++ }" 00:03:20 verbose #5084 > > ]] 00:03:20 verbose #5085 > > 00:03:20 verbose #5086 > > "e -f \"$g -h '(i=`\"j-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$k++ }\"", 00:03:20 verbose #5087 > > ;[[ "e"; "-f"; "$g -h '(i=`\"j-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$k++ }" 00:03:20 verbose #5088 > > ]] 00:03:20 verbose #5089 > > 00:03:20 verbose #5090 > > $'$"--l \\\\\\"\'\'\' m \'\'\'\\\\\\" "', 00:03:20 verbose #5091 > > ;[[ "--l"; "''' m '''" ]] 00:03:20 verbose #5092 > > 00:03:20 verbose #5093 > > $'$"n --o --p q --r \\\"s:/t u/v.w\\\" --x \\\"y:/z.a\\\" --b c.d 00:03:20 verbose #5094 > > \\\"\\\\e{{f-g}}\\\" h.i \\\"j (k)\\\""', 00:03:20 verbose #5095 > > ;[[ "n"; "--o"; "--p"; "q"; "--r"; "s:/t u/v.w"; "--x"; "y:/z.a"; "--b"; 00:03:20 verbose #5096 > > "c.d"; "\\e{f-g}"; "h.i"; "j (k)" ]] 00:03:20 verbose #5097 > > 00:03:20 verbose #5098 > > $'\@$"l ""m n:\\o.p"""', 00:03:20 verbose #5099 > > ;[[ "l"; "m n:\\o.p" ]] 00:03:20 verbose #5100 > > ]] 00:03:20 verbose #5101 > > |> _assert_fn split_args 00:03:39 verbose #5102 > > 00:03:39 verbose #5103 > > ╭─[ 18.71s - return value ]────────────────────────────────────────────────────╮ 00:03:39 verbose #5104 > > │ │ 00:03:39 verbose #5105 > > │ .rs output: │ 00:03:39 verbose #5106 > > │ │ 00:03:39 verbose #5107 > > │ 00:00:00 verbose #1 _assert_fn / { input = a b c } │ 00:03:39 verbose #5108 > > │ __assert_eq' / actual: Array(MutCell(["a", "b", "c"])) / expected: │ 00:03:39 verbose #5109 > > │ Array(MutCell(["a", "b", "c"])) │ 00:03:39 verbose #5110 > > │ │ 00:03:39 verbose #5111 > > │ 00:00:00 verbose #2 _assert_fn / { input = e f "g h" i } │ 00:03:39 verbose #5112 > > │ __assert_eq' / actual: Array(MutCell(["e", "f", "g h", "i"])) / expected: │ 00:03:39 verbose #5113 > > │ Array(MutCell(["e", "f", "g h", "i"])) │ 00:03:39 verbose #5114 > > │ │ 00:03:39 verbose #5115 > > │ 00:00:00 verbose #3 _assert_fn / { input = "j k" "l" "m" } │ 00:03:39 verbose #5116 > > │ __assert_eq' / actual: Array(MutCell(["j k", "l", "m"])) / expected: │ 00:03:39 verbose #5117 > > │ Array(MutCell(["j k", "l", "m"])) │ 00:03:39 verbose #5118 > > │ │ 00:03:39 verbose #5119 > > │ 00:00:00 verbose #4 _assert_fn / { input = s -t "u `"v`" w" } │ 00:03:39 verbose #5120 > > │ __assert_eq' / actual: Array(MutCell(["s", "-t", "u `"v`" w"])) / expected: │ 00:03:39 verbose #5121 > > │ Array(MutCell(["s", "-t", "u `"v`" w"])) │ 00:03:39 verbose #5122 > > │ │ 00:03:39 verbose #5123 > > │ 00:00:00 verbose #5 _assert_fn / { input = n -o "p \"q\" r" } │ 00:03:39 verbose #5124 > > │ __assert_eq' / actual: Array(MutCell(["n", "-o", "p \"q\" r"])) / expected: │ 00:03:39 verbose #5125 > > │ Array(MutCell(["n", "-o", "p \"q\" r"])) │ 00:03:39 verbose #5126 > > │ │ 00:03:39 verbose #5127 > > │ 00:00:00 verbose #6 _assert_fn / { input = r -s "t \"u\"" } │ 00:03:39 verbose #5128 > > │ __assert_eq' / actual: Array(MutCell(["r", "-s", "t \"u\""])) / expected: │ 00:03:39 verbose #5129 > > │ Array(MutCell(["r", "-s", "t \"u\""])) │ 00:03:39 verbose #5130 > > │ │ 00:03:39 verbose #5131 > > │ 00:00:00 verbose #7 _assert_fn / { input = x -y "$z -a '(b=\"c-id=)[ │ 00:03:39 verbose #5132 > > │ a-fA-F0-9]{8}', { `$_[1] + `$d++ }" } │ 00:03:39 verbose #5133 > > │ __assert_eq' / actual: Array(MutCell(["x", "-y", "$z -a '(b=\"c-id=)[ │ 00:03:39 verbose #5134 > > │ a-fA-F0-9]{8}', { `$_[1] + `$d++ }"])) / expected: Array(MutCell(["x", "-y", │ 00:03:39 verbose #5135 > > │ "$z -a '(b=\"c-id=)[a-fA-F0-9]{8}', { `$_[1] + `$d++ }"])) │ 00:03:39 verbose #5136 > > │ │ 00:03:39 verbose #5137 > > │ 00:00:00 verbose #8 _assert_fn / { input = e -f "$g -h '(i=`"j-id=)[ │ 00:03:39 verbose #5138 > > │ a-fA-F...__assert_eq' / actual: ['n', '-o', 'p \\"q\\" r'] / expected: ['n', │ 00:03:39 verbose #5139 > > │ '-o', 'p \\"q\\" r'] │ 00:03:39 verbose #5140 > > │ │ 00:03:39 verbose #5141 > > │ 00:00:00 verbose #6 _assert_fn / { input = r -s "t \"u\"" } │ 00:03:39 verbose #5142 > > │ __assert_eq' / actual: ['r', '-s', 't \\"u\\"'] / expected: ['r', '-s', 't │ 00:03:39 verbose #5143 > > │ \\"u\\"'] │ 00:03:39 verbose #5144 > > │ │ 00:03:39 verbose #5145 > > │ 00:00:00 verbose #7 _assert_fn / { input = x -y "$z -a '(b=\"c-id=)[ │ 00:03:39 verbose #5146 > > │ a-fA-F0-9]{8}', { `$_[1] + `$d++ }" } │ 00:03:39 verbose #5147 > > │ __assert_eq' / actual: ['x', '-y', '$z -a \'(b=\\"c-id=)[a-fA-F0-9]{8}\', { │ 00:03:39 verbose #5148 > > │ `$_[1] + `$d++ }'] / expected: ['x', '-y', '$z -a \'(b=\\"c-id=)[ │ 00:03:39 verbose #5149 > > │ a-fA-F0-9]{8}\', { `$_[1] + `$d++ }'] │ 00:03:39 verbose #5150 > > │ │ 00:03:39 verbose #5151 > > │ 00:00:00 verbose #8 _assert_fn / { input = e -f "$g -h '(i=`"j-id=)[ │ 00:03:39 verbose #5152 > > │ a-fA-F0-9]{8}', { `$_[1] + `$k++ }" } │ 00:03:39 verbose #5153 > > │ __assert_eq' / actual: ['e', '-f', '$g -h \'(i=`"j-id=)[a-fA-F0-9]{8}\', { │ 00:03:39 verbose #5154 > > │ `$_[1] + `$k++ }'] / expected: ['e', '-f', '$g -h \'(i=`"j-id=)[ │ 00:03:39 verbose #5155 > > │ a-fA-F0-9]{8}\', { `$_[1] + `$k++ }'] │ 00:03:39 verbose #5156 > > │ │ 00:03:39 verbose #5157 > > │ 00:00:00 verbose #9 _assert_fn / { input = --l \"''' m '''\" } │ 00:03:39 verbose #5158 > > │ __assert_eq' / actual: ['--l', "''' m '''"] / expected: ['--l', "''' m '''"] │ 00:03:39 verbose #5159 > > │ │ 00:03:39 verbose #5160 > > │ 00:00:00 verbose #10 _assert_fn / { input = n --o --p q --r "s:/t │ 00:03:39 verbose #5161 > > │ u/v.w" --x "y:/z.a" --b c.d "\e{f-g}" h.i "j (k)" } │ 00:03:39 verbose #5162 > > │ __assert_eq' / actual: ['n', '--o', '--p', 'q', '--r', 's:/t u/v.w', '--x', │ 00:03:39 verbose #5163 > > │ 'y:/z.a', '--b', 'c.d', '\\e{f-g}', 'h.i', 'j (k)'] / expected: ['n', '--o', │ 00:03:39 verbose #5164 > > │ '--p', 'q', '--r', 's:/t u/v.w', '--x', 'y:/z.a', '--b', 'c.d', '\\e{f-g}', │ 00:03:39 verbose #5165 > > │ 'h.i', 'j (k)'] │ 00:03:39 verbose #5166 > > │ │ 00:03:39 verbose #5167 > > │ 00:00:00 verbose #11 _assert_fn / { input = l "m n:\o.p" } │ 00:03:39 verbose #5168 > > │ __assert_eq' / actual: ['l', 'm n:\\o.p'] / expected: ['l', 'm n:\\o.p'] │ 00:03:39 verbose #5169 > > │ │ 00:03:39 verbose #5170 > > │ │ 00:03:39 verbose #5171 > > │ │ 00:03:39 verbose #5172 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:39 verbose #5173 > > 00:03:39 verbose #5174 > > ╭─[ 18.72s - stdout ]──────────────────────────────────────────────────────────╮ 00:03:39 verbose #5175 > > │ .fsx output: │ 00:03:39 verbose #5176 > > │ │ 00:03:39 verbose #5177 > > │ 00:00:00 verbose #1 _assert_fn / { input = a b c } │ 00:03:39 verbose #5178 > > │ __assert_eq' / actual: [|"a"; "b"; "c"|] / expected: [|"a"; "b"; "c"|] │ 00:03:39 verbose #5179 > > │ │ 00:03:39 verbose #5180 > > │ 00:00:00 verbose #2 _assert_fn / { input = e f "g h" i } │ 00:03:39 verbose #5181 > > │ __assert_eq' / actual: [|"e"; "f"; "g h"; "i"|] / expected: [|"e"; "f"; "g │ 00:03:39 verbose #5182 > > │ h"; "i"|] │ 00:03:39 verbose #5183 > > │ │ 00:03:39 verbose #5184 > > │ 00:00:00 verbose #3 _assert_fn / { input = "j k" "l" "m" } │ 00:03:39 verbose #5185 > > │ __assert_eq' / actual: [|"j k"; "l"; "m"|] / expected: [|"j k"; "l"; "m"|] │ 00:03:39 verbose #5186 > > │ │ 00:03:39 verbose #5187 > > │ 00:00:00 verbose #4 _assert_fn / { input = s -t "u `"v`" w" } │ 00:03:39 verbose #5188 > > │ __assert_eq' / actual: [|"s"; "-t"; "u `"v`" w"|] / expected: [|"s"; "-t"; │ 00:03:39 verbose #5189 > > │ "u `"v`" w"|] │ 00:03:39 verbose #5190 > > │ │ 00:03:39 verbose #5191 > > │ 00:00:00 verbose #5 _assert_fn / { input = n -o "p \"q\" r" } │ 00:03:39 verbose #5192 > > │ __assert_eq' / actual: [|"n"; "-o"; "p \"q\" r"|] / expected: [|"n"; "-o"; │ 00:03:39 verbose #5193 > > │ "p \"q\" r"|] │ 00:03:39 verbose #5194 > > │ │ 00:03:39 verbose #5195 > > │ 00:00:00 verbose #6 _assert_fn / { input = r -s "t \"u\"" } │ 00:03:39 verbose #5196 > > │ __assert_eq' / actual: [|"r"; "-s"; "t \"u\""|] / expected: [|"r"; "-s"; "t │ 00:03:39 verbose #5197 > > │ \"u\""|] │ 00:03:39 verbose #5198 > > │ │ 00:03:39 verbose #5199 > > │ 00:00:00 verbose #7 _assert_fn / { input = x -y "$z -a '(b=\"c-id=)[ │ 00:03:39 verbose #5200 > > │ a-fA-F0-9]{8}', { `$_[1] + `$d++ }" } │ 00:03:39 verbose #5201 > > │ __assert_eq' / actual: [|"x"; "-y"; "$z -a '(b=\"c-id=)[a-fA-F0-9]{8}', { │ 00:03:39 verbose #5202 > > │ `$_[1] + `$d++ }"|] / expected: [|"x"; "-y"; "$z -a '(b=\"c-id=)[ │ 00:03:39 verbose #5203 > > │ a-fA-F0-9]{8}', { `$_[1] + `$d++ }"|] │ 00:03:39 verbose #5204 > > │ │ 00:03:39 verbose #5205 > > │ 00:00:00 verbose #8 _assert_fn / { input = e -f "$g -h '(i=`"j-id=)[ │ 00:03:39 verbose #5206 > > │ a-fA-F0-9]{8}', { `$_[1] + `$k++ }" } │ 00:03:39 verbose #5207 > > │ __assert_eq' / actual: [|"e"; "-f"; "$g -h '(i=`"j-id=)[a-fA-F0-9]{8}', { │ 00:03:39 verbose #5208 > > │ `$_[1] + `$k++ }"|] / expected: [|"e"; "-f"; "$g -h '(i=`"j-id=)[ │ 00:03:39 verbose #5209 > > │ a-fA-F0-9]{8}', { `$_[1] + `$k++ }"|] │ 00:03:39 verbose #5210 > > │ │ 00:03:39 verbose #5211 > > │ 00:00:00 verbose #9 _assert_fn / { input = --l \"''' m '''\" } │ 00:03:39 verbose #5212 > > │ __assert_eq' / actual: [|"--l"; "''' m '''"|] / expected: [|"--l"; "''' m │ 00:03:39 verbose #5213 > > │ '''"|] │ 00:03:39 verbose #5214 > > │ │ 00:03:39 verbose #5215 > > │ 00:00:00 verbose #10 _assert_fn / { input = n --o --p q --r "s:/t │ 00:03:39 verbose #5216 > > │ u/v.w" --x "y:/z.a" --b c.d "\e{f-g}" h.i "j (k)" } │ 00:03:39 verbose #5217 > > │ __assert_eq' / actual: [|"n"; "--o"; "--p"; "q"; "--r"; "s:/t u/v.w"; "--x"; │ 00:03:39 verbose #5218 > > │ "y:/z.a"; "--b"; "c.d"; │ 00:03:39 verbose #5219 > > │ "\e{f-g}"; "h.i"; "j (k)"|] / expected: [|"n"; "--o"; "--p"; "q"; "--r"; │ 00:03:39 verbose #5220 > > │ "s:/t u/v.w"; "--x"; "y:/z.a"; "--b"; "c.d"; │ 00:03:39 verbose #5221 > > │ "\e{f-g}"; "h.i"; "j (k)"|] │ 00:03:39 verbose #5222 > > │ │ 00:03:39 verbose #5223 > > │ 00:00:00 verbose #11 _assert_fn / { input = l "m n:\o.p" } │ 00:03:39 verbose #5224 > > │ __assert_eq' / actual: [|"l"; "m n:\o.p"|] / expected: [|"l"; "m n:\o.p"|] │ 00:03:39 verbose #5225 > > │ │ 00:03:39 verbose #5226 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:39 verbose #5227 > > 00:03:39 verbose #5228 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:39 verbose #5229 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:39 verbose #5230 > > │ ### split_command │ 00:03:39 verbose #5231 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:39 verbose #5232 > > 00:03:39 verbose #5233 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:39 verbose #5234 > > let split_command (command : string) : result (string * option string) string = 00:03:39 verbose #5235 > > open parsing 00:03:39 verbose #5236 > > inl quotes = [[ '"'; '\'' ]] 00:03:39 verbose #5237 > > inl p_quoted_char = quotes |> listm.map p_char |> choice 00:03:39 verbose #5238 > > inl normalize = function '\\' => '/' | c => c 00:03:39 verbose #5239 > > inl p_quoted = quotes |> none_of |>> normalize |> many_chars |> between 00:03:39 verbose #5240 > > p_quoted_char p_quoted_char 00:03:39 verbose #5241 > > inl p_unquoted = quotes ++ [[ ' ' ]] |> none_of |>> normalize |> many1_chars 00:03:39 verbose #5242 > > inl p_path = p_quoted <|> p_unquoted <|> eof () >>% "" .>> spaces () 00:03:39 verbose #5243 > > inl p_args = p_char ' ' |> opt >>. (any_char () |> many1_chars) 00:03:39 verbose #5244 > > inl p_command = p_path .>>. (p_args |> opt) 00:03:39 verbose #5245 > > command 00:03:39 verbose #5246 > > |> parse p_command 00:03:39 verbose #5247 > > |> resultm.map fst 00:03:39 verbose #5248 > > 00:03:39 verbose #5249 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:39 verbose #5250 > > //// test 00:03:39 verbose #5251 > > ///! fsharp 00:03:39 verbose #5252 > > ////! cuda // Only stack allocated primitive types (i8,i16,i32,i64 and 00:03:39 verbose #5253 > > u8,u16,u32,u64 and f32,f64 and bool) are allowed in CuPy arrays. 00:03:39 verbose #5254 > > ///! rust 00:03:39 verbose #5255 > > ///! typescript 00:03:39 verbose #5256 > > ///! python 00:03:39 verbose #5257 > > 00:03:39 verbose #5258 > > [[ 00:03:39 verbose #5259 > > "", 00:03:39 verbose #5260 > > ("", None) 00:03:39 verbose #5261 > > 00:03:39 verbose #5262 > > "/a/b/c", 00:03:39 verbose #5263 > > ("/a/b/c", None) 00:03:39 verbose #5264 > > 00:03:39 verbose #5265 > > "d e.f", 00:03:39 verbose #5266 > > ("d", Some "e.f") 00:03:39 verbose #5267 > > 00:03:39 verbose #5268 > > $'"""..\\..\\g.h i.j k.l"""', 00:03:39 verbose #5269 > > ("../../g.h", Some "i.j k.l") 00:03:39 verbose #5270 > > 00:03:39 verbose #5271 > > $'\@"m:\\n\\o.p ""q.r s.t"""', 00:03:39 verbose #5272 > > ("m:/n/o.p", Some $'\@"""q.r s.t"""') 00:03:39 verbose #5273 > > 00:03:39 verbose #5274 > > $'\@"""..\\..\\u v\\w.x"" ""y z.a"" b.c"', 00:03:39 verbose #5275 > > ("../../u v/w.x", Some $'\@"""y z.a"" b.c"') 00:03:39 verbose #5276 > > 00:03:39 verbose #5277 > > $'\@"""..\\..\\d e.f"" -g \\\\""h i\\\\"""', 00:03:39 verbose #5278 > > ("../../d e.f", Some $'\@"-g \\\\""h i\\\\"""') 00:03:39 verbose #5279 > > 00:03:39 verbose #5280 > > $'\@"..\\..\\j k.l -m \\\\""n o\\\\"""', 00:03:39 verbose #5281 > > ("../../j", Some $'\@"k.l -m \\\\""n o\\\\"""') 00:03:39 verbose #5282 > > ]] 00:03:39 verbose #5283 > > |> _assert_fn split_command 00:03:58 verbose #5284 > > 00:03:58 verbose #5285 > > ╭─[ 19.17s - return value ]────────────────────────────────────────────────────╮ 00:03:58 verbose #5286 > > │ │ 00:03:58 verbose #5287 > > │ .rs output: │ 00:03:58 verbose #5288 > > │ │ 00:03:58 verbose #5289 > > │ 00:00:00 verbose #1 _assert_fn / { input = } │ 00:03:58 verbose #5290 > > │ __assert_eq' / actual: ("", US1_1) / expected: ("", US1_1) │ 00:03:58 verbose #5291 > > │ │ 00:03:58 verbose #5292 > > │ 00:00:00 verbose #2 _assert_fn / { input = /a/b/c } │ 00:03:58 verbose #5293 > > │ __assert_eq' / actual: ("/a/b/c", US1_1) / expected: ("/a/b/c", US1_1) │ 00:03:58 verbose #5294 > > │ │ 00:03:58 verbose #5295 > > │ 00:00:00 verbose #3 _assert_fn / { input = d e.f } │ 00:03:58 verbose #5296 > > │ __assert_eq' / actual: ("d", US1_0("e.f")) / expected: ("d", US1_0("e.f")) │ 00:03:58 verbose #5297 > > │ │ 00:03:58 verbose #5298 > > │ 00:00:00 verbose #4 _assert_fn / { input = ..\..\g.h i.j k.l } │ 00:03:58 verbose #5299 > > │ __assert_eq' / actual: ("../../g.h", US1_0("i.j k.l")) / expected: │ 00:03:58 verbose #5300 > > │ ("../../g.h", US1_0("i.j k.l")) │ 00:03:58 verbose #5301 > > │ │ 00:03:58 verbose #5302 > > │ 00:00:00 verbose #5 _assert_fn / { input = m:\n\o.p "q.r s.t" } │ 00:03:58 verbose #5303 > > │ __assert_eq' / actual: ("m:/n/o.p", US1_0(""q.r s.t"")) / expected: │ 00:03:58 verbose #5304 > > │ ("m:/n/o.p", US1_0(""q.r s.t"")) │ 00:03:58 verbose #5305 > > │ │ 00:03:58 verbose #5306 > > │ 00:00:00 verbose #6 _assert_fn / { input = "..\..\u v\w.x" "y z.a" b.c │ 00:03:58 verbose #5307 > > │ } │ 00:03:58 verbose #5308 > > │ __assert_eq' / actual: ("../../u v/w.x", US1_0(""y z.a" b.c")) / expected: │ 00:03:58 verbose #5309 > > │ ("../../u v/w.x", US1_0(""y z.a" b.c")) │ 00:03:58 verbose #5310 > > │ │ 00:03:58 verbose #5311 > > │ 00:00:00 verbose #7 _assert_fn / { input = "..\..\d e.f" -g \\"h i\\" │ 00:03:58 verbose #5312 > > │ } │ 00:03:58 verbose #5313 > > │ __assert_eq' / actual: ("../../d e.f", US1_0("-g \\"h i\\"")) / expected: │ 00:03:58 verbose #5314 > > │ ("../../d e.f", US1_0("-g \\"h i\\"")) │ 00:03:58 verbose #5315 > > │ │ 00:03:58 verbose #5316 > > │ 00:00:00 verbose #8 _assert_fn / { input = ..\..\j k.l -m \\"n o\\" } │ 00:03:58 verbose #5317 > > │ __assert_eq' / actual: ("../../j", US1_0("k.l -m \\"n o\\"")) / expected: │ 00:03:58 verbose #5318 > > │ ("../../j", US1_0("k.l -m \\"n o\\"")) │ 00:03:58 verbose #5319 > > │ │ 00:03:58 verbose #5320 > > │ │ 00:03:58 verbose #5321 > > │ .ts output: │ 00:03:58 verbose #5322 > > │ │ 00:03:58 verbose #5323 > > │ 00:00:00 verbose #1 _assert_fn / { input = } │ 00:03:58 verbose #5324 > > │ __assert_eq' / actual: ,US1_1 / expected: ,US1_1 │ 00:03:58 verbose #5325 > > │ │ 00:03:58 verbose #5326 > > │ 00:00:00 verbose #2 _assert_fn /... #8 _assert_fn / { input = ..\..\j │ 00:03:58 verbose #5327 > > │ k.l -m \\"n o\\" } │ 00:03:58 verbose #5328 > > │ __assert_eq' / actual: ../../j,US1_0 (k.l -m \\"n o\\") / expected: │ 00:03:58 verbose #5329 > > │ ../../j,US1_0 (k.l -m \\"n o\\") │ 00:03:58 verbose #5330 > > │ │ 00:03:58 verbose #5331 > > │ │ 00:03:58 verbose #5332 > > │ .py output: │ 00:03:58 verbose #5333 > > │ │ 00:03:58 verbose #5334 > > │ 00:00:00 verbose #1 _assert_fn / { input = } │ 00:03:58 verbose #5335 > > │ __assert_eq' / actual: ('', US1_1) / expected: ('', US1_1) │ 00:03:58 verbose #5336 > > │ │ 00:03:58 verbose #5337 > > │ 00:00:00 verbose #2 _assert_fn / { input = /a/b/c } │ 00:03:58 verbose #5338 > > │ __assert_eq' / actual: ('/a/b/c', US1_1) / expected: ('/a/b/c', US1_1) │ 00:03:58 verbose #5339 > > │ │ 00:03:58 verbose #5340 > > │ 00:00:00 verbose #3 _assert_fn / { input = d e.f } │ 00:03:58 verbose #5341 > > │ __assert_eq' / actual: ('d', US1_0 "e.f") / expected: ('d', US1_0 "e.f") │ 00:03:58 verbose #5342 > > │ │ 00:03:58 verbose #5343 > > │ 00:00:00 verbose #4 _assert_fn / { input = ..\..\g.h i.j k.l } │ 00:03:58 verbose #5344 > > │ __assert_eq' / actual: ('../../g.h', US1_0 ("i.j k.l")) / expected: │ 00:03:58 verbose #5345 > > │ ('../../g.h', US1_0 ("i.j k.l")) │ 00:03:58 verbose #5346 > > │ │ 00:03:58 verbose #5347 > > │ 00:00:00 verbose #5 _assert_fn / { input = m:\n\o.p "q.r s.t" } │ 00:03:58 verbose #5348 > > │ __assert_eq' / actual: ('m:/n/o.p', US1_0 (""q.r s.t"")) / expected: │ 00:03:58 verbose #5349 > > │ ('m:/n/o.p', US1_0 (""q.r s.t"")) │ 00:03:58 verbose #5350 > > │ │ 00:03:58 verbose #5351 > > │ 00:00:00 verbose #6 _assert_fn / { input = "..\..\u v\w.x" "y z.a" b.c │ 00:03:58 verbose #5352 > > │ } │ 00:03:58 verbose #5353 > > │ __assert_eq' / actual: ('../../u v/w.x', US1_0 (""y z.a" b.c")) / expected: │ 00:03:58 verbose #5354 > > │ ('../../u v/w.x', US1_0 (""y z.a" b.c")) │ 00:03:58 verbose #5355 > > │ │ 00:03:58 verbose #5356 > > │ 00:00:00 verbose #7 _assert_fn / { input = "..\..\d e.f" -g \\"h i\\" } │ 00:03:58 verbose #5357 > > │ __assert_eq' / actual: ('../../d e.f', US1_0 ("-g \\"h i\\"")) / expected: │ 00:03:58 verbose #5358 > > │ ('../../d e.f', US1_0 ("-g \\"h i\\"")) │ 00:03:58 verbose #5359 > > │ │ 00:03:58 verbose #5360 > > │ 00:00:00 verbose #8 _assert_fn / { input = ..\..\j k.l -m \\"n o\\" } │ 00:03:58 verbose #5361 > > │ __assert_eq' / actual: ('../../j', US1_0 ("k.l -m \\"n o\\"")) / expected: │ 00:03:58 verbose #5362 > > │ ('../../j', US1_0 ("k.l -m \\"n o\\"")) │ 00:03:58 verbose #5363 > > │ │ 00:03:58 verbose #5364 > > │ │ 00:03:58 verbose #5365 > > │ │ 00:03:58 verbose #5366 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:58 verbose #5367 > > 00:03:58 verbose #5368 > > ╭─[ 19.17s - stdout ]──────────────────────────────────────────────────────────╮ 00:03:58 verbose #5369 > > │ .fsx output: │ 00:03:58 verbose #5370 > > │ │ 00:03:58 verbose #5371 > > │ 00:00:00 verbose #1 _assert_fn / { input = } │ 00:03:58 verbose #5372 > > │ __assert_eq' / actual: struct ("", US1_1) / expected: struct ("", US1_1) │ 00:03:58 verbose #5373 > > │ │ 00:03:58 verbose #5374 > > │ 00:00:00 verbose #2 _assert_fn / { input = /a/b/c } │ 00:03:58 verbose #5375 > > │ __assert_eq' / actual: struct ("/a/b/c", US1_1) / expected: struct │ 00:03:58 verbose #5376 > > │ ("/a/b/c", US1_1) │ 00:03:58 verbose #5377 > > │ │ 00:03:58 verbose #5378 > > │ 00:00:00 verbose #3 _assert_fn / { input = d e.f } │ 00:03:58 verbose #5379 > > │ __assert_eq' / actual: struct ("d", US1_0 "e.f") / expected: struct ("d", │ 00:03:58 verbose #5380 > > │ US1_0 "e.f") │ 00:03:58 verbose #5381 > > │ │ 00:03:58 verbose #5382 > > │ 00:00:00 verbose #4 _assert_fn / { input = ..\..\g.h i.j k.l } │ 00:03:58 verbose #5383 > > │ __assert_eq' / actual: struct ("../../g.h", US1_0 "i.j k.l") / expected: │ 00:03:58 verbose #5384 > > │ struct ("../../g.h", US1_0 "i.j k.l") │ 00:03:58 verbose #5385 > > │ │ 00:03:58 verbose #5386 > > │ 00:00:00 verbose #5 _assert_fn / { input = m:\n\o.p "q.r s.t" } │ 00:03:58 verbose #5387 > > │ __assert_eq' / actual: struct ("m:/n/o.p", US1_0 ""q.r s.t"") / expected: │ 00:03:58 verbose #5388 > > │ struct ("m:/n/o.p", US1_0 ""q.r s.t"") │ 00:03:58 verbose #5389 > > │ │ 00:03:58 verbose #5390 > > │ 00:00:00 verbose #6 _assert_fn / { input = "..\..\u v\w.x" "y z.a" b.c │ 00:03:58 verbose #5391 > > │ } │ 00:03:58 verbose #5392 > > │ __assert_eq' / actual: struct ("../../u v/w.x", US1_0 ""y z.a" b.c") / │ 00:03:58 verbose #5393 > > │ expected: struct ("../../u v/w.x", US1_0 ""y z.a" b.c") │ 00:03:58 verbose #5394 > > │ │ 00:03:58 verbose #5395 > > │ 00:00:00 verbose #7 _assert_fn / { input = "..\..\d e.f" -g \\"h i\\" } │ 00:03:58 verbose #5396 > > │ __assert_eq' / actual: struct ("../../d e.f", US1_0 "-g \\"h i\\"") / │ 00:03:58 verbose #5397 > > │ expected: struct ("../../d e.f", US1_0 "-g \\"h i\\"") │ 00:03:58 verbose #5398 > > │ │ 00:03:58 verbose #5399 > > │ 00:00:00 verbose #8 _assert_fn / { input = ..\..\j k.l -m \\"n o\\" } │ 00:03:58 verbose #5400 > > │ __assert_eq' / actual: struct ("../../j", US1_0 "k.l -m \\"n o\\"") / │ 00:03:58 verbose #5401 > > │ expected: struct ("../../j", US1_0 "k.l -m \\"n o\\"") │ 00:03:58 verbose #5402 > > │ │ 00:03:58 verbose #5403 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:58 verbose #5404 > > 00:03:58 verbose #5405 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:58 verbose #5406 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:58 verbose #5407 > > │ ### execution_line │ 00:03:58 verbose #5408 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:58 verbose #5409 > > 00:03:58 verbose #5410 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:58 verbose #5411 > > type execution_line = 00:03:58 verbose #5412 > > { 00:03:58 verbose #5413 > > process_id : int 00:03:58 verbose #5414 > > line : string 00:03:58 verbose #5415 > > error : bool 00:03:58 verbose #5416 > > } 00:03:58 verbose #5417 > > 00:03:58 verbose #5418 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:58 verbose #5419 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:58 verbose #5420 > > │ ## rust │ 00:03:58 verbose #5421 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:58 verbose #5422 > > 00:03:58 verbose #5423 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:58 verbose #5424 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:58 verbose #5425 > > │ ### process_child │ 00:03:58 verbose #5426 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:58 verbose #5427 > > 00:03:58 verbose #5428 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:58 verbose #5429 > > nominal process_child = 00:03:58 verbose #5430 > > `( 00:03:58 verbose #5431 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:58 verbose #5432 > > Fable.Core.Emit(\"std::process::Child\")>]]\n#endif\ntype std_process_Child = 00:03:58 verbose #5433 > > class end" 00:03:58 verbose #5434 > > $'' : $'std_process_Child' 00:03:58 verbose #5435 > > ) 00:03:58 verbose #5436 > > 00:03:58 verbose #5437 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:58 verbose #5438 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:58 verbose #5439 > > │ ### process_child_stdin │ 00:03:58 verbose #5440 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:58 verbose #5441 > > 00:03:58 verbose #5442 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:58 verbose #5443 > > nominal process_child_stdin = 00:03:58 verbose #5444 > > `( 00:03:58 verbose #5445 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:58 verbose #5446 > > Fable.Core.Emit(\"std::process::ChildStdin\")>]]\n#endif\ntype 00:03:58 verbose #5447 > > std_process_ChildStdin = class end" 00:03:58 verbose #5448 > > $'' : $'std_process_ChildStdin' 00:03:58 verbose #5449 > > ) 00:03:58 verbose #5450 > > 00:03:58 verbose #5451 > > inl process_child_stdin 00:03:58 verbose #5452 > > (child : rust.ref (rust.mut' process_child)) 00:03:58 verbose #5453 > > : rust.ref (rust.mut' (optionm'.option' process_child_stdin)) 00:03:58 verbose #5454 > > = 00:03:58 verbose #5455 > > !\\(child, $'"&mut $0.stdin"') 00:03:58 verbose #5456 > > 00:03:58 verbose #5457 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:58 verbose #5458 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:58 verbose #5459 > > │ ## runtime │ 00:03:58 verbose #5460 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:58 verbose #5461 > > 00:03:58 verbose #5462 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:58 verbose #5463 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:58 verbose #5464 > > │ ### execution_options │ 00:03:58 verbose #5465 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:58 verbose #5466 > > 00:03:58 verbose #5467 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:58 verbose #5468 > > type execution_options = 00:03:58 verbose #5469 > > { 00:03:58 verbose #5470 > > command : string 00:03:58 verbose #5471 > > cancellation_token : optionm'.option' threading.cancellation_token 00:03:58 verbose #5472 > > environment_variables : array_base (string * string) 00:03:58 verbose #5473 > > on_line : optionm'.option' (execution_line -> async.async ()) 00:03:58 verbose #5474 > > stdin : optionm'.option' (threading.arc (threading.mutex 00:03:58 verbose #5475 > > process_child_stdin) -> ()) 00:03:58 verbose #5476 > > trace : bool 00:03:58 verbose #5477 > > working_directory : optionm'.option' string 00:03:58 verbose #5478 > > } 00:03:58 verbose #5479 > > 00:03:58 verbose #5480 > > inl execution_options (fn : execution_options -> execution_options) : 00:03:58 verbose #5481 > > execution_options = 00:03:58 verbose #5482 > > { 00:03:58 verbose #5483 > > command = "" 00:03:58 verbose #5484 > > cancellation_token = None |> optionm'.box 00:03:58 verbose #5485 > > environment_variables = ;[[]] 00:03:58 verbose #5486 > > on_line = None |> optionm'.box 00:03:58 verbose #5487 > > stdin = None |> optionm'.box 00:03:58 verbose #5488 > > trace = true 00:03:58 verbose #5489 > > working_directory = None |> optionm'.box 00:03:58 verbose #5490 > > } 00:03:58 verbose #5491 > > |> fn 00:03:58 verbose #5492 > > 00:03:58 verbose #5493 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:58 verbose #5494 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:58 verbose #5495 > > │ ## rust │ 00:03:58 verbose #5496 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:58 verbose #5497 > > 00:03:58 verbose #5498 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:58 verbose #5499 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:58 verbose #5500 > > │ ### process_child_stderr │ 00:03:58 verbose #5501 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:58 verbose #5502 > > 00:03:58 verbose #5503 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:58 verbose #5504 > > nominal process_child_stderr = 00:03:58 verbose #5505 > > `( 00:03:58 verbose #5506 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:58 verbose #5507 > > Fable.Core.Emit(\"std::process::ChildStderr\")>]]\n#endif\ntype 00:03:58 verbose #5508 > > std_process_ChildStderr = class end" 00:03:58 verbose #5509 > > $'' : $'std_process_ChildStderr' 00:03:58 verbose #5510 > > ) 00:03:58 verbose #5511 > > 00:03:58 verbose #5512 > > inl process_child_stderr 00:03:58 verbose #5513 > > (child : rust.ref (rust.mut' process_child)) 00:03:58 verbose #5514 > > : rust.ref (rust.mut' (optionm'.option' process_child_stderr)) 00:03:58 verbose #5515 > > = 00:03:58 verbose #5516 > > !\($'"&mut !child.stderr"') 00:03:58 verbose #5517 > > 00:03:58 verbose #5518 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:58 verbose #5519 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:58 verbose #5520 > > │ ### process_child_stdout │ 00:03:58 verbose #5521 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:58 verbose #5522 > > 00:03:58 verbose #5523 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:58 verbose #5524 > > nominal process_child_stdout = 00:03:58 verbose #5525 > > `( 00:03:58 verbose #5526 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:58 verbose #5527 > > Fable.Core.Emit(\"std::process::ChildStdout\")>]]\n#endif\ntype 00:03:58 verbose #5528 > > std_process_ChildStdout = class end" 00:03:58 verbose #5529 > > $'' : $'std_process_ChildStdout' 00:03:58 verbose #5530 > > ) 00:03:58 verbose #5531 > > 00:03:58 verbose #5532 > > inl process_child_stdout 00:03:58 verbose #5533 > > (child : rust.ref (rust.mut' process_child)) 00:03:58 verbose #5534 > > : rust.ref (rust.mut' (optionm'.option' process_child_stdout)) 00:03:58 verbose #5535 > > = 00:03:58 verbose #5536 > > !\($'"&mut !child.stdout"') 00:03:58 verbose #5537 > > 00:03:58 verbose #5538 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:58 verbose #5539 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:58 verbose #5540 > > │ ### process_command │ 00:03:58 verbose #5541 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:58 verbose #5542 > > 00:03:58 verbose #5543 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:58 verbose #5544 > > nominal process_command = 00:03:58 verbose #5545 > > `( 00:03:58 verbose #5546 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:58 verbose #5547 > > Fable.Core.Emit(\"std::process::Command\")>]]\n#endif\ntype std_process_Command 00:03:58 verbose #5548 > > = class end" 00:03:58 verbose #5549 > > $'' : $'std_process_Command' 00:03:58 verbose #5550 > > ) 00:03:59 verbose #5551 > > 00:03:59 verbose #5552 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:59 verbose #5553 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:59 verbose #5554 > > │ ### process_stdio │ 00:03:59 verbose #5555 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:59 verbose #5556 > > 00:03:59 verbose #5557 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:59 verbose #5558 > > nominal process_stdio = 00:03:59 verbose #5559 > > `( 00:03:59 verbose #5560 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:59 verbose #5561 > > Fable.Core.Emit(\"std::process::Stdio\")>]]\n#endif\ntype std_process_Stdio = 00:03:59 verbose #5562 > > class end" 00:03:59 verbose #5563 > > $'' : $'std_process_Stdio' 00:03:59 verbose #5564 > > ) 00:03:59 verbose #5565 > > 00:03:59 verbose #5566 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:59 verbose #5567 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:59 verbose #5568 > > │ ### process_output │ 00:03:59 verbose #5569 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:59 verbose #5570 > > 00:03:59 verbose #5571 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:59 verbose #5572 > > nominal process_output = 00:03:59 verbose #5573 > > `( 00:03:59 verbose #5574 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:59 verbose #5575 > > Fable.Core.Emit(\"std::process::Output\")>]]\n#endif\ntype std_process_Output = 00:03:59 verbose #5576 > > class end" 00:03:59 verbose #5577 > > $'' : $'std_process_Output' 00:03:59 verbose #5578 > > ) 00:03:59 verbose #5579 > > 00:03:59 verbose #5580 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:59 verbose #5581 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:59 verbose #5582 > > │ ### process_exit_status │ 00:03:59 verbose #5583 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:59 verbose #5584 > > 00:03:59 verbose #5585 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:59 verbose #5586 > > nominal process_exit_status = 00:03:59 verbose #5587 > > `( 00:03:59 verbose #5588 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:59 verbose #5589 > > Fable.Core.Emit(\"std::process::ExitStatus\")>]]\n#endif\ntype 00:03:59 verbose #5590 > > std_process_ExitStatus = class end" 00:03:59 verbose #5591 > > $'' : $'std_process_ExitStatus' 00:03:59 verbose #5592 > > ) 00:03:59 verbose #5593 > > 00:03:59 verbose #5594 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:59 verbose #5595 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:59 verbose #5596 > > │ ### process_output_status │ 00:03:59 verbose #5597 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:59 verbose #5598 > > 00:03:59 verbose #5599 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:59 verbose #5600 > > inl process_output_status (output : process_output) : process_exit_status = 00:03:59 verbose #5601 > > !\\(output, $'"$0.status"') 00:03:59 verbose #5602 > > 00:03:59 verbose #5603 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:59 verbose #5604 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:59 verbose #5605 > > │ ### process_exit_status_code │ 00:03:59 verbose #5606 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:59 verbose #5607 > > 00:03:59 verbose #5608 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:59 verbose #5609 > > inl process_exit_status_code (status : process_exit_status) : optionm'.option' 00:03:59 verbose #5610 > > i32 = 00:03:59 verbose #5611 > > !\\(status, $'"$0.code()"') 00:03:59 verbose #5612 > > 00:03:59 verbose #5613 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:59 verbose #5614 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:59 verbose #5615 > > │ ### stdin_write_all │ 00:03:59 verbose #5616 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:59 verbose #5617 > > 00:03:59 verbose #5618 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:59 verbose #5619 > > inl stdin_write_all (stdin : threading.mutex_guard process_child_stdin) (text : 00:03:59 verbose #5620 > > string) : () = 00:03:59 verbose #5621 > > inl stream = text |> sm'.as_bytes 00:03:59 verbose #5622 > > inl stdin = join stdin 00:03:59 verbose #5623 > > (!\($'"true; let mut !stdin = !stdin"') : bool) |> ignore 00:03:59 verbose #5624 > > (!\\(stdin, $'"true; std::io::Write::write_all(&mut *$0, 00:03:59 verbose #5625 > > !stream).unwrap()"') : bool) |> ignore 00:03:59 verbose #5626 > > 00:03:59 verbose #5627 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:59 verbose #5628 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:03:59 verbose #5629 > > │ ### stdin_flush │ 00:03:59 verbose #5630 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:03:59 verbose #5631 > > 00:03:59 verbose #5632 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:59 verbose #5633 > > inl stdin_flush (stdin : threading.mutex_guard process_child_stdin) : () = 00:03:59 verbose #5634 > > inl stdin = join stdin 00:03:59 verbose #5635 > > (!\($'"true; let mut !stdin = !stdin"') : bool) |> ignore 00:03:59 verbose #5636 > > (!\\(stdin, $'"true; std::io::Write::flush(&mut *$0).unwrap()"') : bool) |> 00:03:59 verbose #5637 > > ignore 00:04:00 verbose #5638 > > 00:04:00 verbose #5639 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:00 verbose #5640 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:00 verbose #5641 > > │ ### new_process_command │ 00:04:00 verbose #5642 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:00 verbose #5643 > > 00:04:00 verbose #5644 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:00 verbose #5645 > > inl new_process_command (file_name : string) : process_command = 00:04:00 verbose #5646 > > !\\(file_name, $'"std::process::Command::new(&*$0)"') 00:04:00 verbose #5647 > > 00:04:00 verbose #5648 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:00 verbose #5649 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:00 verbose #5650 > > │ ### process_stdio_piped │ 00:04:00 verbose #5651 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:00 verbose #5652 > > 00:04:00 verbose #5653 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:00 verbose #5654 > > inl process_stdio_piped () : process_stdio = 00:04:00 verbose #5655 > > !\($'"std::process::Stdio::piped()"') 00:04:00 verbose #5656 > > 00:04:00 verbose #5657 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:00 verbose #5658 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:00 verbose #5659 > > │ ### process_command_args │ 00:04:00 verbose #5660 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:00 verbose #5661 > > 00:04:00 verbose #5662 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:00 verbose #5663 > > inl process_command_args (args : am'.vec sm'.std_string) (c : process_command) : 00:04:00 verbose #5664 > > rust.ref (rust.mut' process_command) = 00:04:00 verbose #5665 > > (!\($'"true; let mut !c = !c"') : bool) |> ignore 00:04:00 verbose #5666 > > !\\((c, args), $'"std::process::Command::args(&mut $0, &*$1)"') 00:04:00 verbose #5667 > > 00:04:00 verbose #5668 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:00 verbose #5669 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:00 verbose #5670 > > │ ### process_command_stdout │ 00:04:00 verbose #5671 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:00 verbose #5672 > > 00:04:00 verbose #5673 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:00 verbose #5674 > > inl process_command_stdout (stdio : process_stdio) (c : rust.ref (rust.mut' 00:04:00 verbose #5675 > > process_command)) : rust.ref (rust.mut' process_command) = 00:04:00 verbose #5676 > > !\\(c, $'"std::process::Command::stdout($0, std::process::Stdio::piped())"') 00:04:00 verbose #5677 > > 00:04:00 verbose #5678 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:00 verbose #5679 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:00 verbose #5680 > > │ ### process_command_stderr │ 00:04:00 verbose #5681 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:00 verbose #5682 > > 00:04:00 verbose #5683 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:00 verbose #5684 > > inl process_command_stderr (stdio : process_stdio) (c : rust.ref (rust.mut' 00:04:00 verbose #5685 > > process_command)) : rust.ref (rust.mut' process_command) = 00:04:00 verbose #5686 > > !\\(c, $'"std::process::Command::stderr($0, std::process::Stdio::piped())"') 00:04:00 verbose #5687 > > 00:04:00 verbose #5688 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:00 verbose #5689 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:00 verbose #5690 > > │ ### process_command_stdin │ 00:04:00 verbose #5691 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:00 verbose #5692 > > 00:04:00 verbose #5693 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:00 verbose #5694 > > inl process_command_stdin (stdio : process_stdio) (c : rust.ref (rust.mut' 00:04:00 verbose #5695 > > process_command)) : rust.ref (rust.mut' process_command) = 00:04:00 verbose #5696 > > !\\(c, $'"std::process::Command::stdin($0, std::process::Stdio::piped())"') 00:04:00 verbose #5697 > > 00:04:00 verbose #5698 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:00 verbose #5699 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:00 verbose #5700 > > │ ### process_command_current_dir │ 00:04:00 verbose #5701 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:00 verbose #5702 > > 00:04:00 verbose #5703 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:00 verbose #5704 > > inl process_command_current_dir 00:04:00 verbose #5705 > > (dir : string) 00:04:00 verbose #5706 > > (c : rust.ref (rust.mut' process_command)) 00:04:00 verbose #5707 > > : rust.ref (rust.mut' process_command) 00:04:00 verbose #5708 > > = 00:04:00 verbose #5709 > > !\\(dir, $'"std::process::Command::current_dir(!c, &*$0)"') 00:04:00 verbose #5710 > > 00:04:00 verbose #5711 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:00 verbose #5712 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:00 verbose #5713 > > │ ### process_command_env │ 00:04:00 verbose #5714 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:00 verbose #5715 > > 00:04:00 verbose #5716 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:00 verbose #5717 > > inl process_command_env 00:04:00 verbose #5718 > > (key : string) 00:04:00 verbose #5719 > > (value : string) 00:04:00 verbose #5720 > > (c : rust.ref (rust.mut' process_command)) 00:04:00 verbose #5721 > > : rust.ref (rust.mut' process_command) 00:04:00 verbose #5722 > > = 00:04:00 verbose #5723 > > !\\((key, value), $'"std::process::Command::env(!c, &*$0, &*$1)"') 00:04:00 verbose #5724 > > 00:04:00 verbose #5725 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:00 verbose #5726 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:00 verbose #5727 > > │ ### process_command_spawn │ 00:04:00 verbose #5728 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:00 verbose #5729 > > 00:04:00 verbose #5730 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:00 verbose #5731 > > inl process_command_spawn 00:04:00 verbose #5732 > > (c : rust.ref (rust.mut' process_command)) 00:04:00 verbose #5733 > > : resultm.result' process_child stream.io_error 00:04:00 verbose #5734 > > = 00:04:00 verbose #5735 > > !\\(c, $'"std::process::Command::spawn($0)"') 00:04:00 verbose #5736 > > 00:04:00 verbose #5737 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:00 verbose #5738 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:00 verbose #5739 > > │ ### child_wait_with_output │ 00:04:00 verbose #5740 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:00 verbose #5741 > > 00:04:00 verbose #5742 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:00 verbose #5743 > > inl child_wait_with_output 00:04:00 verbose #5744 > > (child : process_child) 00:04:00 verbose #5745 > > : resultm.result' process_output stream.io_error 00:04:00 verbose #5746 > > = 00:04:00 verbose #5747 > > !\\(child, $'"$0.wait_with_output()"') 00:04:00 verbose #5748 > > 00:04:00 verbose #5749 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:00 verbose #5750 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:00 verbose #5751 > > │ ### stdio_line │ 00:04:00 verbose #5752 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:00 verbose #5753 > > 00:04:00 verbose #5754 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:00 verbose #5755 > > inl stdio_line 00:04:00 verbose #5756 > > (stdio : result () ()) 00:04:00 verbose #5757 > > (trace' : bool) 00:04:00 verbose #5758 > > (channel_sender : threading.arc (threading.mutex (threading.channel_sender 00:04:00 verbose #5759 > > sm'.std_string))) 00:04:00 verbose #5760 > > (line : resultm.result' sm'.std_string stream.io_error) 00:04:00 verbose #5761 > > : resultm.result' () sm'.std_string 00:04:00 verbose #5762 > > = 00:04:00 verbose #5763 > > inl highlight text = 00:04:00 verbose #5764 > > $'$"\\u001b[[4;7m{!text}\\u001b[[0m"' 00:04:00 verbose #5765 > > inl line = 00:04:00 verbose #5766 > > match 00:04:00 verbose #5767 > > line 00:04:00 verbose #5768 > > |> resultm.map_error' sm'.format' 00:04:00 verbose #5769 > > |> resultm.unbox' 00:04:00 verbose #5770 > > with 00:04:00 verbose #5771 > > | Ok line => 00:04:00 verbose #5772 > > inl line = 00:04:00 verbose #5773 > > line 00:04:00 verbose #5774 > > |> sm'.from_std_string 00:04:00 verbose #5775 > > // |> sm'.as_bytes 00:04:00 verbose #5776 > > // |> am'.slice_to_vec 00:04:00 verbose #5777 > > |> sm'.encoding_encode' (sm'.encoding_utf8' ()) 00:04:00 verbose #5778 > > |> rust.cow_as_ref 00:04:00 verbose #5779 > > |> sm'.str_from_utf8 00:04:00 verbose #5780 > > // |> sm'.utf8_decode 00:04:00 verbose #5781 > > |> resultm.unwrap' 00:04:00 verbose #5782 > > |> sm'.ref_to_std_string 00:04:00 verbose #5783 > > // String::from_utf8_lossy(line.as_bytes()).into() 00:04:00 verbose #5784 > > inl line_log = line |> sm'.from_std_string 00:04:00 verbose #5785 > > inl text = 00:04:00 verbose #5786 > > match stdio with 00:04:00 verbose #5787 > > | Ok () => $'$"> {!line_log}"' 00:04:00 verbose #5788 > > | Error () => $'$"\! {!line_log}"' 00:04:00 verbose #5789 > > if trace' 00:04:00 verbose #5790 > > then trace Verbose (fun () => text) id 00:04:00 verbose #5791 > > else text |> console.write_line 00:04:00 verbose #5792 > > match stdio with 00:04:00 verbose #5793 > > | Ok () => line 00:04:00 verbose #5794 > > | Error () => line |> highlight |> sm'.to_std_string 00:04:00 verbose #5795 > > | Error e => 00:04:00 verbose #5796 > > trace Critical 00:04:00 verbose #5797 > > fun () => $'$"runtime.stdio_line"' 00:04:00 verbose #5798 > > fun () => { e } 00:04:00 verbose #5799 > > e |> highlight |> sm'.to_std_string 00:04:00 verbose #5800 > > channel_sender 00:04:00 verbose #5801 > > |> threading.arc_mutex_lock 00:04:00 verbose #5802 > > |> resultm.unwrap' 00:04:00 verbose #5803 > > |> threading.mutex_guard_ref 00:04:00 verbose #5804 > > |> threading.channel_send line 00:04:00 verbose #5805 > > |> resultm.map_error' sm'.format' 00:04:00 verbose #5806 > > 00:04:00 verbose #5807 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:00 verbose #5808 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:00 verbose #5809 > > │ ### command │ 00:04:00 verbose #5810 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:00 verbose #5811 > > 00:04:00 verbose #5812 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:00 verbose #5813 > > nominal command = 00:04:00 verbose #5814 > > `( 00:04:00 verbose #5815 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:00 verbose #5816 > > Fable.Core.Emit(\"clap::Command\")>]]\n#endif\ntype clap_Command = class end" 00:04:00 verbose #5817 > > $'' : $'clap_Command' 00:04:00 verbose #5818 > > ) 00:04:01 verbose #5819 > > 00:04:01 verbose #5820 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:01 verbose #5821 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:01 verbose #5822 > > │ ### new_command │ 00:04:01 verbose #5823 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:01 verbose #5824 > > 00:04:01 verbose #5825 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:01 verbose #5826 > > inl new_command (s : rust.static_ref sm'.str) : command = 00:04:01 verbose #5827 > > !\\(s, $'"clap::Command::new($0)"') 00:04:01 verbose #5828 > > 00:04:01 verbose #5829 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:01 verbose #5830 > > //// test 00:04:01 verbose #5831 > > ///! rust -d clap 00:04:01 verbose #5832 > > 00:04:01 verbose #5833 > > ##"command" 00:04:01 verbose #5834 > > |> new_command 00:04:01 verbose #5835 > > |> sm'.format_pretty 00:04:01 verbose #5836 > > |> _assert_string_contains "\"command\"" 00:04:08 verbose #5837 > > 00:04:08 verbose #5838 > > ╭─[ 7.03s - return value ]─────────────────────────────────────────────────────╮ 00:04:08 verbose #5839 > > │ __assert_string_contains / actual: ""command"" / expected: "Command { │ 00:04:08 verbose #5840 > > │ name: "command", │ 00:04:08 verbose #5841 > > │ long_flag: None, │ 00:04:08 verbose #5842 > > │ short_flag: None, │ 00:04:08 verbose #5843 > > │ display_name: None, │ 00:04:08 verbose #5844 > > │ bin_name: None, │ 00:04:08 verbose #5845 > > │ author: None, │ 00:04:08 verbose #5846 > > │ version: None, │ 00:04:08 verbose #5847 > > │ long_version: None, │ 00:04:08 verbose #5848 > > │ about: None, │ 00:04:08 verbose #5849 > > │ long_about: None, │ 00:04:08 verbose #5850 > > │ before_help: None, │ 00:04:08 verbose #5851 > > │ before_long_help: None, │ 00:04:08 verbose #5852 > > │ after_help: None, │ 00:04:08 verbose #5853 > > │ after_long_help: None, │ 00:04:08 verbose #5854 > > │ aliases: [], │ 00:04:08 verbose #5855 > > │ short_flag_aliases: [], │ 00:04:08 verbose #5856 > > │ long_flag_aliases: [], │ 00:04:08 verbose #5857 > > │ usage_str: None, │ 00:04:08 verbose #5858 > > │ usage_name: None, │ 00:04:08 verbose #5859 > > │ help_str: None, │ 00:04:08 verbose #5860 > > │ disp_ord: None, │ 00:04:08 verbose #5861 > > │ template: None, │ 00:04:08 verbose #5862 > > │ settings: AppFlags( │ 00:04:08 verbose #5863 > > │ 0, │ 00:04:08 verbose #5864 > > │ ), │ 00:04:08 verbose #5865 > > │ g_settings: AppFlags( │ 00:04:08 verbose #5866 > > │ 0, │ 00:04:08 verbose #5867 > > │ ), │ 00:04:08 verbose #5868 > > │ args: MKeyMap { │ 00:04:08 verbose #5869 > > │ args: [], │ 00:04:08 verbose #5870 > > │ keys: [], │ 00:04:08 verbose #5871 > > │ }, │ 00:04:08 verbose #5872 > > │ subcommands: [], │ 00:04:08 verbose #5873 > > │ groups: [], │ 00:04:08 verbose #5874 > > │ current_help_heading: None, │ 00:04:08 verbose #5875 > > │ current_disp_ord: Some( │ 00:04:08 verbose #5876 > > │ 0, │ 00:04:08 verbose #5877 > > │ ), │ 00:04:08 verbose #5878 > > │ subcommand_value_name: None, │ 00:04:08 verbose #5879 > > │ subcommand_heading: None, │ 00:04:08 verbose #5880 > > │ external_value_parser: None, │ 00:04:08 verbose #5881 > > │ long_help_exists: false, │ 00:04:08 verbose #5882 > > │ deferred: None, │ 00:04:08 verbose #5883 > > │ app_ext: Extensions { │ 00:04:08 verbose #5884 > > │ extensions: FlatMap { │ 00:04:08 verbose #5885 > > │ keys: [], │ 00:04:08 verbose #5886 > > │ values: [], │ 00:04:08 verbose #5887 > > │ }, │ 00:04:08 verbose #5888 > > │ }, │ 00:04:08 verbose #5889 > > │ }" │ 00:04:08 verbose #5890 > > │ │ 00:04:08 verbose #5891 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:08 verbose #5892 > > 00:04:08 verbose #5893 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:08 verbose #5894 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:08 verbose #5895 > > │ ### arg │ 00:04:08 verbose #5896 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:08 verbose #5897 > > 00:04:08 verbose #5898 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:08 verbose #5899 > > nominal arg = 00:04:08 verbose #5900 > > `( 00:04:08 verbose #5901 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:08 verbose #5902 > > Fable.Core.Emit(\"clap::Arg\")>]]\n#endif\ntype clap_Arg = class end" 00:04:08 verbose #5903 > > $'' : $'clap_Arg' 00:04:08 verbose #5904 > > ) 00:04:08 verbose #5905 > > 00:04:08 verbose #5906 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:08 verbose #5907 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:08 verbose #5908 > > │ ### new_arg │ 00:04:08 verbose #5909 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:08 verbose #5910 > > 00:04:08 verbose #5911 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:08 verbose #5912 > > inl new_arg (s : rust.static_ref sm'.str) : arg = 00:04:08 verbose #5913 > > !\\(s, $'"clap::Arg::new($0)"') 00:04:08 verbose #5914 > > 00:04:08 verbose #5915 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:08 verbose #5916 > > //// test 00:04:08 verbose #5917 > > ///! rust -d clap 00:04:08 verbose #5918 > > 00:04:08 verbose #5919 > > ##"arg" 00:04:08 verbose #5920 > > |> new_arg 00:04:08 verbose #5921 > > |> sm'.format_pretty 00:04:08 verbose #5922 > > |> _assert_string_contains "\"arg\"" 00:04:15 verbose #5923 > > 00:04:15 verbose #5924 > > ╭─[ 6.94s - return value ]─────────────────────────────────────────────────────╮ 00:04:15 verbose #5925 > > │ __assert_string_contains / actual: ""arg"" / expected: "Arg { │ 00:04:15 verbose #5926 > > │ id: "arg", │ 00:04:15 verbose #5927 > > │ help: None, │ 00:04:15 verbose #5928 > > │ long_help: None, │ 00:04:15 verbose #5929 > > │ action: None, │ 00:04:15 verbose #5930 > > │ value_parser: None, │ 00:04:15 verbose #5931 > > │ blacklist: [], │ 00:04:15 verbose #5932 > > │ settings: ArgFlags( │ 00:04:15 verbose #5933 > > │ 0, │ 00:04:15 verbose #5934 > > │ ), │ 00:04:15 verbose #5935 > > │ overrides: [], │ 00:04:15 verbose #5936 > > │ groups: [], │ 00:04:15 verbose #5937 > > │ requires: [], │ 00:04:15 verbose #5938 > > │ r_ifs: [], │ 00:04:15 verbose #5939 > > │ r_unless: [], │ 00:04:15 verbose #5940 > > │ short: None, │ 00:04:15 verbose #5941 > > │ long: None, │ 00:04:15 verbose #5942 > > │ aliases: [], │ 00:04:15 verbose #5943 > > │ short_aliases: [], │ 00:04:15 verbose #5944 > > │ disp_ord: None, │ 00:04:15 verbose #5945 > > │ val_names: [], │ 00:04:15 verbose #5946 > > │ num_vals: None, │ 00:04:15 verbose #5947 > > │ val_delim: None, │ 00:04:15 verbose #5948 > > │ default_vals: [], │ 00:04:15 verbose #5949 > > │ default_vals_ifs: [], │ 00:04:15 verbose #5950 > > │ terminator: None, │ 00:04:15 verbose #5951 > > │ index: None, │ 00:04:15 verbose #5952 > > │ help_heading: None, │ 00:04:15 verbose #5953 > > │ default_missing_vals: [], │ 00:04:15 verbose #5954 > > │ ext: Extensions { │ 00:04:15 verbose #5955 > > │ extensions: FlatMap { │ 00:04:15 verbose #5956 > > │ keys: [], │ 00:04:15 verbose #5957 > > │ values: [], │ 00:04:15 verbose #5958 > > │ }, │ 00:04:15 verbose #5959 > > │ }, │ 00:04:15 verbose #5960 > > │ }" │ 00:04:15 verbose #5961 > > │ │ 00:04:15 verbose #5962 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:15 verbose #5963 > > 00:04:15 verbose #5964 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:15 verbose #5965 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:15 verbose #5966 > > │ ### command_arg │ 00:04:15 verbose #5967 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:15 verbose #5968 > > 00:04:15 verbose #5969 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:15 verbose #5970 > > inl command_arg (arg : arg) (command : command) : command = 00:04:15 verbose #5971 > > !\\((command, arg), $'"clap::Command::arg($0, $1)"') 00:04:15 verbose #5972 > > 00:04:15 verbose #5973 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:15 verbose #5974 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:15 verbose #5975 > > │ ### arg_required │ 00:04:15 verbose #5976 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:15 verbose #5977 > > 00:04:15 verbose #5978 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:15 verbose #5979 > > inl arg_required (value : bool) (arg : arg) : arg = 00:04:15 verbose #5980 > > !\\((arg, value), $'"$0.required($1)"') 00:04:15 verbose #5981 > > 00:04:15 verbose #5982 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:15 verbose #5983 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:15 verbose #5984 > > │ ### arg_require_equals │ 00:04:15 verbose #5985 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:15 verbose #5986 > > 00:04:15 verbose #5987 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:15 verbose #5988 > > inl arg_require_equals (value : bool) (arg : arg) : arg = 00:04:15 verbose #5989 > > !\\((arg, value), $'"$0.require_equals($1)"') 00:04:15 verbose #5990 > > 00:04:15 verbose #5991 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:15 verbose #5992 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:15 verbose #5993 > > │ ### arg_default_value │ 00:04:15 verbose #5994 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:15 verbose #5995 > > 00:04:15 verbose #5996 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:15 verbose #5997 > > inl arg_default_value (value : string) (arg : arg) : arg = 00:04:15 verbose #5998 > > inl value = #value 00:04:15 verbose #5999 > > !\\((arg, value), $'"$0.default_value($1)"') 00:04:15 verbose #6000 > > 00:04:15 verbose #6001 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:15 verbose #6002 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:15 verbose #6003 > > │ ### arg_default_missing_value │ 00:04:15 verbose #6004 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:15 verbose #6005 > > 00:04:15 verbose #6006 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:15 verbose #6007 > > inl arg_default_missing_value (value : string) (arg : arg) : arg = 00:04:15 verbose #6008 > > inl value = #value 00:04:15 verbose #6009 > > !\\((arg, value), $'"$0.default_missing_value($1)"') 00:04:15 verbose #6010 > > 00:04:15 verbose #6011 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:15 verbose #6012 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:15 verbose #6013 > > │ ### arg_overrides_with │ 00:04:15 verbose #6014 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:15 verbose #6015 > > 00:04:15 verbose #6016 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:15 verbose #6017 > > inl arg_overrides_with (value : string) (arg : arg) : arg = 00:04:15 verbose #6018 > > inl value = #value 00:04:15 verbose #6019 > > !\\((arg, value), $'"$0.overrides_with($1)"') 00:04:15 verbose #6020 > > 00:04:15 verbose #6021 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:15 verbose #6022 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:15 verbose #6023 > > │ ### arg_short │ 00:04:15 verbose #6024 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:15 verbose #6025 > > 00:04:15 verbose #6026 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:15 verbose #6027 > > inl arg_short (value : char) (arg : arg) : arg = 00:04:15 verbose #6028 > > !\\((arg, value), $'"$0.short($1)"') 00:04:16 verbose #6029 > > 00:04:16 verbose #6030 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:16 verbose #6031 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:16 verbose #6032 > > │ ### arg_long │ 00:04:16 verbose #6033 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:16 verbose #6034 > > 00:04:16 verbose #6035 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:16 verbose #6036 > > inl arg_long (value : rust.static_ref sm'.str) (arg : arg) : arg = 00:04:16 verbose #6037 > > !\\((arg, value), $'"$0.long($1)"') 00:04:16 verbose #6038 > > 00:04:16 verbose #6039 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:16 verbose #6040 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:16 verbose #6041 > > │ ### arg_value_names │ 00:04:16 verbose #6042 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:16 verbose #6043 > > 00:04:16 verbose #6044 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:16 verbose #6045 > > inl arg_value_names (values : array_base (rust.static_ref sm'.str)) (arg : arg) 00:04:16 verbose #6046 > > : arg = 00:04:16 verbose #6047 > > inl values = values |> am'.to_vec 00:04:16 verbose #6048 > > !\\((arg, values), $'"$0.value_names($1)"') 00:04:16 verbose #6049 > > 00:04:16 verbose #6050 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:16 verbose #6051 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:16 verbose #6052 > > │ ### arg_num_args │ 00:04:16 verbose #6053 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:16 verbose #6054 > > 00:04:16 verbose #6055 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:16 verbose #6056 > > inl arg_num_args (value : i32) (arg : arg) : arg = 00:04:16 verbose #6057 > > !\\((arg, value), $'"$0.num_args($1)"') 00:04:16 verbose #6058 > > 00:04:16 verbose #6059 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:16 verbose #6060 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:16 verbose #6061 > > │ ### value_range │ 00:04:16 verbose #6062 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:16 verbose #6063 > > 00:04:16 verbose #6064 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:16 verbose #6065 > > nominal value_range = 00:04:16 verbose #6066 > > `( 00:04:16 verbose #6067 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:16 verbose #6068 > > Fable.Core.Emit(\"clap::builder::ValueRange\")>]]\n#endif\ntype 00:04:16 verbose #6069 > > clap_builder_ValueRange = class end" 00:04:16 verbose #6070 > > $'' : $'clap_builder_ValueRange' 00:04:16 verbose #6071 > > ) 00:04:16 verbose #6072 > > 00:04:16 verbose #6073 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:16 verbose #6074 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:16 verbose #6075 > > │ ### new_value_range │ 00:04:16 verbose #6076 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:16 verbose #6077 > > 00:04:16 verbose #6078 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:16 verbose #6079 > > inl new_value_range inclusive start end : value_range = 00:04:16 verbose #6080 > > inl len = 0i32 |> convert 00:04:16 verbose #6081 > > inl start, end = 00:04:16 verbose #6082 > > open am' 00:04:16 verbose #6083 > > match start, end with 00:04:16 verbose #6084 > > | Start start, End fn => 00:04:16 verbose #6085 > > start, len |> fn 00:04:16 verbose #6086 > > | End start_fn, End end_fn => 00:04:16 verbose #6087 > > start_fn len, end_fn len 00:04:16 verbose #6088 > > inl inclusive = 00:04:16 verbose #6089 > > if inclusive 00:04:16 verbose #6090 > > then "=" 00:04:16 verbose #6091 > > else "" 00:04:16 verbose #6092 > > match start, end with 00:04:16 verbose #6093 > > | start, end when end =. len => !\\(start, 00:04:16 verbose #6094 > > $'"clap::builder::ValueRange::new($0..)"') 00:04:16 verbose #6095 > > | start, end => !\\((start, end), $'"clap::builder::ValueRange::new($0.." + 00:04:16 verbose #6096 > > !inclusive + "$1)"') 00:04:16 verbose #6097 > > 00:04:16 verbose #6098 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:16 verbose #6099 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:16 verbose #6100 > > │ ### arg_num_args_range │ 00:04:16 verbose #6101 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:16 verbose #6102 > > 00:04:16 verbose #6103 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:16 verbose #6104 > > inl arg_num_args_range (value : value_range) (arg : arg) : arg = 00:04:16 verbose #6105 > > !\\((arg, value), $'"$0.num_args($1)"') 00:04:16 verbose #6106 > > 00:04:16 verbose #6107 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:16 verbose #6108 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:16 verbose #6109 > > │ ### arg_value_name │ 00:04:16 verbose #6110 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:16 verbose #6111 > > 00:04:16 verbose #6112 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:16 verbose #6113 > > inl arg_value_name (value : string) (arg : arg) : arg = 00:04:16 verbose #6114 > > inl value = value |> sm'.as_str 00:04:16 verbose #6115 > > !\\((arg, value), $'"$0.value_name($1)"') 00:04:16 verbose #6116 > > 00:04:16 verbose #6117 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:16 verbose #6118 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:16 verbose #6119 > > │ ### value_parser │ 00:04:16 verbose #6120 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:16 verbose #6121 > > 00:04:16 verbose #6122 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:16 verbose #6123 > > nominal value_parser = 00:04:16 verbose #6124 > > `( 00:04:16 verbose #6125 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:16 verbose #6126 > > Fable.Core.Emit(\"clap::builder::ValueParser\")>]]\n#endif\ntype 00:04:16 verbose #6127 > > clap_builder_ValueParser = class end" 00:04:16 verbose #6128 > > $'' : $'clap_builder_ValueParser' 00:04:16 verbose #6129 > > ) 00:04:16 verbose #6130 > > 00:04:16 verbose #6131 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:16 verbose #6132 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:16 verbose #6133 > > │ ### possible_value │ 00:04:16 verbose #6134 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:16 verbose #6135 > > 00:04:16 verbose #6136 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:16 verbose #6137 > > nominal possible_value = 00:04:16 verbose #6138 > > `( 00:04:16 verbose #6139 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:16 verbose #6140 > > Fable.Core.Emit(\"clap::builder::PossibleValue\")>]]\n#endif\ntype 00:04:16 verbose #6141 > > clap_builder_PossibleValue = class end" 00:04:16 verbose #6142 > > $'' : $'clap_builder_PossibleValue' 00:04:16 verbose #6143 > > ) 00:04:16 verbose #6144 > > 00:04:16 verbose #6145 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:16 verbose #6146 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:16 verbose #6147 > > │ ### new_possible_value │ 00:04:16 verbose #6148 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:16 verbose #6149 > > 00:04:16 verbose #6150 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:16 verbose #6151 > > inl new_possible_value forall t. (x : t) : possible_value = 00:04:16 verbose #6152 > > !\\(x, $'"clap::builder::PossibleValue::new(&**$0)"') 00:04:16 verbose #6153 > > 00:04:16 verbose #6154 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:16 verbose #6155 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:16 verbose #6156 > > │ ### value_parser_path_buf │ 00:04:16 verbose #6157 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:16 verbose #6158 > > 00:04:16 verbose #6159 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:16 verbose #6160 > > inl value_parser_path_buf () : value_parser = 00:04:16 verbose #6161 > > !\($'"clap::value_parser\!(std::path::PathBuf)"') 00:04:17 verbose #6162 > > 00:04:17 verbose #6163 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:17 verbose #6164 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:17 verbose #6165 > > │ ### value_parser_expr │ 00:04:17 verbose #6166 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:17 verbose #6167 > > 00:04:17 verbose #6168 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:17 verbose #6169 > > inl value_parser_expr (expr : string) : value_parser = 00:04:17 verbose #6170 > > !\($'"clap::value_parser\!(" + !expr + ").into()"') 00:04:17 verbose #6171 > > 00:04:17 verbose #6172 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:17 verbose #6173 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:17 verbose #6174 > > │ ### arg_value_parser │ 00:04:17 verbose #6175 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:17 verbose #6176 > > 00:04:17 verbose #6177 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:17 verbose #6178 > > inl arg_value_parser (values : value_parser) (arg : arg) : arg = 00:04:17 verbose #6179 > > !\\((arg, values), $'"$0.value_parser($1)"') 00:04:17 verbose #6180 > > 00:04:17 verbose #6181 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:17 verbose #6182 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:17 verbose #6183 > > │ ### arg_action │ 00:04:17 verbose #6184 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:17 verbose #6185 > > 00:04:17 verbose #6186 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:17 verbose #6187 > > nominal arg_action' = 00:04:17 verbose #6188 > > `( 00:04:17 verbose #6189 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:17 verbose #6190 > > Fable.Core.Emit(\"clap::ArgAction\")>]]\n#endif\ntype clap_ArgAction = class 00:04:17 verbose #6191 > > end" 00:04:17 verbose #6192 > > $'' : $'clap_ArgAction' 00:04:17 verbose #6193 > > ) 00:04:17 verbose #6194 > > 00:04:17 verbose #6195 > > union arg_action = 00:04:17 verbose #6196 > > | Set 00:04:17 verbose #6197 > > | Append 00:04:17 verbose #6198 > > | SetTrue 00:04:17 verbose #6199 > > | SetFalse 00:04:17 verbose #6200 > > | Count 00:04:17 verbose #6201 > > | Help 00:04:17 verbose #6202 > > | HelpShort 00:04:17 verbose #6203 > > | HelpLong 00:04:17 verbose #6204 > > | Version 00:04:17 verbose #6205 > > 00:04:17 verbose #6206 > > inl arg_action = function 00:04:17 verbose #6207 > > | Set => !\($'"clap::ArgAction::Set"') : arg_action' 00:04:17 verbose #6208 > > | Append => !\($'"clap::ArgAction::Append"') : arg_action' 00:04:17 verbose #6209 > > | SetTrue => !\($'"clap::ArgAction::SetTrue"') : arg_action' 00:04:17 verbose #6210 > > | SetFalse => !\($'"clap::ArgAction::SetFalse"') : arg_action' 00:04:17 verbose #6211 > > | Count => !\($'"clap::ArgAction::Count"') : arg_action' 00:04:17 verbose #6212 > > | Help => !\($'"clap::ArgAction::Help"') : arg_action' 00:04:17 verbose #6213 > > | HelpShort => !\($'"clap::ArgAction::HelpShort"') : arg_action' 00:04:17 verbose #6214 > > | HelpLong => !\($'"clap::ArgAction::HelpLong"') : arg_action' 00:04:17 verbose #6215 > > | Version => !\($'"clap::ArgAction::Version"') : arg_action' 00:04:17 verbose #6216 > > 00:04:17 verbose #6217 > > inl arg_action (value : arg_action) (arg : arg) : arg = 00:04:17 verbose #6218 > > inl value = value |> arg_action 00:04:17 verbose #6219 > > !\\((arg, value), $'"$0.action($1)"') 00:04:17 verbose #6220 > > 00:04:17 verbose #6221 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:17 verbose #6222 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:17 verbose #6223 > > │ ### arg_index │ 00:04:17 verbose #6224 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:17 verbose #6225 > > 00:04:17 verbose #6226 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:17 verbose #6227 > > inl arg_index (value : i32) (arg : arg) : arg = 00:04:17 verbose #6228 > > !\\((arg, value), $'"$0.index($1)"') 00:04:17 verbose #6229 > > 00:04:17 verbose #6230 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:17 verbose #6231 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:17 verbose #6232 > > │ ### arg_matches │ 00:04:17 verbose #6233 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:17 verbose #6234 > > 00:04:17 verbose #6235 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:17 verbose #6236 > > nominal arg_matches = 00:04:17 verbose #6237 > > `( 00:04:17 verbose #6238 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:17 verbose #6239 > > Fable.Core.Emit(\"clap::ArgMatches\")>]]\n#endif\ntype clap_ArgMatches = class 00:04:17 verbose #6240 > > end" 00:04:17 verbose #6241 > > $'' : $'clap_ArgMatches' 00:04:17 verbose #6242 > > ) 00:04:17 verbose #6243 > > 00:04:17 verbose #6244 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:17 verbose #6245 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:17 verbose #6246 > > │ ### command_get_matches │ 00:04:17 verbose #6247 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:17 verbose #6248 > > 00:04:17 verbose #6249 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:17 verbose #6250 > > inl command_get_matches (command : command) : arg_matches = 00:04:17 verbose #6251 > > !\\(command, $'"clap::Command::get_matches($0)"') 00:04:18 verbose #6252 > > 00:04:18 verbose #6253 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:18 verbose #6254 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:18 verbose #6255 > > │ ### command_get_matches_from │ 00:04:18 verbose #6256 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:18 verbose #6257 > > 00:04:18 verbose #6258 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:18 verbose #6259 > > inl command_get_matches_from (args : array_base string) (command : command) : 00:04:18 verbose #6260 > > arg_matches = 00:04:18 verbose #6261 > > inl args = args |> am'.to_vec |> am'.vec_map sm'.to_std_string 00:04:18 verbose #6262 > > !\\(command, $'"clap::Command::get_matches_from($0, !args)"') 00:04:18 verbose #6263 > > 00:04:18 verbose #6264 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:18 verbose #6265 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:18 verbose #6266 > > │ ### command_args_override_self │ 00:04:18 verbose #6267 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:18 verbose #6268 > > 00:04:18 verbose #6269 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:18 verbose #6270 > > inl command_args_override_self (yes : bool) (command : command) : command = 00:04:18 verbose #6271 > > !\\(command, $'"clap::Command::args_override_self($0, !yes)"') 00:04:18 verbose #6272 > > 00:04:18 verbose #6273 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:18 verbose #6274 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:18 verbose #6275 > > │ ### command_init_arg │ 00:04:18 verbose #6276 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:18 verbose #6277 > > 00:04:18 verbose #6278 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:18 verbose #6279 > > inl command_init_arg (long, short) fn command = 00:04:18 verbose #6280 > > command 00:04:18 verbose #6281 > > |> command_arg ( 00:04:18 verbose #6282 > > new_arg ##long 00:04:18 verbose #6283 > > |> arg_short short 00:04:18 verbose #6284 > > |> arg_long ##long 00:04:18 verbose #6285 > > |> fn 00:04:18 verbose #6286 > > ) 00:04:18 verbose #6287 > > 00:04:18 verbose #6288 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:18 verbose #6289 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:18 verbose #6290 > > │ ### matches_get_one │ 00:04:18 verbose #6291 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:18 verbose #6292 > > 00:04:18 verbose #6293 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:18 verbose #6294 > > inl matches_get_one forall t. (x : string) (matches : arg_matches) : 00:04:18 verbose #6295 > > optionm'.option' t = 00:04:18 verbose #6296 > > inl x = join x 00:04:18 verbose #6297 > > inl x = x |> sm'.as_str 00:04:18 verbose #6298 > > !\\(matches, $'"clap::ArgMatches::get_one(&$0, !x).cloned()"') 00:04:18 verbose #6299 > > 00:04:18 verbose #6300 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:18 verbose #6301 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:18 verbose #6302 > > │ ### matches_get_flag │ 00:04:18 verbose #6303 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:18 verbose #6304 > > 00:04:18 verbose #6305 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:18 verbose #6306 > > inl matches_get_flag (x : string) (matches : arg_matches) : bool = 00:04:18 verbose #6307 > > inl x = join x 00:04:18 verbose #6308 > > inl x = x |> sm'.as_str 00:04:18 verbose #6309 > > !\($'"clap::ArgMatches::get_flag(&!matches, !x)"') 00:04:18 verbose #6310 > > 00:04:18 verbose #6311 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:18 verbose #6312 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:18 verbose #6313 > > │ ### matches_get_many │ 00:04:18 verbose #6314 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:18 verbose #6315 > > 00:04:18 verbose #6316 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:18 verbose #6317 > > inl matches_get_many forall t. (x : string) (matches : arg_matches) : 00:04:18 verbose #6318 > > optionm'.option' (am'.vec t) = 00:04:18 verbose #6319 > > inl x = join x 00:04:18 verbose #6320 > > inl x = x |> sm'.as_str 00:04:18 verbose #6321 > > !\\(matches, $'"clap::ArgMatches::get_many(&$0, !x).map(|x| 00:04:18 verbose #6322 > > x.cloned().into_iter().collect())"') 00:04:18 verbose #6323 > > 00:04:18 verbose #6324 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:18 verbose #6325 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:18 verbose #6326 > > │ ### matches_get_occurrences │ 00:04:18 verbose #6327 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:18 verbose #6328 > > 00:04:18 verbose #6329 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:18 verbose #6330 > > inl matches_get_occurrences (x : string) (matches : arg_matches) : 00:04:18 verbose #6331 > > optionm'.option' (array_base sm'.std_string) = 00:04:18 verbose #6332 > > inl x = join x 00:04:18 verbose #6333 > > inl x = x |> sm'.as_str 00:04:18 verbose #6334 > > !\($'"clap::ArgMatches::get_occurrences(&!matches, !x).cloned()"') 00:04:18 verbose #6335 > > 00:04:18 verbose #6336 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:18 verbose #6337 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:18 verbose #6338 > > │ ### matches_subcommand │ 00:04:18 verbose #6339 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:18 verbose #6340 > > 00:04:18 verbose #6341 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:18 verbose #6342 > > inl matches_subcommand (matches : arg_matches) : optionm'.option' 00:04:18 verbose #6343 > > (sm'.std_string * arg_matches) = 00:04:18 verbose #6344 > > !\\((matches, sm'.ref_to_std_string), 00:04:18 verbose #6345 > > $'"clap::ArgMatches::subcommand(Box::leak(Box::new($0))).map(|(a, b)| ($1(a), 00:04:18 verbose #6346 > > b.clone()))"') 00:04:18 verbose #6347 > > 00:04:18 verbose #6348 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:18 verbose #6349 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:18 verbose #6350 > > │ ### matches_values_of │ 00:04:18 verbose #6351 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:18 verbose #6352 > > 00:04:18 verbose #6353 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:18 verbose #6354 > > inl matches_values_of (x : string) (matches : arg_matches) : array_base 00:04:18 verbose #6355 > > sm'.std_string = 00:04:18 verbose #6356 > > !\\((matches, x), $'"clap::ArgMatches::values_of($0, &*$1)"') 00:04:19 verbose #6357 > > 00:04:19 verbose #6358 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:19 verbose #6359 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:19 verbose #6360 > > │ ### command_subcommand_required │ 00:04:19 verbose #6361 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:19 verbose #6362 > > 00:04:19 verbose #6363 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:19 verbose #6364 > > inl command_subcommand_required (value : bool) (command : command) : command = 00:04:19 verbose #6365 > > !\\(command, $'"clap::Command::subcommand_required($0, !value)"') 00:04:19 verbose #6366 > > 00:04:19 verbose #6367 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:19 verbose #6368 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:19 verbose #6369 > > │ ### command_subcommand │ 00:04:19 verbose #6370 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:19 verbose #6371 > > 00:04:19 verbose #6372 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:19 verbose #6373 > > inl command_subcommand (subcommand : command) (command : command) : command = 00:04:19 verbose #6374 > > !\\(command, $'"clap::Command::subcommand($0, !subcommand)"') 00:04:19 verbose #6375 > > 00:04:19 verbose #6376 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:19 verbose #6377 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:19 verbose #6378 > > │ ### value_parser_possible_values │ 00:04:19 verbose #6379 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:19 verbose #6380 > > 00:04:19 verbose #6381 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:19 verbose #6382 > > inl value_parser_possible_values (values : array_base string) : value_parser = 00:04:19 verbose #6383 > > inl values = 00:04:19 verbose #6384 > > values 00:04:19 verbose #6385 > > |> am'.to_vec 00:04:19 verbose #6386 > > |> am'.vec_map (sm'.to_std_string >> rust.new_box >> rust.box_leak >> 00:04:19 verbose #6387 > > new_possible_value) 00:04:19 verbose #6388 > > !\\(values, 00:04:19 verbose #6389 > > $'"Into::<clap::builder::ValueParser>::into(clap::builder::PossibleValuesParser: 00:04:19 verbose #6390 > > :new($0))"') 00:04:19 verbose #6391 > > 00:04:19 verbose #6392 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:19 verbose #6393 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:19 verbose #6394 > > │ ### arg_union │ 00:04:19 verbose #6395 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:19 verbose #6396 > > 00:04:19 verbose #6397 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:19 verbose #6398 > > inl arg_union forall union_type. (fn : union_type -> ()) (arg : arg) : arg = 00:04:19 verbose #6399 > > arg 00:04:19 verbose #6400 > > |> arg_value_parser ( 00:04:19 verbose #6401 > > real reflection.get_union_fields_untag `union_type () 00:04:19 verbose #6402 > > |> fun x => x : _ (string * union_type) 00:04:19 verbose #6403 > > |> listm.map fst 00:04:19 verbose #6404 > > |> listm'.box 00:04:19 verbose #6405 > > |> listm'.to_array' 00:04:19 verbose #6406 > > |> value_parser_possible_values 00:04:19 verbose #6407 > > ) 00:04:19 verbose #6408 > > 00:04:19 verbose #6409 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:19 verbose #6410 > > //// test 00:04:19 verbose #6411 > > ///! rust -d clap 00:04:19 verbose #6412 > > 00:04:19 verbose #6413 > > ##"command" 00:04:19 verbose #6414 > > |> new_command 00:04:19 verbose #6415 > > |> command_init_arg ("trace-level", 't') ( 00:04:19 verbose #6416 > > real arg_union `trace_level ignore 00:04:19 verbose #6417 > > ) 00:04:19 verbose #6418 > > |> command_get_matches_from ;[[ "_"; "--trace-level"; "Critical" ]] 00:04:19 verbose #6419 > > |> matches_get_one "trace-level" 00:04:19 verbose #6420 > > |> optionm'.unwrap 00:04:19 verbose #6421 > > |> sm'.from_std_string 00:04:19 verbose #6422 > > |> reflection.union_try_pick 00:04:19 verbose #6423 > > |> optionm.value 00:04:19 verbose #6424 > > |> _assert_eq Critical 00:04:26 verbose #6425 > > 00:04:26 verbose #6426 > > ╭─[ 7.36s - return value ]─────────────────────────────────────────────────────╮ 00:04:26 verbose #6427 > > │ __assert_eq / actual: US1_4 / expected: US1_4 │ 00:04:26 verbose #6428 > > │ │ 00:04:26 verbose #6429 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:26 verbose #6430 > > 00:04:26 verbose #6431 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:26 verbose #6432 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:26 verbose #6433 > > │ ### command_debug_assert │ 00:04:26 verbose #6434 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:26 verbose #6435 > > 00:04:26 verbose #6436 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:26 verbose #6437 > > inl command_debug_assert (command : command) : () = 00:04:26 verbose #6438 > > !\\(command, $'"clap::Command::debug_assert($0)"') 00:04:26 verbose #6439 > > 00:04:26 verbose #6440 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:26 verbose #6441 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:26 verbose #6442 > > │ ## fsharp │ 00:04:26 verbose #6443 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:26 verbose #6444 > > 00:04:26 verbose #6445 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:26 verbose #6446 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:26 verbose #6447 > > │ ### process │ 00:04:26 verbose #6448 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:26 verbose #6449 > > 00:04:26 verbose #6450 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:26 verbose #6451 > > nominal process = $'System.Diagnostics.Process' 00:04:27 verbose #6452 > > 00:04:27 verbose #6453 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:27 verbose #6454 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:27 verbose #6455 > > │ ### process_start_info │ 00:04:27 verbose #6456 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:27 verbose #6457 > > 00:04:27 verbose #6458 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:27 verbose #6459 > > nominal process_start_info = $'System.Diagnostics.ProcessStartInfo' 00:04:27 verbose #6460 > > 00:04:27 verbose #6461 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:27 verbose #6462 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:27 verbose #6463 > > │ ### data_received_event_args │ 00:04:27 verbose #6464 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:27 verbose #6465 > > 00:04:27 verbose #6466 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:27 verbose #6467 > > nominal data_received_event_args = $'System.Diagnostics.DataReceivedEventArgs' 00:04:27 verbose #6468 > > 00:04:27 verbose #6469 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:27 verbose #6470 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:27 verbose #6471 > > │ ### new_process │ 00:04:27 verbose #6472 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:27 verbose #6473 > > 00:04:27 verbose #6474 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:27 verbose #6475 > > inl new_process (process_start_info : process_start_info) : process = 00:04:27 verbose #6476 > > $'new `process (StartInfo = !process_start_info)' 00:04:27 verbose #6477 > > 00:04:27 verbose #6478 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:27 verbose #6479 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:27 verbose #6480 > > │ ### process_start │ 00:04:27 verbose #6481 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:27 verbose #6482 > > 00:04:27 verbose #6483 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:27 verbose #6484 > > inl process_start (process : process) : bool = 00:04:27 verbose #6485 > > $'!process.Start' () 00:04:27 verbose #6486 > > 00:04:27 verbose #6487 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:27 verbose #6488 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:27 verbose #6489 > > │ ### process_exit_code │ 00:04:27 verbose #6490 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:27 verbose #6491 > > 00:04:27 verbose #6492 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:27 verbose #6493 > > inl process_exit_code (process : process) : i32 = 00:04:27 verbose #6494 > > $'!process.ExitCode' 00:04:27 verbose #6495 > > 00:04:27 verbose #6496 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:27 verbose #6497 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:27 verbose #6498 > > │ ### process_id │ 00:04:27 verbose #6499 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:27 verbose #6500 > > 00:04:27 verbose #6501 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:27 verbose #6502 > > inl process_id (process : process) : i32 = 00:04:27 verbose #6503 > > $'!process.Id' 00:04:27 verbose #6504 > > 00:04:27 verbose #6505 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:27 verbose #6506 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:27 verbose #6507 > > │ ### process_has_exited │ 00:04:27 verbose #6508 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:27 verbose #6509 > > 00:04:27 verbose #6510 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:27 verbose #6511 > > inl process_has_exited (process : process) : bool = 00:04:27 verbose #6512 > > run_target function 00:04:27 verbose #6513 > > | Fsharp (Native) => fun () => 00:04:27 verbose #6514 > > $'!process.HasExited' 00:04:27 verbose #6515 > > | _ => fun () => null () 00:04:27 verbose #6516 > > 00:04:27 verbose #6517 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:27 verbose #6518 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:27 verbose #6519 > > │ ### process_kill │ 00:04:27 verbose #6520 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:27 verbose #6521 > > 00:04:27 verbose #6522 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:27 verbose #6523 > > inl process_kill (process : process) : () = 00:04:27 verbose #6524 > > run_target function 00:04:27 verbose #6525 > > | Fsharp (Native) => fun () => 00:04:27 verbose #6526 > > $'!process.Kill' () 00:04:27 verbose #6527 > > | _ => fun () => () 00:04:27 verbose #6528 > > 00:04:27 verbose #6529 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:27 verbose #6530 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:27 verbose #6531 > > │ ### process_begin_error_read_line │ 00:04:27 verbose #6532 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:27 verbose #6533 > > 00:04:27 verbose #6534 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:27 verbose #6535 > > inl process_begin_error_read_line (process : process) : () = 00:04:27 verbose #6536 > > $'!process.BeginErrorReadLine' () 00:04:28 verbose #6537 > > 00:04:28 verbose #6538 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:28 verbose #6539 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:28 verbose #6540 > > │ ### process_begin_output_read_line │ 00:04:28 verbose #6541 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:28 verbose #6542 > > 00:04:28 verbose #6543 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:28 verbose #6544 > > inl process_begin_output_read_line (process : process) : () = 00:04:28 verbose #6545 > > $'!process.BeginOutputReadLine' () 00:04:28 verbose #6546 > > 00:04:28 verbose #6547 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:28 verbose #6548 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:28 verbose #6549 > > │ ### process_add_output_data_received │ 00:04:28 verbose #6550 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:28 verbose #6551 > > 00:04:28 verbose #6552 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:28 verbose #6553 > > inl process_add_output_data_received fn (process : process) : () = 00:04:28 verbose #6554 > > $'!process.OutputDataReceived.Add !fn ' 00:04:28 verbose #6555 > > 00:04:28 verbose #6556 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:28 verbose #6557 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:28 verbose #6558 > > │ ### process_add_error_data_received │ 00:04:28 verbose #6559 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:28 verbose #6560 > > 00:04:28 verbose #6561 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:28 verbose #6562 > > inl process_add_error_data_received fn (process : process) : () = 00:04:28 verbose #6563 > > $'!process.ErrorDataReceived.Add !fn ' 00:04:28 verbose #6564 > > 00:04:28 verbose #6565 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:28 verbose #6566 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:28 verbose #6567 > > │ ### process_wait_for_exit_async │ 00:04:28 verbose #6568 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:28 verbose #6569 > > 00:04:28 verbose #6570 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:28 verbose #6571 > > inl process_wait_for_exit_async (ct : threading.cancellation_token) (process : 00:04:28 verbose #6572 > > process) : async.task () = 00:04:28 verbose #6573 > > $'!process.WaitForExitAsync !ct ' 00:04:28 verbose #6574 > > 00:04:28 verbose #6575 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:28 verbose #6576 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:28 verbose #6577 > > │ ### event_data │ 00:04:28 verbose #6578 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:28 verbose #6579 > > 00:04:28 verbose #6580 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:28 verbose #6581 > > inl event_data (e : data_received_event_args) : string = 00:04:28 verbose #6582 > > $'!e.Data' 00:04:28 verbose #6583 > > 00:04:28 verbose #6584 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:28 verbose #6585 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:28 verbose #6586 > > │ ### execute_with_options_async │ 00:04:28 verbose #6587 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:28 verbose #6588 > > 00:04:28 verbose #6589 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:28 verbose #6590 > > let execute_with_options_async (options : execution_options) : _ (i32 * string) 00:04:28 verbose #6591 > > = 00:04:28 verbose #6592 > > run_target function 00:04:28 verbose #6593 > > | Fsharp (Native) => fun () => 00:04:28 verbose #6594 > > fun () => 00:04:28 verbose #6595 > > inl file_name, arguments = options.command |> split_command |> 00:04:28 verbose #6596 > > resultm.get 00:04:28 verbose #6597 > > inl working_directory = options.working_directory |> 00:04:28 verbose #6598 > > optionm'.unbox |> optionm'.default_value "" 00:04:28 verbose #6599 > > 00:04:28 verbose #6600 > > trace Debug 00:04:28 verbose #6601 > > fun () => $'$"runtime.execute_with_options_async"' 00:04:28 verbose #6602 > > fun () => { options } 00:04:28 verbose #6603 > > 00:04:28 verbose #6604 > > inl utf8 = sm'.encoding_utf8 () 00:04:28 verbose #6605 > > inl arguments = arguments |> optionm'.default_value "" 00:04:28 verbose #6606 > > 00:04:28 verbose #6607 > > $'let start_info = System.Diagnostics.ProcessStartInfo (' 00:04:28 verbose #6608 > > $' Arguments = !arguments,' 00:04:28 verbose #6609 > > $' StandardOutputEncoding = !utf8,' 00:04:28 verbose #6610 > > $' WorkingDirectory = !working_directory,' 00:04:28 verbose #6611 > > $' FileName = !file_name,' 00:04:28 verbose #6612 > > $' CreateNoWindow = true,' 00:04:28 verbose #6613 > > $' RedirectStandardError = true,' 00:04:28 verbose #6614 > > $' RedirectStandardOutput = true,' 00:04:28 verbose #6615 > > $' UseShellExecute = false' 00:04:28 verbose #6616 > > $')' 00:04:28 verbose #6617 > > inl start_info : process_start_info = $'start_info' 00:04:28 verbose #6618 > > 00:04:28 verbose #6619 > > (a options.environment_variables : _ i32 _) 00:04:28 verbose #6620 > > |> am.iter fun key, value => 00:04:28 verbose #6621 > > $'!start_info.EnvironmentVariables.[[!key]] <- !value ' 00:04:28 verbose #6622 > > 00:04:28 verbose #6623 > > inl proc = start_info |> new_process |> use 00:04:28 verbose #6624 > > inl output : _ string = threading.new_concurrent_stack () 00:04:28 verbose #6625 > > 00:04:28 verbose #6626 > > inl event error (e : data_received_event_args) = async.new_async 00:04:28 verbose #6627 > > fun () => 00:04:28 verbose #6628 > > inl data = e |> event_data 00:04:28 verbose #6629 > > if data <> null () then 00:04:28 verbose #6630 > > match options.on_line |> optionm'.unbox with 00:04:28 verbose #6631 > > | Some on_line => 00:04:28 verbose #6632 > > on_line 00:04:28 verbose #6633 > > { 00:04:28 verbose #6634 > > process_id = proc |> process_id 00:04:28 verbose #6635 > > line = data 00:04:28 verbose #6636 > > error = error 00:04:28 verbose #6637 > > } 00:04:28 verbose #6638 > > |> async.do 00:04:28 verbose #6639 > > | None => () 00:04:28 verbose #6640 > > 00:04:28 verbose #6641 > > inl text = 00:04:28 verbose #6642 > > if error 00:04:28 verbose #6643 > > then $'$"\! {!data}"' 00:04:28 verbose #6644 > > else $'$"> {!data}"' 00:04:28 verbose #6645 > > if options.trace 00:04:28 verbose #6646 > > then trace Verbose (fun () => text) id 00:04:28 verbose #6647 > > else text |> console.write_line 00:04:28 verbose #6648 > > 00:04:28 verbose #6649 > > inl l = if error then $'"\\u001b[[7;4m"' else "" 00:04:28 verbose #6650 > > inl r = if error then $'"\\u001b[[0m"' else "" 00:04:28 verbose #6651 > > output |> threading.concurrent_stack_push 00:04:28 verbose #6652 > > $'$"{!l}{!data}{!r}"' 00:04:28 verbose #6653 > > 00:04:28 verbose #6654 > > proc |> process_add_output_data_received (event false >> 00:04:28 verbose #6655 > > async.start_immediate) 00:04:28 verbose #6656 > > proc |> process_add_error_data_received (event true >> 00:04:28 verbose #6657 > > async.start_immediate) 00:04:28 verbose #6658 > > 00:04:28 verbose #6659 > > if proc |> process_start |> not 00:04:28 verbose #6660 > > then failwith $'$"runtime.execute_with_options_async 00:04:28 verbose #6661 > > process_start error"' 00:04:28 verbose #6662 > > 00:04:28 verbose #6663 > > proc |> process_begin_error_read_line 00:04:28 verbose #6664 > > proc |> process_begin_output_read_line 00:04:28 verbose #6665 > > 00:04:28 verbose #6666 > > inl ct = 00:04:28 verbose #6667 > > options.cancellation_token 00:04:28 verbose #6668 > > |> optionm'.unbox 00:04:28 verbose #6669 > > |> optionm'.default_with threading.token_none 00:04:28 verbose #6670 > > |> async.merge_cancellation_token_with_default_async 00:04:28 verbose #6671 > > |> async.let' 00:04:28 verbose #6672 > > 00:04:28 verbose #6673 > > ct |> threading.token_register fun () => 00:04:28 verbose #6674 > > if proc |> process_has_exited |> not 00:04:28 verbose #6675 > > then proc |> process_kill 00:04:28 verbose #6676 > > |> use 00:04:28 verbose #6677 > > |> ignore 00:04:28 verbose #6678 > > 00:04:28 verbose #6679 > > inl exit_code : i32 = 00:04:28 verbose #6680 > > fun () => 00:04:28 verbose #6681 > > try_unit 00:04:28 verbose #6682 > > fun () => 00:04:28 verbose #6683 > > proc 00:04:28 verbose #6684 > > |> process_wait_for_exit_async ct 00:04:28 verbose #6685 > > |> async.await_task 00:04:28 verbose #6686 > > |> async.do 00:04:28 verbose #6687 > > proc |> process_exit_code |> return 00:04:28 verbose #6688 > > fun ex => 00:04:28 verbose #6689 > > // with :? 00:04:28 verbose #6690 > > System.Threading.Tasks.TaskCanceledException as ex => 00:04:28 verbose #6691 > > inl ex' = ex |> sm'.format_exception 00:04:28 verbose #6692 > > output |> threading.concurrent_stack_push ex' 00:04:28 verbose #6693 > > inl ex : async.task_canceled_exception = ex |> 00:04:28 verbose #6694 > > unbox 00:04:28 verbose #6695 > > trace Warning 00:04:28 verbose #6696 > > fun () => 00:04:28 verbose #6697 > > $'$"runtime.execute_with_options_async / WaitForExitAsync"' 00:04:28 verbose #6698 > > fun () => { ex } 00:04:28 verbose #6699 > > (limit.min : i32) |> return 00:04:28 verbose #6700 > > |> async.new_async_unit 00:04:28 verbose #6701 > > |> async.let' 00:04:28 verbose #6702 > > 00:04:28 verbose #6703 > > inl output = 00:04:28 verbose #6704 > > output 00:04:28 verbose #6705 > > |> seq.rev'' 00:04:28 verbose #6706 > > |> fun x => x : seq.seq' string 00:04:28 verbose #6707 > > |> sm'.concat "\n" 00:04:28 verbose #6708 > > 00:04:28 verbose #6709 > > trace Debug 00:04:28 verbose #6710 > > fun () => $'$"runtime.execute_with_options_async"' 00:04:28 verbose #6711 > > fun () => { exit_code output_length = output |> sm'.length : 00:04:28 verbose #6712 > > i32 } 00:04:28 verbose #6713 > > 00:04:28 verbose #6714 > > (exit_code, output) |> return 00:04:28 verbose #6715 > > |> async.new_async_unit 00:04:28 verbose #6716 > > | _ => fun () => 00:04:28 verbose #6717 > > global "#if FABLE_COMPILER\n[[<CompilationRepresentation 00:04:28 verbose #6718 > > (CompilationRepresentationFlags.ModuleSuffix)>]]\nmodule System =\n module 00:04:28 verbose #6719 > > Diagnostics =\n type Process = unit\n type DataReceivedEventArgs = 00:04:28 verbose #6720 > > unit\n#endif" 00:04:28 verbose #6721 > > null () 00:04:28 verbose #6722 > > 00:04:28 verbose #6723 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:28 verbose #6724 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:28 verbose #6725 > > │ ### execute_async │ 00:04:28 verbose #6726 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:28 verbose #6727 > > 00:04:28 verbose #6728 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:28 verbose #6729 > > inl execute_async command = 00:04:28 verbose #6730 > > execution_options fun x => { x with 00:04:28 verbose #6731 > > command = command 00:04:28 verbose #6732 > > } 00:04:28 verbose #6733 > > |> execute_with_options_async 00:04:28 verbose #6734 > > 00:04:28 verbose #6735 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:28 verbose #6736 > > //// test 00:04:28 verbose #6737 > > 00:04:28 verbose #6738 > > inl content = "╭─[[ 你好,世界!こんにちは世界! ]]─╮" 00:04:28 verbose #6739 > > fun () => 00:04:28 verbose #6740 > > inl file_name = "test.txt" 00:04:28 verbose #6741 > > inl temp_dir, disposable = 00:04:28 verbose #6742 > > (file_name, content) 00:04:28 verbose #6743 > > |> sm'.format_debug 00:04:28 verbose #6744 > > |> crypto.hash_text 00:04:28 verbose #6745 > > |> file_system.create_temp_dir' 00:04:28 verbose #6746 > > disposable |> use |> ignore 00:04:28 verbose #6747 > > 00:04:28 verbose #6748 > > inl path = temp_dir </> file_name 00:04:28 verbose #6749 > > 00:04:28 verbose #6750 > > inl exit_code, result = execute_async $'\@$"pwsh -c ""Get-Content 00:04:28 verbose #6751 > > {!path}"""' |> async.let' 00:04:28 verbose #6752 > > exit_code |> join _assert_eq 1 00:04:28 verbose #6753 > > result |> _assert_string_contains "not exist" 00:04:28 verbose #6754 > > 00:04:28 verbose #6755 > > content |> file_system.write_all_text_async path |> async.do 00:04:28 verbose #6756 > > 00:04:28 verbose #6757 > > execution_options fun x => { x with 00:04:28 verbose #6758 > > command = $'\@$"cat ""{!file_name}"""' 00:04:28 verbose #6759 > > working_directory = Some temp_dir |> optionm'.box 00:04:28 verbose #6760 > > } 00:04:28 verbose #6761 > > |> execute_with_options_async 00:04:28 verbose #6762 > > |> async.let' 00:04:28 verbose #6763 > > |> ignore 00:04:28 verbose #6764 > > 00:04:28 verbose #6765 > > execution_options fun x => { x with 00:04:28 verbose #6766 > > command = $'\@$"pwsh -c ""[[System.Console]]::OutputEncoding = 00:04:28 verbose #6767 > > [[System.Text.Encoding]]::UTF8; Get-Content {!file_name}"""' 00:04:28 verbose #6768 > > working_directory = Some temp_dir |> optionm'.box 00:04:28 verbose #6769 > > } 00:04:28 verbose #6770 > > |> execute_with_options_async 00:04:28 verbose #6771 > > |> async.return_await 00:04:28 verbose #6772 > > |> async.new_async_unit 00:04:28 verbose #6773 > > |> async.run_with_timeout 10000 00:04:28 verbose #6774 > > |> function 00:04:28 verbose #6775 > > | Some (exit_code, output) => 00:04:28 verbose #6776 > > exit_code |> join _assert_eq 0i32 00:04:28 verbose #6777 > > output |> join _assert_eq content 00:04:28 verbose #6778 > > true 00:04:28 verbose #6779 > > | _ => false 00:04:28 verbose #6780 > > |> _assert_eq true 00:04:32 verbose #6781 > > 00:04:32 verbose #6782 > > ╭─[ 4.05s - stdout ]───────────────────────────────────────────────────────────╮ 00:04:32 verbose #6783 > > │ 00:00:00 debug #1 runtime.execute_with_options_async / { options = { │ 00:04:32 verbose #6784 > > │ command = pwsh -c "Get-Content │ 00:04:32 verbose #6785 > > │ /tmp/!create_temp_path_/dotnet-repl/76793606-813b-88ad-7791-7ce2871edce9/tes │ 00:04:32 verbose #6786 > > │ t.txt"; cancellation_token = None; environment_variables = [||]; on_line = │ 00:04:32 verbose #6787 > > │ None; stdin = None; trace = true; working_directory = None } } │ 00:04:32 verbose #6788 > > │ 00:00:00 verbose #2 ! Get-Content: Cannot find path │ 00:04:32 verbose #6789 > > │ '/tmp/!create_temp_path_/dotnet-repl/76793606-813b-88ad-7791-7ce2871edce9/te │ 00:04:32 verbose #6790 > > │ st.txt' because it does not exist. │ 00:04:32 verbose #6791 > > │ 00:00:00 debug #3 runtime.execute_with_options_async / { exit_code = │ 00:04:32 verbose #6792 > > │ 1; output_length = 168 } │ 00:04:32 verbose #6793 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:04:32 verbose #6794 > > │ __assert_string_contains / actual: "not exist" / expected: "38;5;2m│ 00:04:32 verbose #6795 > > │ 31;1mGet-Content: Cannot find path │ 00:04:32 verbose #6796 > > │ '/tmp/!create_temp_path_/dotnet-repl/76793606-813b-88ad-7791-7ce2871edce9/te │ 00:04:32 verbose #6797 > > │ st.txt' because it does not exist." │ 00:04:32 verbose #6798 > > │ 00:00:00 debug #4 runtime.execute_with_options_async / { options = { │ 00:04:32 verbose #6799 > > │ command = cat "test.txt"; cancellation_token = None; environment_variables = │ 00:04:32 verbose #6800 > > │ [||]; on_line = None; stdin = None; trace = true; working_directory = Some │ 00:04:32 verbose #6801 > > │ "/tmp/!create_temp_path_/dotnet-repl/76793606-813b-88ad-7791-7ce2871edce9" } │ 00:04:32 verbose #6802 > > │ } │ 00:04:32 verbose #6803 > > │ 00:00:00 verbose #5 > ╭─[ 你好,世界!こんにちは世界! ]─╮ │ 00:04:32 verbose #6804 > > │ 00:00:00 debug #6 runtime.execute_with_options_async / { exit_code = │ 00:04:32 verbose #6805 > > │ 0; output_length = 22 } │ 00:04:32 verbose #6806 > > │ 00:00:00 debug #7 runtime.execute_with_options_async / { options = { │ 00:04:32 verbose #6807 > > │ command = pwsh -c "[System.Console]::OutputEncoding = [ │ 00:04:32 verbose #6808 > > │ System.Text.Encoding]::UTF8; Get-Content test.txt"; cancellation_token = │ 00:04:32 verbose #6809 > > │ None; environment_variables = [||]; on_line = None; stdin = None; trace = │ 00:04:32 verbose #6810 > > │ true; working_directory = Some │ 00:04:32 verbose #6811 > > │ "/tmp/!create_temp_path_/dotnet-repl/76793606-813b-88ad-7791-7ce2871edce9" } │ 00:04:32 verbose #6812 > > │ } │ 00:04:32 verbose #6813 > > │ 00:00:00 verbose #8 > ╭─[ 你好,世界!こんにちは世界! ]─╮ │ 00:04:32 verbose #6814 > > │ 00:00:00 debug #9 runtime.execute_with_options_async / { exit_code = │ 00:04:32 verbose #6815 > > │ 0; output_length = 22 } │ 00:04:32 verbose #6816 > > │ __assert_eq / actual: 0 / expected: 0 │ 00:04:32 verbose #6817 > > │ __assert_eq / actual: "╭─[ 你好,世界!こんにちは世界! ]─╮" / expected: "╭─ │ 00:04:32 verbose #6818 > > │ [ 你好,世界!こんにちは世界! ]─╮" │ 00:04:32 verbose #6819 > > │ __assert_eq / actual: true / expected: true │ 00:04:32 verbose #6820 > > │ │ 00:04:32 verbose #6821 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:32 verbose #6822 > > 00:04:32 verbose #6823 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:32 verbose #6824 > > //// test 00:04:32 verbose #6825 > > 00:04:32 verbose #6826 > > fun () => 00:04:32 verbose #6827 > > inl file_name = "test.txt" 00:04:32 verbose #6828 > > inl text = "0" 00:04:32 verbose #6829 > > 00:04:32 verbose #6830 > > inl temp_dir, disposable = 00:04:32 verbose #6831 > > (file_name, text) 00:04:32 verbose #6832 > > |> sm'.format_debug 00:04:32 verbose #6833 > > |> crypto.hash_text 00:04:32 verbose #6834 > > |> file_system.create_temp_dir' 00:04:32 verbose #6835 > > disposable |> use |> ignore 00:04:32 verbose #6836 > > inl path = temp_dir </> file_name 00:04:32 verbose #6837 > > text |> file_system.write_all_text_async path |> async.do 00:04:32 verbose #6838 > > 00:04:32 verbose #6839 > > inl cts = threading.new_cancellation_token_source () 00:04:32 verbose #6840 > > trace Debug (fun () => "1") id 00:04:32 verbose #6841 > > inl result = 00:04:32 verbose #6842 > > execution_options fun x => { x with 00:04:32 verbose #6843 > > command = $'\@$"pwsh -c ""Get-Content {!path}"""' 00:04:32 verbose #6844 > > cancellation_token = cts |> threading.cancellation_source_token |> 00:04:32 verbose #6845 > > Some |> optionm'.box 00:04:32 verbose #6846 > > } 00:04:32 verbose #6847 > > |> execute_with_options_async 00:04:32 verbose #6848 > > |> async.start_child 00:04:32 verbose #6849 > > |> async.let' 00:04:32 verbose #6850 > > trace Debug (fun () => "2") id 00:04:32 verbose #6851 > > async.sleep 100 |> async.do 00:04:32 verbose #6852 > > trace Debug (fun () => "3") id 00:04:32 verbose #6853 > > cts |> threading.cancellation_source_cancel 00:04:32 verbose #6854 > > trace Debug (fun () => "4") id 00:04:32 verbose #6855 > > inl exit_code, output = result |> async.let' 00:04:32 verbose #6856 > > trace Debug (fun () => "5") id 00:04:32 verbose #6857 > > (exit_code, output) |> return 00:04:32 verbose #6858 > > |> async.new_async_unit 00:04:32 verbose #6859 > > |> async.run_with_timeout 10000 00:04:32 verbose #6860 > > |> function 00:04:32 verbose #6861 > > | Some (exit_code, output) => 00:04:32 verbose #6862 > > exit_code |> _assert_eq -2147483648i32 00:04:32 verbose #6863 > > output |> _assert_eq (join 00:04:32 verbose #6864 > > "System.Threading.Tasks.TaskCanceledException: A task was canceled.") 00:04:32 verbose #6865 > > true 00:04:32 verbose #6866 > > | _ => false 00:04:32 verbose #6867 > > |> _assert_eq true 00:04:36 verbose #6868 > > 00:04:36 verbose #6869 > > ╭─[ 3.19s - stdout ]───────────────────────────────────────────────────────────╮ 00:04:36 verbose #6870 > > │ 00:00:00 debug #1 1 │ 00:04:36 verbose #6871 > > │ 00:00:00 debug #2 2 │ 00:04:36 verbose #6872 > > │ 00:00:00 debug #3 runtime.execute_with_options_async / { options = { │ 00:04:36 verbose #6873 > > │ command = pwsh -c "Get-Content │ 00:04:36 verbose #6874 > > │ /tmp/!create_temp_path_/dotnet-repl/613830ed-016e-d959-8d21-02dc1c63c252/tes │ 00:04:36 verbose #6875 > > │ t.txt"; cancellation_token = Some System.Threading.CancellationToken; │ 00:04:36 verbose #6876 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:04:36 verbose #6877 > > │ working_directory = None } } │ 00:04:36 verbose #6878 > > │ 00:00:00 debug #4 3 │ 00:04:36 verbose #6879 > > │ 00:00:00 debug #5 4 │ 00:04:36 verbose #6880 > > │ 00:00:00 warning #6 runtime.execute_with_options_async / │ 00:04:36 verbose #6881 > > │ WaitForExitAsync / { ex = System.Threading.Tasks.TaskCanceledException: A │ 00:04:36 verbose #6882 > > │ task was canceled. } │ 00:04:36 verbose #6883 > > │ 00:00:00 debug #7 runtime.execute_with_options_async / { exit_code = │ 00:04:36 verbose #6884 > > │ -2147483648; output_length = 66 } │ 00:04:36 verbose #6885 > > │ 00:00:00 debug #8 5 │ 00:04:36 verbose #6886 > > │ __assert_eq / actual: -2147483648 / expected: -2147483648 │ 00:04:36 verbose #6887 > > │ __assert_eq / actual: "System.Threading.Tasks.TaskCanceledException: A task │ 00:04:36 verbose #6888 > > │ was canceled." / expected: "System.Threading.Tasks.TaskCanceledException: A │ 00:04:36 verbose #6889 > > │ task was canceled." │ 00:04:36 verbose #6890 > > │ __assert_eq / actual: true / expected: true │ 00:04:36 verbose #6891 > > │ │ 00:04:36 verbose #6892 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:36 verbose #6893 > > 00:04:36 verbose #6894 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:36 verbose #6895 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:36 verbose #6896 > > │ ### current_process_kill │ 00:04:36 verbose #6897 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:36 verbose #6898 > > 00:04:36 verbose #6899 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:36 verbose #6900 > > inl current_process_kill () = 00:04:36 verbose #6901 > > run_target function 00:04:36 verbose #6902 > > | Fsharp (Native) => fun () => 00:04:36 verbose #6903 > > inl fn () = 00:04:36 verbose #6904 > > run_target function 00:04:36 verbose #6905 > > | Fsharp (Native) => fun () => 00:04:36 verbose #6906 > > trace Warning (fun () => "runtime.current_process_kill 00:04:36 verbose #6907 > > exiting... 3") id 00:04:36 verbose #6908 > > $'System.Threading.Thread.Sleep 300' 00:04:36 verbose #6909 > > trace Warning (fun () => "runtime.current_process_kill 00:04:36 verbose #6910 > > exiting... 2") id 00:04:36 verbose #6911 > > $'System.Console.Out.Flush ()' 00:04:36 verbose #6912 > > $'System.Threading.Thread.Sleep 60' 00:04:36 verbose #6913 > > trace Warning (fun () => "runtime.current_process_kill 00:04:36 verbose #6914 > > exiting... 1") id 00:04:36 verbose #6915 > > $'System.Diagnostics.Process.GetCurrentProcess().Kill 00:04:36 verbose #6916 > > ()' : () 00:04:36 verbose #6917 > > | _ => fun () => () 00:04:36 verbose #6918 > > inl thread : threading.thread = $'new System.Threading.Thread (!fn)' 00:04:36 verbose #6919 > > thread |> $'_.Start()' : () 00:04:36 verbose #6920 > > | _ => fun () => () 00:04:36 verbose #6921 > > 00:04:36 verbose #6922 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:36 verbose #6923 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:36 verbose #6924 > > │ ### gc_collect │ 00:04:36 verbose #6925 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:36 verbose #6926 > > 00:04:36 verbose #6927 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:36 verbose #6928 > > inl gc_collect () = 00:04:36 verbose #6929 > > run_target function 00:04:36 verbose #6930 > > | Fsharp _ => fun () => $'System.GC.Collect' () : () 00:04:36 verbose #6931 > > | Python _ => fun () => 00:04:36 verbose #6932 > > backend_switch { 00:04:36 verbose #6933 > > Python = fun () => global "import gc" 00:04:36 verbose #6934 > > } 00:04:36 verbose #6935 > > ($'gc.collect()' : int) |> ignore 00:04:36 verbose #6936 > > | _ => fun () => () 00:04:36 verbose #6937 > > 00:04:36 verbose #6938 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:36 verbose #6939 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:36 verbose #6940 > > │ ## runtime │ 00:04:36 verbose #6941 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:36 verbose #6942 > > 00:04:36 verbose #6943 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:36 verbose #6944 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:36 verbose #6945 > > │ ### execute_with_options │ 00:04:36 verbose #6946 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:36 verbose #6947 > > 00:04:36 verbose #6948 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:36 verbose #6949 > > let execute_with_options (options : execution_options) : i32 * string = 00:04:36 verbose #6950 > > run_target function 00:04:36 verbose #6951 > > | Fsharp (Native) => fun () => 00:04:36 verbose #6952 > > options |> execute_with_options_async |> async.run_synchronously 00:04:36 verbose #6953 > > | Rust (Native) => fun () => 00:04:36 verbose #6954 > > inl command = join options.command 00:04:36 verbose #6955 > > inl file_name, arguments = command |> split_command |> resultm.get 00:04:36 verbose #6956 > > inl arguments = 00:04:36 verbose #6957 > > arguments 00:04:36 verbose #6958 > > |> optionm'.default_value "" 00:04:36 verbose #6959 > > |> split_args 00:04:36 verbose #6960 > > |> resultm.get 00:04:36 verbose #6961 > > |> am'.to_vec 00:04:36 verbose #6962 > > |> am'.vec_map sm'.to_std_string 00:04:36 verbose #6963 > > 00:04:36 verbose #6964 > > trace Debug 00:04:36 verbose #6965 > > fun () => $'$"runtime.execute_with_options"' 00:04:36 verbose #6966 > > fun () => { file_name arguments options } 00:04:36 verbose #6967 > > 00:04:36 verbose #6968 > > fun () => 00:04:36 verbose #6969 > > fun () => 00:04:36 verbose #6970 > > file_name 00:04:36 verbose #6971 > > |> new_process_command 00:04:36 verbose #6972 > > |> process_command_args arguments 00:04:36 verbose #6973 > > |> process_command_stdout (process_stdio_piped ()) 00:04:36 verbose #6974 > > |> process_command_stderr (process_stdio_piped ()) 00:04:36 verbose #6975 > > |> process_command_stdin (process_stdio_piped ()) 00:04:36 verbose #6976 > > |> fun command => 00:04:36 verbose #6977 > > match options.working_directory |> optionm'.unbox with 00:04:36 verbose #6978 > > | Some working_directory => 00:04:36 verbose #6979 > > command 00:04:36 verbose #6980 > > |> process_command_current_dir working_directory 00:04:36 verbose #6981 > > | None => command 00:04:36 verbose #6982 > > |> fun command => 00:04:36 verbose #6983 > > match options.environment_variables with 00:04:36 verbose #6984 > > | ;[[]] => command 00:04:36 verbose #6985 > > | vars => 00:04:36 verbose #6986 > > (command, vars |> am'.to_vec) 00:04:36 verbose #6987 > > ||> am'.vec_fold' fun command (key, value) => 00:04:36 verbose #6988 > > command |> process_command_env key value 00:04:36 verbose #6989 > > |> process_command_spawn 00:04:36 verbose #6990 > > |> resultm.map_error' sm'.format' 00:04:36 verbose #6991 > > |> resultm.map' (optionm'.some' >> threading.new_arc_mutex) 00:04:36 verbose #6992 > > |> resultm.unbox' 00:04:36 verbose #6993 > > |> function 00:04:36 verbose #6994 > > | Ok child => 00:04:36 verbose #6995 > > inl stdout = 00:04:36 verbose #6996 > > fun () => 00:04:36 verbose #6997 > > child 00:04:36 verbose #6998 > > |> threading.arc_mutex_lock 00:04:36 verbose #6999 > > |> resultm.unwrap' 00:04:36 verbose #7000 > > |> threading.mutex_guard_ref_mut 00:04:36 verbose #7001 > > |> optionm'.as_mut 00:04:36 verbose #7002 > > |> optionm'.unwrap 00:04:36 verbose #7003 > > |> process_child_stdout 00:04:36 verbose #7004 > > |> optionm'.take_ref_mut 00:04:36 verbose #7005 > > |> optionm'.unwrap 00:04:36 verbose #7006 > > |> rust.capture 00:04:36 verbose #7007 > > 00:04:36 verbose #7008 > > inl stderr = 00:04:36 verbose #7009 > > fun () => 00:04:36 verbose #7010 > > child 00:04:36 verbose #7011 > > |> threading.arc_mutex_lock 00:04:36 verbose #7012 > > |> resultm.unwrap' 00:04:36 verbose #7013 > > |> threading.mutex_guard_ref_mut 00:04:36 verbose #7014 > > |> optionm'.as_mut 00:04:36 verbose #7015 > > |> optionm'.unwrap 00:04:36 verbose #7016 > > |> process_child_stderr 00:04:36 verbose #7017 > > |> optionm'.take_ref_mut 00:04:36 verbose #7018 > > |> optionm'.unwrap 00:04:36 verbose #7019 > > |> rust.capture 00:04:36 verbose #7020 > > 00:04:36 verbose #7021 > > inl stdin = 00:04:36 verbose #7022 > > fun () => 00:04:36 verbose #7023 > > child 00:04:36 verbose #7024 > > |> threading.arc_mutex_lock 00:04:36 verbose #7025 > > |> resultm.unwrap' 00:04:36 verbose #7026 > > |> threading.mutex_guard_ref_mut 00:04:36 verbose #7027 > > |> optionm'.as_mut 00:04:36 verbose #7028 > > |> optionm'.unwrap 00:04:36 verbose #7029 > > |> process_child_stdin 00:04:36 verbose #7030 > > |> optionm'.take_ref_mut 00:04:36 verbose #7031 > > |> optionm'.unwrap 00:04:36 verbose #7032 > > |> optionm'.some' 00:04:36 verbose #7033 > > |> threading.new_arc_mutex 00:04:36 verbose #7034 > > |> rust.capture 00:04:36 verbose #7035 > > 00:04:36 verbose #7036 > > inl channel_sender, channel_receiver = 00:04:36 verbose #7037 > > threading.new_channel () 00:04:36 verbose #7038 > > inl channel_sender'' = channel_sender |> 00:04:36 verbose #7039 > > threading.new_arc_mutex 00:04:36 verbose #7040 > > inl channel_sender' = channel_sender |> 00:04:36 verbose #7041 > > threading.new_arc_mutex 00:04:36 verbose #7042 > > inl channel_receiver' = channel_receiver |> 00:04:36 verbose #7043 > > threading.new_arc_mutex 00:04:36 verbose #7044 > > 00:04:36 verbose #7045 > > inl stdout_handle = 00:04:36 verbose #7046 > > fun () => 00:04:36 verbose #7047 > > stdout 00:04:36 verbose #7048 > > |> stream.decode_reader_bytes_build 00:04:36 verbose #7049 > > |> stream.new_buf_reader 00:04:36 verbose #7050 > > |> stream.buf_read_lines 00:04:36 verbose #7051 > > |> iter.try_for_each fun lines => 00:04:36 verbose #7052 > > inl channel_sender'' = channel_sender'' 00:04:36 verbose #7053 > > |> rust.clone 00:04:36 verbose #7054 > > lines 00:04:36 verbose #7055 > > |> stdio_line (Ok ()) options.trace 00:04:36 verbose #7056 > > channel_sender'' 00:04:36 verbose #7057 > > |> resultm.to_try 00:04:36 verbose #7058 > > |> threading.spawn (1, 0) 1 00:04:36 verbose #7059 > > 00:04:36 verbose #7060 > > inl stderr_handle = 00:04:36 verbose #7061 > > fun () => 00:04:36 verbose #7062 > > stderr 00:04:36 verbose #7063 > > |> stream.decode_reader_bytes_build 00:04:36 verbose #7064 > > |> stream.new_buf_reader 00:04:36 verbose #7065 > > |> stream.buf_read_lines 00:04:36 verbose #7066 > > |> iter.try_for_each fun lines => 00:04:36 verbose #7067 > > inl channel_sender' = channel_sender' |> 00:04:36 verbose #7068 > > rust.clone 00:04:36 verbose #7069 > > lines 00:04:36 verbose #7070 > > |> stdio_line (Error ()) options.trace 00:04:36 verbose #7071 > > channel_sender' 00:04:36 verbose #7072 > > |> resultm.to_try 00:04:36 verbose #7073 > > |> threading.spawn (1, 0) 1 00:04:36 verbose #7074 > > 00:04:36 verbose #7075 > > match options.stdin |> optionm'.unbox with 00:04:36 verbose #7076 > > | Some stdin' => 00:04:36 verbose #7077 > > stdin 00:04:36 verbose #7078 > > |> threading.arc_mutex_lock 00:04:36 verbose #7079 > > |> resultm.unwrap' 00:04:36 verbose #7080 > > |> threading.mutex_guard_ref_mut 00:04:36 verbose #7081 > > |> optionm'.take_ref_mut 00:04:36 verbose #7082 > > |> optionm'.map' threading.new_arc_mutex 00:04:36 verbose #7083 > > |> optionm'.unbox 00:04:36 verbose #7084 > > |> function 00:04:36 verbose #7085 > > | Some stdin => 00:04:36 verbose #7086 > > stdin |> stdin' 00:04:36 verbose #7087 > > stdin 00:04:36 verbose #7088 > > |> threading.arc_mutex_lock 00:04:36 verbose #7089 > > |> resultm.unwrap' 00:04:36 verbose #7090 > > |> stdin_flush 00:04:36 verbose #7091 > > | None => () 00:04:36 verbose #7092 > > | None => () 00:04:36 verbose #7093 > > 00:04:36 verbose #7094 > > inl output = 00:04:36 verbose #7095 > > child 00:04:36 verbose #7096 > > |> threading.arc_mutex_lock 00:04:36 verbose #7097 > > |> resultm.unwrap' 00:04:36 verbose #7098 > > |> threading.mutex_guard_ref_mut 00:04:36 verbose #7099 > > |> optionm'.take_ref_mut 00:04:36 verbose #7100 > > |> optionm'.unwrap 00:04:36 verbose #7101 > > |> child_wait_with_output 00:04:36 verbose #7102 > > |> resultm.map_error' sm'.format' 00:04:36 verbose #7103 > > 00:04:36 verbose #7104 > > [[ stdout_handle; stderr_handle ]] 00:04:36 verbose #7105 > > |> am'.new_vec 00:04:36 verbose #7106 > > |> am'.vec_for_each' (threading.join' >> 00:04:36 verbose #7107 > > resultm.unwrap' >> resultm.unwrap') 00:04:36 verbose #7108 > > 00:04:36 verbose #7109 > > match output |> resultm.unbox with 00:04:36 verbose #7110 > > | Ok output => 00:04:36 verbose #7111 > > inl exit_code = 00:04:36 verbose #7112 > > output 00:04:36 verbose #7113 > > |> process_output_status 00:04:36 verbose #7114 > > |> process_exit_status_code 00:04:36 verbose #7115 > > |> optionm'.unbox 00:04:36 verbose #7116 > > match exit_code with 00:04:36 verbose #7117 > > | Some exit_code => exit_code, None, Some 00:04:36 verbose #7118 > > channel_receiver' 00:04:36 verbose #7119 > > | None => 00:04:36 verbose #7120 > > -1, 00:04:36 verbose #7121 > > ("runtime.execute_with_options 00:04:36 verbose #7122 > > exit_code=None" |> sm'.to_std_string |> Some), 00:04:36 verbose #7123 > > Some channel_receiver' 00:04:36 verbose #7124 > > | Error error => 00:04:36 verbose #7125 > > trace Critical 00:04:36 verbose #7126 > > fun () => $'$"runtime.execute_with_options 00:04:36 verbose #7127 > > output error"' 00:04:36 verbose #7128 > > fun () => { error } 00:04:36 verbose #7129 > > -2i32, error |> Some, None 00:04:36 verbose #7130 > > | Error error => 00:04:36 verbose #7131 > > trace Critical 00:04:36 verbose #7132 > > fun () => $'$"runtime.execute_with_options 00:04:36 verbose #7133 > > child error"' 00:04:36 verbose #7134 > > fun () => { error } 00:04:36 verbose #7135 > > -1i32, error |> Some, None 00:04:36 verbose #7136 > > |> function 00:04:36 verbose #7137 > > | exit_code, std_trace, channel_receiver => 00:04:36 verbose #7138 > > inl std_trace = 00:04:36 verbose #7139 > > channel_receiver 00:04:36 verbose #7140 > > |> optionm'.box 00:04:36 verbose #7141 > > |> optionm'.map' fun channel_receiver => 00:04:36 verbose #7142 > > channel_receiver 00:04:36 verbose #7143 > > |> threading.arc_mutex_lock 00:04:36 verbose #7144 > > |> resultm.unwrap' 00:04:36 verbose #7145 > > |> iter.iter 00:04:36 verbose #7146 > > |> iter_collect'' 00:04:36 verbose #7147 > > |> am'.vec_map sm'.from_std_string 00:04:36 verbose #7148 > > |> am'.from_vec 00:04:36 verbose #7149 > > |> fun x => x : _ i32 _ 00:04:36 verbose #7150 > > |> seq.of_array 00:04:36 verbose #7151 > > |> sm'.concat "\n" 00:04:36 verbose #7152 > > |> optionm'.default_value' ( 00:04:36 verbose #7153 > > std_trace 00:04:36 verbose #7154 > > |> optionm.map sm'.from_std_string 00:04:36 verbose #7155 > > |> optionm'.default_value "" 00:04:36 verbose #7156 > > ) 00:04:36 verbose #7157 > > trace Verbose 00:04:36 verbose #7158 > > fun () => $'$"runtime.execute_with_options 00:04:36 verbose #7159 > > result"' 00:04:36 verbose #7160 > > fun () => { exit_code std_trace_length = 00:04:36 verbose #7161 > > std_trace |> sm'.length : i32 } 00:04:36 verbose #7162 > > new_pair exit_code std_trace 00:04:36 verbose #7163 > > |> capture 00:04:36 verbose #7164 > > // |> async.new_future_move 00:04:36 verbose #7165 > > // |> async.block_on 00:04:36 verbose #7166 > > |> fun x => x () 00:04:36 verbose #7167 > > |> from_pair 00:04:36 verbose #7168 > > | _ => fun () => null () 00:04:36 verbose #7169 > > 00:04:36 verbose #7170 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:36 verbose #7171 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:36 verbose #7172 > > │ #### execute │ 00:04:36 verbose #7173 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:36 verbose #7174 > > 00:04:36 verbose #7175 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:36 verbose #7176 > > inl execute command = 00:04:36 verbose #7177 > > execution_options fun x => { x with 00:04:36 verbose #7178 > > command = command 00:04:36 verbose #7179 > > } 00:04:36 verbose #7180 > > |> execute_with_options 00:04:36 verbose #7181 > > 00:04:36 verbose #7182 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:36 verbose #7183 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:36 verbose #7184 > > │ #### tests │ 00:04:36 verbose #7185 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:36 verbose #7186 > > 00:04:36 verbose #7187 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:36 verbose #7188 > > //// test 00:04:36 verbose #7189 > > ///! rust -d chrono encoding_rs encoding_rs_io regex sha2 00:04:36 verbose #7190 > > 00:04:36 verbose #7191 > > inl content = "╭─[[ 你好,世界!こんにちは世界! ]]─╮" 00:04:36 verbose #7192 > > 00:04:36 verbose #7193 > > inl file_name = join "test.txt" 00:04:36 verbose #7194 > > inl temp_dir, disposable = 00:04:36 verbose #7195 > > (file_name, content) 00:04:36 verbose #7196 > > |> sm'.format_debug 00:04:36 verbose #7197 > > |> crypto.hash_text 00:04:36 verbose #7198 > > |> file_system.create_temp_dir' 00:04:36 verbose #7199 > > inl path = temp_dir </> file_name |> file_system.normalize_path 00:04:36 verbose #7200 > > inl exit_code, result = 00:04:36 verbose #7201 > > execute $'\@$"pwsh -c ""[[IO.File]]::ReadAllText(\'{!path}\')"""' 00:04:36 verbose #7202 > > exit_code |> _assert_eq 1 00:04:36 verbose #7203 > > result |> _assert_string_contains "not find file" 00:04:36 verbose #7204 > > 00:04:36 verbose #7205 > > content |> file_system.write_all_text path 00:04:36 verbose #7206 > > 00:04:36 verbose #7207 > > execution_options fun x => { x with 00:04:36 verbose #7208 > > command = $'\@$"cat ""{!file_name}"""' 00:04:36 verbose #7209 > > working_directory = Some temp_dir |> optionm'.box 00:04:36 verbose #7210 > > } 00:04:36 verbose #7211 > > |> execute_with_options 00:04:36 verbose #7212 > > |> ignore 00:04:36 verbose #7213 > > 00:04:36 verbose #7214 > > inl exit_code, output = 00:04:36 verbose #7215 > > execution_options fun x => { x with 00:04:36 verbose #7216 > > command = $'\@$"pwsh -c ""[[System.Console]]::OutputEncoding = 00:04:36 verbose #7217 > > [[System.Text.Encoding]]::UTF8; [[IO.File]]::ReadAllText(\'{!file_name}\')"""' 00:04:36 verbose #7218 > > working_directory = Some temp_dir |> optionm'.box 00:04:36 verbose #7219 > > } 00:04:36 verbose #7220 > > |> execute_with_options 00:04:36 verbose #7221 > > 00:04:36 verbose #7222 > > exit_code |> _assert_eq 0i32 00:04:36 verbose #7223 > > output |> _assert_eq content 00:04:36 verbose #7224 > > 00:04:36 verbose #7225 > > disposable |> use |> ignore 00:04:53 verbose #7226 > > 00:04:53 verbose #7227 > > ╭─[ 17.12s - return value ]────────────────────────────────────────────────────╮ 00:04:53 verbose #7228 > > │ 00:00:00 verbose #1 file_system.create_dir / { dir = │ 00:04:53 verbose #7229 > > │ /tmp/!create_temp_path_/spiral_builder_90df0588099bf23106db7a7f59ddd20066566 │ 00:04:53 verbose #7230 > > │ a4498c1aad04a4fa0df207c0e28/9242780b-ce0e-9155-5e07-f6ee5667aa16 } │ 00:04:53 verbose #7231 > > │ 00:00:00 debug #2 runtime.execute_with_options / { file_name = pwsh; │ 00:04:53 verbose #7232 > > │ arguments = [ │ 00:04:53 verbose #7233 > > │ "-c", │ 00:04:53 verbose #7234 > > │ "[ │ 00:04:53 verbose #7235 > > │ IO.File]::ReadAllText('/tmp/!create_temp_path_/spiral_builder_90df0588099bf2 │ 00:04:53 verbose #7236 > > │ 3106db7a7f59ddd20066566a4498c1aad04a4fa0df207c0e28/9242780b-ce0e-9155-5e07-f │ 00:04:53 verbose #7237 > > │ 6ee5667aa16/test.txt')", │ 00:04:53 verbose #7238 > > │ ]; options = { command = pwsh -c "[ │ 00:04:53 verbose #7239 > > │ IO.File]::ReadAllText('/tmp/!create_temp_path_/spiral_builder_90df0588099bf2 │ 00:04:53 verbose #7240 > > │ 3106db7a7f59ddd20066566a4498c1aad04a4fa0df207c0e28/9242780b-ce0e-9155-5e07-f │ 00:04:53 verbose #7241 > > │ 6ee5667aa16/test.txt')"; cancellation_token = None; environment_variables = │ 00:04:53 verbose #7242 > > │ Array(MutCell([])); on_line = None; stdin = None; trace = true; │ 00:04:53 verbose #7243 > > │ working_directory = None } } │ 00:04:53 verbose #7244 > > │ 00:00:00 verbose #3 ! MethodInvocationException: Exception │ 00:04:53 verbose #7245 > > │ calling "ReadAllText" with "1" argument(s): "Could not find file │ 00:04:53 verbose #7246 > > │ '/tmp/!create_temp_path_/spiral_builder_90df0588099bf23106db7a7f59ddd2006656 │ 00:04:53 verbose #7247 > > │ 6a4498c1aad04a4fa0df207c0e28/9242780b-ce0e-9155-5e07-f6ee5667aa16/test.txt'." │ 00:04:53 verbose #7248 > > │ [0m │ 00:04:53 verbose #7249 > > │ 00:00:00 verbose #4 runtime.execute_with_options / result / { │ 00:04:53 verbose #7250 > > │ exit_code = 1; std_trace_length = 283 } │ 00:04:53 verbose #7251 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:04:53 verbose #7252 > > │ __assert_string_contains / actual: "not find file" / expected: "38;5;2m│ 00:04:53 verbose #7253 > > │ 31;1mMethodInvocationException: Exception calling "ReadAllText" with │ 00:04:53 verbose #7254 > > │ "1" argument(s): "Could not find file '/tmp/!...e_with_options / { file_name │ 00:04:53 verbose #7255 > > │ = cat; arguments = [ │ 00:04:53 verbose #7256 > > │ "test.txt", │ 00:04:53 verbose #7257 > > │ ]; options = { command = cat "test.txt"; cancellation_token = None; │ 00:04:53 verbose #7258 > > │ environment_variables = Array(MutCell([])); on_line = None; stdin = None; │ 00:04:53 verbose #7259 > > │ trace = true; working_directory = Some( │ 00:04:53 verbose #7260 > > │ │ 00:04:53 verbose #7261 > > │ "/tmp/!create_temp_path_/spiral_builder_90df0588099bf23106db7a7f59ddd2006656 │ 00:04:53 verbose #7262 > > │ 6a4498c1aad04a4fa0df207c0e28/9242780b-ce0e-9155-5e07-f6ee5667aa16", │ 00:04:53 verbose #7263 > > │ ) } } │ 00:04:53 verbose #7264 > > │ 00:00:00 verbose #6 > ╭─[ 你好,世界!こんにちは世界! ]─╮ │ 00:04:53 verbose #7265 > > │ 00:00:00 verbose #7 runtime.execute_with_options / result / { │ 00:04:53 verbose #7266 > > │ exit_code = 0; std_trace_length = 22 } │ 00:04:53 verbose #7267 > > │ 00:00:00 debug #8 runtime.execute_with_options / { file_name = pwsh; │ 00:04:53 verbose #7268 > > │ arguments = [ │ 00:04:53 verbose #7269 > > │ "-c", │ 00:04:53 verbose #7270 > > │ "[System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8; [ │ 00:04:53 verbose #7271 > > │ IO.File]::ReadAllText('test.txt')", │ 00:04:53 verbose #7272 > > │ ]; options = { command = pwsh -c "[System.Console]::OutputEncoding = [ │ 00:04:53 verbose #7273 > > │ System.Text.Encoding]::UTF8; [IO.File]::ReadAllText('test.txt')"; │ 00:04:53 verbose #7274 > > │ cancellation_token = None; environment_variables = Array(MutCell([])); │ 00:04:53 verbose #7275 > > │ on_line = None; stdin = None; trace = true; working_directory = Some( │ 00:04:53 verbose #7276 > > │ │ 00:04:53 verbose #7277 > > │ "/tmp/!create_temp_path_/spiral_builder_90df0588099bf23106db7a7f59ddd2006656 │ 00:04:53 verbose #7278 > > │ 6a4498c1aad04a4fa0df207c0e28/9242780b-ce0e-9155-5e07-f6ee5667aa16", │ 00:04:53 verbose #7279 > > │ ) } } │ 00:04:53 verbose #7280 > > │ 00:00:00 verbose #9 > ╭─[ 你好,世界!こんにちは世界! ]─╮ │ 00:04:53 verbose #7281 > > │ 00:00:00 verbose #10 runtime.execute_with_options / result / { │ 00:04:53 verbose #7282 > > │ exit_code = 0; std_trace_length = 22 } │ 00:04:53 verbose #7283 > > │ __assert_eq / actual: 0 / expected: 0 │ 00:04:53 verbose #7284 > > │ __assert_eq / actual: "╭─[ 你好,世界!こんにちは世界! ]─╮" / expected: "╭─ │ 00:04:53 verbose #7285 > > │ [ 你好,世界!こんにちは世界! ]─╮" │ 00:04:53 verbose #7286 > > │ │ 00:04:53 verbose #7287 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:53 verbose #7288 > > 00:04:53 verbose #7289 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:53 verbose #7290 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:53 verbose #7291 > > │ ### execute_retry │ 00:04:53 verbose #7292 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:53 verbose #7293 > > 00:04:53 verbose #7294 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:53 verbose #7295 > > let execute_retry retries options = 00:04:53 verbose #7296 > > fun () => 00:04:53 verbose #7297 > > inl exit_code, result = options |> execute_with_options 00:04:53 verbose #7298 > > if exit_code = 0 00:04:53 verbose #7299 > > then Ok (exit_code, result) 00:04:53 verbose #7300 > > else Error (exit_code, result) 00:04:53 verbose #7301 > > |> retry_fn' retries 00:04:53 verbose #7302 > > 00:04:53 verbose #7303 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:53 verbose #7304 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:53 verbose #7305 > > │ ## main │ 00:04:53 verbose #7306 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:04:53 verbose #7307 > > 00:04:53 verbose #7308 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:53 verbose #7309 > > inl main () = 00:04:53 verbose #7310 > > init_trace_state None 00:04:53 verbose #7311 > > $'let current_process_kill () = !current_process_kill ()' : () 00:04:53 verbose #7312 > > $'let execute_async x = !execute_async x' : () 00:04:53 verbose #7313 > > $'let execute_with_options_async x = !execute_with_options_async x' : () 00:04:53 verbose #7314 > > inl execution_options fn = 00:04:53 verbose #7315 > > execution_options fun x => 00:04:53 verbose #7316 > > x 00:04:53 verbose #7317 > > |> heap 00:04:53 verbose #7318 > > |> fn 00:04:53 verbose #7319 > > |> fun x => !x 00:04:53 verbose #7320 > > $'let execution_options x = !execution_options x' : () 00:04:53 verbose #7321 > > inl split_args x = x |> split_args |> resultm.box 00:04:53 verbose #7322 > > $'let split_args x = !split_args x' : () 00:04:55 verbose #7323 > 00:01:39 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 143512 } 00:04:55 verbose #7324 > 00:01:39 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:04:55 verbose #7325 > "nbconvert", 00:04:55 verbose #7326 > "/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.ipynb", 00:04:55 verbose #7327 > "--to", 00:04:55 verbose #7328 > "html", 00:04:55 verbose #7329 > "--HTMLExporter.theme=dark", 00:04:55 verbose #7330 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:04:56 verbose #7331 > 00:01:40 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.ipynb to html 00:04:56 verbose #7332 > 00:01:40 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:04:56 verbose #7333 > 00:01:40 verbose #7 ! validate(nb) 00:04:56 verbose #7334 > 00:01:41 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:04:56 verbose #7335 > 00:01:41 verbose #9 ! return _pygments_highlight( 00:04:57 verbose #7336 > 00:01:42 verbose #10 ! [NbConvertApp] Writing 583140 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.html 00:04:58 verbose #7337 > 00:01:42 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 } 00:04:58 verbose #7338 > 00:01:42 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 } 00:04:58 verbose #7339 > 00:01:42 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:04:58 verbose #7340 > "-c", 00:04:58 verbose #7341 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:04:58 verbose #7342 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:04:58 verbose #7343 > 00:01:42 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:04:58 verbose #7344 > 00:01:42 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:04:58 verbose #7345 > 00:01:42 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 144469 } 00:04:58 debug #7346 runtime.execute_with_options_async / { exit_code = 0; output_length = 151960 } 00:04:58 debug #8 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path runtime.dib --retries 3 00:04:58 debug #7347 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path trace.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:04:58 verbose #7348 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "trace.dib", "--retries", "3"])) } 00:04:58 verbose #7349 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:04:58 verbose #7350 > "repl", 00:04:58 verbose #7351 > "--exit-after-run", 00:04:58 verbose #7352 > "--run", 00:04:58 verbose #7353 > "/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib", 00:04:58 verbose #7354 > "--output-path", 00:04:58 verbose #7355 > "/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.ipynb", 00:04:58 verbose #7356 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:04:59 verbose #7357 > > 00:04:59 verbose #7358 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:59 verbose #7359 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:04:59 verbose #7360 > > │ # trace │ 00:04:59 verbose #7361 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:02 verbose #7362 > > 00:05:02 verbose #7363 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:02 verbose #7364 > > //// test 00:05:02 verbose #7365 > > 00:05:02 verbose #7366 > > open testing 00:05:02 verbose #7367 > > 00:05:02 verbose #7368 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:02 verbose #7369 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:02 verbose #7370 > > │ ## trace │ 00:05:02 verbose #7371 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:02 verbose #7372 > > 00:05:02 verbose #7373 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:02 verbose #7374 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:02 verbose #7375 > > │ ### trace_level │ 00:05:02 verbose #7376 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:02 verbose #7377 > > 00:05:02 verbose #7378 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:02 verbose #7379 > > union trace_level = 00:05:02 verbose #7380 > > | Verbose 00:05:02 verbose #7381 > > | Debug 00:05:02 verbose #7382 > > | Info 00:05:02 verbose #7383 > > | Warning 00:05:02 verbose #7384 > > | Critical 00:05:02 verbose #7385 > > 00:05:02 verbose #7386 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:02 verbose #7387 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:02 verbose #7388 > > │ ### read_state │ 00:05:02 verbose #7389 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:02 verbose #7390 > > 00:05:02 verbose #7391 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:02 verbose #7392 > > inl read_state () = 00:05:02 verbose #7393 > > run_target function 00:05:02 verbose #7394 > > | Rust (Wasm) => fun () => 00:05:02 verbose #7395 > > { 00:05:02 verbose #7396 > > trace_level = None 00:05:02 verbose #7397 > > repl_start = None 00:05:02 verbose #7398 > > } 00:05:02 verbose #7399 > > | Rust (Contract) => fun () => 00:05:02 verbose #7400 > > { 00:05:02 verbose #7401 > > trace_level = None 00:05:02 verbose #7402 > > repl_start = 00:05:02 verbose #7403 > > open rust.rust_operators 00:05:02 verbose #7404 > > inl automation = env.get_environment_variable_comptime 00:05:02 verbose #7405 > > "AUTOMATION" 00:05:02 verbose #7406 > > if automation <>. "True" 00:05:02 verbose #7407 > > then None 00:05:02 verbose #7408 > > else 00:05:02 verbose #7409 > > inl timestamp : u64 = 00:05:02 verbose #7410 > > !\($'$"near_sdk::env::block_timestamp()"') 00:05:02 verbose #7411 > > timestamp |> i64 |> Some 00:05:02 verbose #7412 > > } 00:05:02 verbose #7413 > > | _ => fun () => 00:05:02 verbose #7414 > > { 00:05:02 verbose #7415 > > trace_level = 00:05:02 verbose #7416 > > (join "TRACE_LEVEL") 00:05:02 verbose #7417 > > |> env.get_environment_variable 00:05:02 verbose #7418 > > |> reflection.union_try_pick 00:05:02 verbose #7419 > > repl_start = 00:05:02 verbose #7420 > > inl automation = env.get_environment_variable (join 00:05:02 verbose #7421 > > "AUTOMATION") 00:05:02 verbose #7422 > > if automation = "True" 00:05:02 verbose #7423 > > then date_time.now () |> date_time.ticks |> fun 00:05:02 verbose #7424 > > (date_time.timestamp x) => x |> Some 00:05:02 verbose #7425 > > else None 00:05:02 verbose #7426 > > } 00:05:03 verbose #7427 > > 00:05:03 verbose #7428 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:03 verbose #7429 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:03 verbose #7430 > > │ ### trace_state │ 00:05:03 verbose #7431 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:03 verbose #7432 > > 00:05:03 verbose #7433 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:03 verbose #7434 > > type trace_state = 00:05:03 verbose #7435 > > { 00:05:03 verbose #7436 > > count : mut i64 00:05:03 verbose #7437 > > trace_file : mut (string -> ()) 00:05:03 verbose #7438 > > enabled : mut bool 00:05:03 verbose #7439 > > level : mut trace_level 00:05:03 verbose #7440 > > repl_start : optionm'.option' i64 00:05:03 verbose #7441 > > } 00:05:03 verbose #7442 > > 00:05:03 verbose #7443 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:03 verbose #7444 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:03 verbose #7445 > > │ ### new_trace_state │ 00:05:03 verbose #7446 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:03 verbose #7447 > > 00:05:03 verbose #7448 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:03 verbose #7449 > > let new_trace_state trace_level' = 00:05:03 verbose #7450 > > inl { repl_start trace_level } = read_state () 00:05:03 verbose #7451 > > { 00:05:03 verbose #7452 > > enabled = mut true 00:05:03 verbose #7453 > > count = mut 0i64 00:05:03 verbose #7454 > > level = trace_level |> optionm'.default_value trace_level' |> mut 00:05:03 verbose #7455 > > trace_file = mut ignore 00:05:03 verbose #7456 > > repl_start = repl_start |> optionm'.box 00:05:03 verbose #7457 > > } : trace_state 00:05:03 verbose #7458 > > 00:05:03 verbose #7459 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:03 verbose #7460 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:03 verbose #7461 > > │ ### init_trace_state │ 00:05:03 verbose #7462 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:03 verbose #7463 > > 00:05:03 verbose #7464 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:03 verbose #7465 > > inl init_trace_state trace_level : () = 00:05:03 verbose #7466 > > inl trace_level = trace_level |> optionm'.default_value Verbose 00:05:03 verbose #7467 > > backend_switch { 00:05:03 verbose #7468 > > Fsharp = fun () => 00:05:03 verbose #7469 > > backend_switch { 00:05:03 verbose #7470 > > Fsharp = fun () => 00:05:03 verbose #7471 > > global "module State = let mutable trace_state = None" 00:05:03 verbose #7472 > > } 00:05:03 verbose #7473 > > fun () => 00:05:03 verbose #7474 > > if $'State.trace_state.IsNone' then 00:05:03 verbose #7475 > > inl trace_state = new_trace_state trace_level |> 00:05:03 verbose #7476 > > optionm'.some' 00:05:03 verbose #7477 > > $'State.trace_state <- !trace_state ' : () 00:05:03 verbose #7478 > > |> exec_unit 00:05:03 verbose #7479 > > Python = fun () => 00:05:03 verbose #7480 > > global "class State: trace_state = None" 00:05:03 verbose #7481 > > $'if State.trace_state is None: State.trace_state = 00:05:03 verbose #7482 > > !new_trace_state(!trace_level)' : () 00:05:03 verbose #7483 > > } 00:05:03 verbose #7484 > > 00:05:03 verbose #7485 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:03 verbose #7486 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:03 verbose #7487 > > │ ### get_trace_state_or_init │ 00:05:03 verbose #7488 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:03 verbose #7489 > > 00:05:03 verbose #7490 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:03 verbose #7491 > > inl get_trace_state_or_init trace_level : trace_state = 00:05:03 verbose #7492 > > init_trace_state trace_level 00:05:03 verbose #7493 > > // $'match State.trace_state with Some x -> x | None -> failwith 00:05:03 verbose #7494 > > "trace.get_trace_state_or_init / State.trace_state=None"' 00:05:03 verbose #7495 > > backend_switch { 00:05:03 verbose #7496 > > Fsharp = fun () => 00:05:03 verbose #7497 > > $'State.trace_state.Value' : trace_state 00:05:03 verbose #7498 > > Python = fun () => 00:05:03 verbose #7499 > > $'State.trace_state' : trace_state 00:05:03 verbose #7500 > > } 00:05:03 verbose #7501 > > 00:05:03 verbose #7502 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:03 verbose #7503 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:03 verbose #7504 > > │ ### test_trace_level │ 00:05:03 verbose #7505 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:03 verbose #7506 > > 00:05:03 verbose #7507 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:03 verbose #7508 > > inl test_trace_level level : bool = 00:05:03 verbose #7509 > > inl state = get_trace_state_or_init None 00:05:03 verbose #7510 > > inl level' = *state.level 00:05:03 verbose #7511 > > if *state.enabled |> not 00:05:03 verbose #7512 > > then false 00:05:03 verbose #7513 > > else 00:05:03 verbose #7514 > > inl level : i32 = real real_core.union_tag level 00:05:03 verbose #7515 > > inl level' : i32 = real real_core.union_tag level' 00:05:03 verbose #7516 > > level >= level' 00:05:03 verbose #7517 > > 00:05:03 verbose #7518 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:03 verbose #7519 > > //// test 00:05:03 verbose #7520 > > ///! fsharp 00:05:03 verbose #7521 > > ///! cuda 00:05:03 verbose #7522 > > ///! rust 00:05:03 verbose #7523 > > ///! typescript 00:05:03 verbose #7524 > > ///! python 00:05:03 verbose #7525 > > 00:05:03 verbose #7526 > > test_trace_level Critical |> _assert_eq true 00:05:03 verbose #7527 > > test_trace_level Verbose |> _assert_eq true 00:05:03 verbose #7528 > > 00:05:03 verbose #7529 > > inl level = get_trace_state_or_init None .level 00:05:03 verbose #7530 > > level <- Debug 00:05:03 verbose #7531 > > test_trace_level Verbose |> _assert_eq false 00:05:03 verbose #7532 > > level <- Verbose 00:05:03 verbose #7533 > > test_trace_level Verbose |> _assert_eq true 00:05:17 verbose #7534 > > 00:05:17 verbose #7535 > > ╭─[ 13.16s - return value ]────────────────────────────────────────────────────╮ 00:05:17 verbose #7536 > > │ │ 00:05:17 verbose #7537 > > │ .py output (Cuda): │ 00:05:17 verbose #7538 > > │ __assert_eq / actual: True / expected: True │ 00:05:17 verbose #7539 > > │ __assert_eq / actual: True / expected: True │ 00:05:17 verbose #7540 > > │ __assert_eq / actual: False / expected: False │ 00:05:17 verbose #7541 > > │ __assert_eq / actual: True / expected: True │ 00:05:17 verbose #7542 > > │ │ 00:05:17 verbose #7543 > > │ │ 00:05:17 verbose #7544 > > │ .rs output: │ 00:05:17 verbose #7545 > > │ __assert_eq / actual: true / expected: true │ 00:05:17 verbose #7546 > > │ __assert_eq / actual: true / expected: true │ 00:05:17 verbose #7547 > > │ __assert_eq / actual: false / expected: false │ 00:05:17 verbose #7548 > > │ __assert_eq / actual: true / expected: true │ 00:05:17 verbose #7549 > > │ │ 00:05:17 verbose #7550 > > │ │ 00:05:17 verbose #7551 > > │ .ts output: │ 00:05:17 verbose #7552 > > │ __assert_eq / actual: true / expected: true │ 00:05:17 verbose #7553 > > │ __assert_eq / actual: true / expected: true │ 00:05:17 verbose #7554 > > │ __assert_eq / actual: false / expected: false │ 00:05:17 verbose #7555 > > │ __assert_eq / actual: true / expected: true │ 00:05:17 verbose #7556 > > │ │ 00:05:17 verbose #7557 > > │ │ 00:05:17 verbose #7558 > > │ .py output: │ 00:05:17 verbose #7559 > > │ __assert_eq / actual: true / expected: true │ 00:05:17 verbose #7560 > > │ __assert_eq / actual: true / expected: true │ 00:05:17 verbose #7561 > > │ __assert_eq / actual: false / expected: false │ 00:05:17 verbose #7562 > > │ __assert_eq / actual: true / expected: true │ 00:05:17 verbose #7563 > > │ │ 00:05:17 verbose #7564 > > │ │ 00:05:17 verbose #7565 > > │ │ 00:05:17 verbose #7566 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:17 verbose #7567 > > 00:05:17 verbose #7568 > > ╭─[ 13.16s - stdout ]──────────────────────────────────────────────────────────╮ 00:05:17 verbose #7569 > > │ .fsx output: │ 00:05:17 verbose #7570 > > │ __assert_eq / actual: true / expected: true │ 00:05:17 verbose #7571 > > │ __assert_eq / actual: true / expected: true │ 00:05:17 verbose #7572 > > │ __assert_eq / actual: false / expected: false │ 00:05:17 verbose #7573 > > │ __assert_eq / actual: true / expected: true │ 00:05:17 verbose #7574 > > │ │ 00:05:17 verbose #7575 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:17 verbose #7576 > > 00:05:17 verbose #7577 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:17 verbose #7578 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:17 verbose #7579 > > │ ### trace_raw │ 00:05:17 verbose #7580 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:17 verbose #7581 > > 00:05:17 verbose #7582 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:17 verbose #7583 > > inl trace_raw level fn = 00:05:17 verbose #7584 > > fun () => 00:05:17 verbose #7585 > > inl trace_state = get_trace_state_or_init None 00:05:17 verbose #7586 > > if level |> test_trace_level then 00:05:17 verbose #7587 > > inl count = trace_state.count 00:05:17 verbose #7588 > > fun () => count <- *count + 1 00:05:17 verbose #7589 > > |> exec_unit 00:05:17 verbose #7590 > > 00:05:17 verbose #7591 > > inl text = fn () 00:05:17 verbose #7592 > > open rust 00:05:17 verbose #7593 > > open rust.rust_operators 00:05:17 verbose #7594 > > run_target_args (fun () => text, console.write_line) function 00:05:17 verbose #7595 > > | Rust (Contract) => fun text, _ => 00:05:17 verbose #7596 > > !\\(text, $'$"near_sdk::log\!(\\\"{{}}\\\", $0)"') 00:05:17 verbose #7597 > > | Rust _ => fun text, _ => 00:05:17 verbose #7598 > > !\\(text, $'\@"println\!(""{}"", $0)"') 00:05:17 verbose #7599 > > | _ => fun text, write_line => 00:05:17 verbose #7600 > > text |> write_line 00:05:17 verbose #7601 > > *trace_state.trace_file text 00:05:17 verbose #7602 > > |> exec_unit 00:05:17 verbose #7603 > > 00:05:17 verbose #7604 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:17 verbose #7605 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:17 verbose #7606 > > │ ### trace │ 00:05:17 verbose #7607 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:17 verbose #7608 > > 00:05:17 verbose #7609 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:17 verbose #7610 > > inl trace (level : trace_level) (text_fn : () -> string) (locals : () -> _) = 00:05:17 verbose #7611 > > fun () => 00:05:17 verbose #7612 > > inl trace_state = get_trace_state_or_init None 00:05:17 verbose #7613 > > inl time = 00:05:17 verbose #7614 > > run_target fun target => 00:05:17 verbose #7615 > > match target with 00:05:17 verbose #7616 > > | Rust (Contract) => fun () => 00:05:17 verbose #7617 > > open rust.rust_operators 00:05:17 verbose #7618 > > open rust 00:05:17 verbose #7619 > > inl timestamp : u64 = 00:05:17 verbose #7620 > > !\($'$"near_sdk::env::block_timestamp()"') 00:05:17 verbose #7621 > > inl timestamp = 00:05:17 verbose #7622 > > match trace_state.repl_start |> optionm'.unbox with 00:05:17 verbose #7623 > > | Some repl_start => timestamp - u64 repl_start 00:05:17 verbose #7624 > > | None => timestamp 00:05:17 verbose #7625 > > inl timestamp_s = timestamp / 1_000_000_000 00:05:17 verbose #7626 > > inl s = timestamp_s % 60 00:05:17 verbose #7627 > > inl m = (timestamp_s / 60) % 60 00:05:17 verbose #7628 > > inl h = (timestamp_s / 3600) % 24 00:05:17 verbose #7629 > > inl str : sm'.std_string = 00:05:17 verbose #7630 > > !\\((h, m, s), 00:05:17 verbose #7631 > > $'$"format\!(\\\"{{:02}}:{{:02}}:{{:02}}\\\", $0, $1, $2)"') 00:05:17 verbose #7632 > > str |> sm'.from_std_string 00:05:17 verbose #7633 > > | _ => fun () => 00:05:17 verbose #7634 > > match trace_state.repl_start |> optionm'.unbox with 00:05:17 verbose #7635 > > | Some repl_start => 00:05:17 verbose #7636 > > inl t = 00:05:17 verbose #7637 > > (date_time.now () |> date_time.ticks |> fun 00:05:17 verbose #7638 > > (date_time.timestamp x) => x) 00:05:17 verbose #7639 > > - repl_start |> date_time.time_span 00:05:17 verbose #7640 > > date_time.date_time_milliseconds 00:05:17 verbose #7641 > > 1i32 1i32 1i32 00:05:17 verbose #7642 > > (t |> date_time.hours) 00:05:17 verbose #7643 > > (t |> date_time.minutes) 00:05:17 verbose #7644 > > (t |> date_time.seconds) 00:05:17 verbose #7645 > > (t |> date_time.milliseconds) 00:05:17 verbose #7646 > > | None => date_time.now () 00:05:17 verbose #7647 > > |> date_time.format ( 00:05:17 verbose #7648 > > backend_switch { 00:05:17 verbose #7649 > > Fsharp = fun () => 00:05:17 verbose #7650 > > match target with 00:05:17 verbose #7651 > > | Rust _ => join "hh:mm:ss" 00:05:17 verbose #7652 > > | _ => join "HH:mm:ss" 00:05:17 verbose #7653 > > Python = fun () => "%H:%M:%S" 00:05:17 verbose #7654 > > } 00:05:17 verbose #7655 > > ) 00:05:17 verbose #7656 > > inl level_str = level |> reflection.union_to_string |> sm'.to_lower |> 00:05:17 verbose #7657 > > sm'.pad_left 7 ' ' 00:05:17 verbose #7658 > > inl level_str = 00:05:17 verbose #7659 > > run_target function 00:05:17 verbose #7660 > > | Rust _ => fun () => 00:05:17 verbose #7661 > > open rust 00:05:17 verbose #7662 > > open rust.rust_operators 00:05:17 verbose #7663 > > inl color : rust.ref sm'.str = 00:05:17 verbose #7664 > > match level with 00:05:17 verbose #7665 > > | Verbose => 00:05:17 verbose #7666 > > !\($'"inline_colorization::color_bright_black"') 00:05:17 verbose #7667 > > | Debug => !\($'"inline_colorization::color_bright_blue"') 00:05:17 verbose #7668 > > | Info => !\($'"inline_colorization::color_bright_green"') 00:05:17 verbose #7669 > > | Warning => !\($'"inline_colorization::color_yellow"') 00:05:17 verbose #7670 > > | Critical => !\($'"inline_colorization::color_bright_red"') 00:05:17 verbose #7671 > > inl level_str = level_str |> sm'.as_str 00:05:17 verbose #7672 > > inl color_reset : rust.ref sm'.str = 00:05:17 verbose #7673 > > !\($'"inline_colorization::color_reset"') 00:05:17 verbose #7674 > > $'"\\\"{!color}{!level_str}{!color_reset}\\\""' 00:05:17 verbose #7675 > > |> sm'.format'' 00:05:17 verbose #7676 > > |> sm'.from_std_string 00:05:17 verbose #7677 > > | _ => fun () => 00:05:17 verbose #7678 > > inl color = 00:05:17 verbose #7679 > > match level with 00:05:17 verbose #7680 > > | Verbose => $'"\\u001b[[90m"' 00:05:17 verbose #7681 > > | Debug => $'"\\u001b[[94m"' 00:05:17 verbose #7682 > > | Info => $'"\\u001b[[92m"' 00:05:17 verbose #7683 > > | Warning => $'"\\u001b[[93m"' 00:05:17 verbose #7684 > > | Critical => $'"\\u001b[[91m"' 00:05:17 verbose #7685 > > inl color_reset = join $'"\\u001b[[0m"' 00:05:17 verbose #7686 > > color +. level_str +. color_reset 00:05:17 verbose #7687 > > inl count = *trace_state.count 00:05:17 verbose #7688 > > inl locals = locals () |> sm'.format 00:05:17 verbose #7689 > > backend_switch { 00:05:17 verbose #7690 > > Fsharp = fun () => $'$"{!time} {!level_str} #{!count} %s{!text_fn 00:05:17 verbose #7691 > > ()} / {!locals}"' : string 00:05:17 verbose #7692 > > Python = fun () => $'f"{!time} {!level_str} #{!count} {!text_fn()} 00:05:17 verbose #7693 > > {!locals}"' : string 00:05:17 verbose #7694 > > } 00:05:17 verbose #7695 > > |> sm'.trim_start [[]] 00:05:17 verbose #7696 > > |> sm'.trim_end [[ ' '; '/' ]] 00:05:17 verbose #7697 > > |> trace_raw level 00:05:17 verbose #7698 > > 00:05:17 verbose #7699 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:17 verbose #7700 > > //// test 00:05:17 verbose #7701 > > ///! fsharp 00:05:17 verbose #7702 > > ///! cuda 00:05:17 verbose #7703 > > ///! rust 00:05:17 verbose #7704 > > ///! typescript 00:05:17 verbose #7705 > > ///! python 00:05:17 verbose #7706 > > 00:05:17 verbose #7707 > > trace Debug (fun () => "test1") id 00:05:17 verbose #7708 > > trace Debug (fun () => "test2") id 00:05:17 verbose #7709 > > get_trace_state_or_init None .count 00:05:17 verbose #7710 > > |> fun x => *x 00:05:17 verbose #7711 > > |> _assert_eq 2 00:05:29 verbose #7712 > > 00:05:29 verbose #7713 > > ╭─[ 12.06s - return value ]────────────────────────────────────────────────────╮ 00:05:29 verbose #7714 > > │ │ 00:05:29 verbose #7715 > > │ .py output (Cuda): │ 00:05:29 verbose #7716 > > │ 00:00:01 debug #1 test1 │ 00:05:29 verbose #7717 > > │ 00:00:06 debug #2 test2 │ 00:05:29 verbose #7718 > > │ __assert_eq / actual: 2 / expected: 2 │ 00:05:29 verbose #7719 > > │ │ 00:05:29 verbose #7720 > > │ │ 00:05:29 verbose #7721 > > │ .rs output: │ 00:05:29 verbose #7722 > > │ 00:00:00 debug #1 test1 │ 00:05:29 verbose #7723 > > │ 00:00:00 debug #2 test2 │ 00:05:29 verbose #7724 > > │ __assert_eq / actual: 2 / expected: 2 │ 00:05:29 verbose #7725 > > │ │ 00:05:29 verbose #7726 > > │ │ 00:05:29 verbose #7727 > > │ .ts output: │ 00:05:29 verbose #7728 > > │ 00:00:00 debug #1 test1 │ 00:05:29 verbose #7729 > > │ 00:00:00 debug #2 test2 │ 00:05:29 verbose #7730 > > │ __assert_eq / actual: 2 / expected: 2 │ 00:05:29 verbose #7731 > > │ │ 00:05:29 verbose #7732 > > │ │ 00:05:29 verbose #7733 > > │ .py output: │ 00:05:29 verbose #7734 > > │ 00:00:00 debug #1 test1 │ 00:05:29 verbose #7735 > > │ 00:00:00 debug #2 test2 │ 00:05:29 verbose #7736 > > │ __assert_eq / actual: 2 / expected: 2 │ 00:05:29 verbose #7737 > > │ │ 00:05:29 verbose #7738 > > │ │ 00:05:29 verbose #7739 > > │ │ 00:05:29 verbose #7740 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:29 verbose #7741 > > 00:05:29 verbose #7742 > > ╭─[ 12.06s - stdout ]──────────────────────────────────────────────────────────╮ 00:05:29 verbose #7743 > > │ .fsx output: │ 00:05:29 verbose #7744 > > │ 00:00:00 debug #1 test1 │ 00:05:29 verbose #7745 > > │ 00:00:00 debug #2 test2 │ 00:05:29 verbose #7746 > > │ __assert_eq / actual: 2L / expected: 2L │ 00:05:29 verbose #7747 > > │ │ 00:05:29 verbose #7748 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:29 verbose #7749 > > 00:05:29 verbose #7750 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:29 verbose #7751 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:29 verbose #7752 > > │ ## main │ 00:05:29 verbose #7753 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:29 verbose #7754 > > 00:05:29 verbose #7755 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:29 verbose #7756 > > inl main () = 00:05:29 verbose #7757 > > init_trace_state None 00:05:29 verbose #7758 > > inl trace level text_fn (locals : () -> string) = trace level text_fn locals 00:05:29 verbose #7759 > > $'let trace x = !trace x' : () 00:05:29 verbose #7760 > 00:00:31 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 22854 } 00:05:29 verbose #7761 > 00:00:31 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:05:29 verbose #7762 > "nbconvert", 00:05:29 verbose #7763 > "/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.ipynb", 00:05:29 verbose #7764 > "--to", 00:05:29 verbose #7765 > "html", 00:05:29 verbose #7766 > "--HTMLExporter.theme=dark", 00:05:29 verbose #7767 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:30 verbose #7768 > 00:00:32 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.ipynb to html 00:05:30 verbose #7769 > 00:00:32 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:05:30 verbose #7770 > 00:00:32 verbose #7 ! validate(nb) 00:05:30 verbose #7771 > 00:00:32 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:05:30 verbose #7772 > 00:00:32 verbose #9 ! return _pygments_highlight( 00:05:31 verbose #7773 > 00:00:32 verbose #10 ! [NbConvertApp] Writing 320630 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.html 00:05:31 verbose #7774 > 00:00:32 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 894 } 00:05:31 verbose #7775 > 00:00:32 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 894 } 00:05:31 verbose #7776 > 00:00:32 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:05:31 verbose #7777 > "-c", 00:05:31 verbose #7778 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:05:31 verbose #7779 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:31 verbose #7780 > 00:00:33 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:05:31 verbose #7781 > 00:00:33 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:05:31 verbose #7782 > 00:00:33 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 23807 } 00:05:31 debug #7783 runtime.execute_with_options_async / { exit_code = 0; output_length = 27448 } 00:05:31 debug #9 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path trace.dib --retries 3 00:05:31 debug #7784 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path am'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:31 verbose #7785 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "am'.dib", "--retries", "3"])) } 00:05:31 verbose #7786 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:05:31 verbose #7787 > "repl", 00:05:31 verbose #7788 > "--exit-after-run", 00:05:31 verbose #7789 > "--run", 00:05:31 verbose #7790 > "/home/runner/work/polyglot/polyglot/lib/spiral/am'.dib", 00:05:31 verbose #7791 > "--output-path", 00:05:31 verbose #7792 > "/home/runner/work/polyglot/polyglot/lib/spiral/am'.dib.ipynb", 00:05:31 verbose #7793 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/am'.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/am'.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:05:32 verbose #7794 > > 00:05:32 verbose #7795 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:32 verbose #7796 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:32 verbose #7797 > > │ # am' │ 00:05:32 verbose #7798 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:35 verbose #7799 > > 00:05:35 verbose #7800 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:35 verbose #7801 > > //// test 00:05:35 verbose #7802 > > 00:05:35 verbose #7803 > > open testing 00:05:35 verbose #7804 > > 00:05:35 verbose #7805 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:35 verbose #7806 > > open rust 00:05:35 verbose #7807 > > open rust_operators 00:05:36 verbose #7808 > > 00:05:36 verbose #7809 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:36 verbose #7810 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:36 verbose #7811 > > │ ## am' │ 00:05:36 verbose #7812 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:36 verbose #7813 > > 00:05:36 verbose #7814 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:36 verbose #7815 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:36 verbose #7816 > > │ ### length │ 00:05:36 verbose #7817 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:36 verbose #7818 > > 00:05:36 verbose #7819 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:36 verbose #7820 > > inl length forall dim {int} el. (a : a dim el) : dim = 00:05:36 verbose #7821 > > a |> length 00:05:36 verbose #7822 > > 00:05:36 verbose #7823 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:36 verbose #7824 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:36 verbose #7825 > > │ ### index │ 00:05:36 verbose #7826 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:36 verbose #7827 > > 00:05:36 verbose #7828 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:36 verbose #7829 > > inl index forall dim {int} el. (i : dim) (a : a dim el) : el = 00:05:36 verbose #7830 > > backend_switch { 00:05:36 verbose #7831 > > Fsharp = fun () => index a i 00:05:36 verbose #7832 > > Python = fun () => $'!a[[!i]]' : el 00:05:36 verbose #7833 > > } 00:05:36 verbose #7834 > > 00:05:36 verbose #7835 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:36 verbose #7836 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:36 verbose #7837 > > │ ### index_base │ 00:05:36 verbose #7838 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:36 verbose #7839 > > 00:05:36 verbose #7840 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:36 verbose #7841 > > inl index_base forall el. (i : int) (ar : array_base el) : el = 00:05:36 verbose #7842 > > ar |> a |> index i 00:05:36 verbose #7843 > > 00:05:36 verbose #7844 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:36 verbose #7845 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:36 verbose #7846 > > │ ### base │ 00:05:36 verbose #7847 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:36 verbose #7848 > > 00:05:36 verbose #7849 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:36 verbose #7850 > > inl base forall dim {int} el. ((a a) : a dim el) : array_base el = 00:05:36 verbose #7851 > > a 00:05:36 verbose #7852 > > 00:05:36 verbose #7853 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:36 verbose #7854 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:36 verbose #7855 > > │ ### base' │ 00:05:36 verbose #7856 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:36 verbose #7857 > > 00:05:36 verbose #7858 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:36 verbose #7859 > > inl base' forall el. ((a a) : a int el) : array_base el = 00:05:36 verbose #7860 > > a 00:05:36 verbose #7861 > > 00:05:36 verbose #7862 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:36 verbose #7863 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:36 verbose #7864 > > │ ### generic_equable │ 00:05:36 verbose #7865 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:36 verbose #7866 > > 00:05:36 verbose #7867 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:36 verbose #7868 > > inl generic_equable x1 x2 = 00:05:36 verbose #7869 > > if length x1 <>.. length x2 00:05:36 verbose #7870 > > then false 00:05:36 verbose #7871 > > else 00:05:36 verbose #7872 > > let rec loop i = 00:05:36 verbose #7873 > > if i < length x1 00:05:36 verbose #7874 > > then index i x1 = index i x2 && loop (i + 1) 00:05:36 verbose #7875 > > else true 00:05:36 verbose #7876 > > loop 0 00:05:36 verbose #7877 > > 00:05:36 verbose #7878 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:36 verbose #7879 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:36 verbose #7880 > > │ ### equable │ 00:05:36 verbose #7881 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:36 verbose #7882 > > 00:05:36 verbose #7883 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:36 verbose #7884 > > instance equable a dim {number; int} t = generic_equable 00:05:36 verbose #7885 > > 00:05:36 verbose #7886 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:36 verbose #7887 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:36 verbose #7888 > > │ ### append │ 00:05:36 verbose #7889 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:36 verbose #7890 > > 00:05:36 verbose #7891 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:36 verbose #7892 > > instance append a dim {int; number} t = am.append 00:05:36 verbose #7893 > > 00:05:36 verbose #7894 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:36 verbose #7895 > > //// test 00:05:36 verbose #7896 > > ///! fsharp 00:05:36 verbose #7897 > > ///! cuda 00:05:36 verbose #7898 > > ///! rust 00:05:36 verbose #7899 > > ///! typescript 00:05:36 verbose #7900 > > ///! python 00:05:36 verbose #7901 > > 00:05:36 verbose #7902 > > a' ;[[ -1i64; 0 ]] ++ a' ;[[ 1; 2 ]] 00:05:36 verbose #7903 > > |> _assert_eq (a' ;[[ -1; 0; 1; 2 ]]) 00:05:50 verbose #7904 > > 00:05:50 verbose #7905 > > ╭─[ 14.06s - return value ]────────────────────────────────────────────────────╮ 00:05:50 verbose #7906 > > │ │ 00:05:50 verbose #7907 > > │ .py output (Cuda): │ 00:05:50 verbose #7908 > > │ Traceback (most recent call last): │ 00:05:50 verbose #7909 > > │ File │ 00:05:50 verbose #7910 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/68b9bb09c50 │ 00:05:50 verbose #7911 > > │ 2ee0e564185d4d3fcabb90047190021dd0f7720e2e9dc1b639e8e/main.py", line 159, in │ 00:05:50 verbose #7912 > > │ <module> │ 00:05:50 verbose #7913 > > │ if __name__ == '__main__': result = main(); None if result is None │ 00:05:50 verbose #7914 > > │ else print(result) │ 00:05:50 verbose #7915 > > │ ^^^^^^ │ 00:05:50 verbose #7916 > > │ File │ 00:05:50 verbose #7917 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/68b9bb09c50 │ 00:05:50 verbose #7918 > > │ 2ee0e564185d4d3fcabb90047190021dd0f7720e2e9dc1b639e8e/main.py", line 157, in │ 00:05:50 verbose #7919 > > │ main │ 00:05:50 verbose #7920 > > │ return method0() │ 00:05:50 verbose #7921 > > │ ^^^^^^^^^ │ 00:05:50 verbose #7922 > > │ File │ 00:05:50 verbose #7923 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/68b9bb09c50 │ 00:05:50 verbose #7924 > > │ 2ee0e564185d4d3fcabb90047190021dd0f7720e2e9dc1b639e8e/main.py", line 96, in │ 00:05:50 verbose #7925 > > │ method0 │ 00:05:50 verbose #7926 > > │ v0 = cp.array([-1, 0],dtype=cp.int64) │ 00:05:50 verbose #7927 > > │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ │ 00:05:50 verbose #7928 > > │ File │ 00:05:50 verbose #7929 > > │ "/opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/cupy/_c │ 00:05:50 verbose #7930 > > │ reation/from_data.py", line 53, in array │ 00:05:50 verbose #7931 > > │ return _core.array(obj, dtype, copy, order, subok, ndmin, blocking)38;5;2m│ 00:05:50 verbose #7932 > > │ 0m │ 00:05:50 verbose #7933 > > │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^38;5;2m│ 00:05:50 verbose #7934 > > │ 0m │ 00:05:50 verbose #7935 > > │ File "cupy/_core/core.pyx", line 2408, in cupy._core.core.array │ 00:05:50 verbose #7936 > > │ File "cupy/_core/core.pyx", line 2435, in cupy._core.core.array │ 00:05:50 verbose #7937 > > │ File "cupy/_core/core.pyx", line 2578, in │ 00:05:50 verbose #7938 > > │ cupy._core.core._array_default │ 00:05:50 verbose #7939 > > │ File "cupy/_core/core.pyx", line 137, in │ 00:05:50 verbose #7940 > > │ cupy._core.core.ndarray.__new__ │ 00:05:50 verbose #7941 > > │ File "cupy/_core/core.pyx", line 225, in │ 00:05:50 verbose #7942 > > │ cupy._core.core._ndarray_base._init │ 00:05:50 verbose #7943 > > │ File "cupy/cuda/memory.pyx", line 738, in cupy.cuda.memory.alloc │ 00:05:50 verbose #7944 > > │ File "cupy/cuda/memory.pyx", line 1424, in │ 00:05:50 verbose #7945 > > │ cupy.cuda.memory.MemoryPool.malloc │ 00:05:50 verbose #7946 > > │ File "cupy/cuda/memory.pyx", line 1444, in │ 00:05:50 verbose #7947 > > │ cupy.cuda.memory.MemoryPool.malloc │ 00:05:50 verbose #7948 > > │ File "cupy/cuda/device.pyx", line 40, in cupy.cuda.device.get_device_id │ 00:05:50 verbose #7949 > > │ [0m │ 00:05:50 verbose #7950 > > │ File "cupy_backends/cuda/api/runtime.pyx", line 202, in │ 00:05:50 verbose #7951 > > │ cupy_backends.cuda.api.runtime.getDevice │ 00:05:50 verbose #7952 > > │ File "cupy_backends/cuda/api/runtime.pyx", line 146, in │ 00:05:50 verbose #7953 > > │ cupy_backends.cuda.api.runtime.check_status │ 00:05:50 verbose #7954 > > │ cupy_backends.cuda.api.runtime.CUDARuntimeError: │ 00:05:50 verbose #7955 > > │ cudaErrorInsufficientDriver: CUDA driver version is insufficient for CUDA │ 00:05:50 verbose #7956 > > │ runtime version │ 00:05:50 verbose #7957 > > │ │ 00:05:50 verbose #7958 > > │ .rs output: │ 00:05:50 verbose #7959 > > │ __assert_eq / actual: Array(MutCell([-1, 0, 1, 2])) / expected: │ 00:05:50 verbose #7960 > > │ Array(MutCell([-1, 0, 1, 2])) │ 00:05:50 verbose #7961 > > │ │ 00:05:50 verbose #7962 > > │ .ts output: │ 00:05:50 verbose #7963 > > │ __assert_eq / actual: -1,0,1,2 / expected: -1,0,1,2 │ 00:05:50 verbose #7964 > > │ │ 00:05:50 verbose #7965 > > │ .py output: │ 00:05:50 verbose #7966 > > │ __assert_eq / actual: [-1, 0, 1, 2] / expected: array('q', [-1, 0, 1, 2]) │ 00:05:50 verbose #7967 > > │ │ 00:05:50 verbose #7968 > > │ │ 00:05:50 verbose #7969 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:50 verbose #7970 > > 00:05:50 verbose #7971 > > ╭─[ 14.07s - stdout ]──────────────────────────────────────────────────────────╮ 00:05:50 verbose #7972 > > │ .fsx output: │ 00:05:50 verbose #7973 > > │ __assert_eq / actual: [|-1L; 0L; 1L; 2L|] / expected: [|-1L; 0L; 1L; 2L|] │ 00:05:50 verbose #7974 > > │ │ 00:05:50 verbose #7975 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:50 verbose #7976 > > 00:05:50 verbose #7977 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:50 verbose #7978 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:50 verbose #7979 > > │ ### map_base │ 00:05:50 verbose #7980 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:50 verbose #7981 > > 00:05:50 verbose #7982 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:50 verbose #7983 > > inl map_base forall t u. (fn : t -> u) (x : array_base t) : array_base u = 00:05:50 verbose #7984 > > a x 00:05:50 verbose #7985 > > |> am.map fn 00:05:50 verbose #7986 > > |> fun (a x : _ int _) => x 00:05:51 verbose #7987 > > 00:05:51 verbose #7988 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:51 verbose #7989 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:51 verbose #7990 > > │ ### collect │ 00:05:51 verbose #7991 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:51 verbose #7992 > > 00:05:51 verbose #7993 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:51 verbose #7994 > > inl collect forall t r. (fn : t -> a int r) (items : a int t) : a int r = 00:05:51 verbose #7995 > > items 00:05:51 verbose #7996 > > |> am.map fn 00:05:51 verbose #7997 > > |> am.fold (++) (a ;[[]]) 00:05:51 verbose #7998 > > 00:05:51 verbose #7999 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:51 verbose #8000 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:51 verbose #8001 > > │ ### init │ 00:05:51 verbose #8002 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:51 verbose #8003 > > 00:05:51 verbose #8004 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:51 verbose #8005 > > inl init n : array_base _ = 00:05:51 verbose #8006 > > am.init n id 00:05:51 verbose #8007 > > |> fun (a x : _ int _) => x 00:05:51 verbose #8008 > > 00:05:51 verbose #8009 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:51 verbose #8010 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:05:51 verbose #8011 > > │ ### choose │ 00:05:51 verbose #8012 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:05:51 verbose #8013 > > 00:05:51 verbose #8014 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:51 verbose #8015 > > inl choose f l = 00:05:51 verbose #8016 > > (l, [[]]) 00:05:51 verbose #8017 > > ||> am.foldBack fun x acc => 00:05:51 verbose #8018 > > match f x with 00:05:51 verbose #8019 > > | Some y => y :: acc 00:05:51 verbose #8020 > > | None => acc 00:05:51 verbose #8021 > > |> listm.toArray 00:05:51 verbose #8022 > > 00:05:51 verbose #8023 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:51 verbose #8024 > > //// test 00:05:51 verbose #8025 > > ///! fsharp 00:05:51 verbose #8026 > > ///! cuda 00:05:51 verbose #8027 > > ////! rust // v0.get_mut()[[v2.get().clone() as usize]] = match 00:05:51 verbose #8028 > > v1.get().clone().as_ref() { ^ expected `i32`, found `usize` 00:05:51 verbose #8029 > > ///! typescript 00:05:51 verbose #8030 > > ///! python 00:05:51 verbose #8031 > > 00:05:51 verbose #8032 > > 10 00:05:51 verbose #8033 > > |> init 00:05:51 verbose #8034 > > |> fun x => a x : _ int _ 00:05:51 verbose #8035 > > |> choose (fun x => if x % 2 = 0 then Some x else None) 00:05:51 verbose #8036 > > |> _assert_eq (a' ;[[ 0; 2; 4; 6; 8 ]]) 00:06:00 verbose #8037 > > 00:06:00 verbose #8038 > > ╭─[ 8.71s - return value ]─────────────────────────────────────────────────────╮ 00:06:00 verbose #8039 > > │ │ 00:06:00 verbose #8040 > > │ .py output (Cuda): │ 00:06:00 verbose #8041 > > │ Traceback (most recent call last): │ 00:06:00 verbose #8042 > > │ File │ 00:06:00 verbose #8043 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/9d4ad739531 │ 00:06:00 verbose #8044 > > │ a383d55562d2d54e83a808122db5c2290b3d9af7adfba08f40e71/main.py", line 240, in │ 00:06:00 verbose #8045 > > │ <module> │ 00:06:00 verbose #8046 > > │ if __name__ == '__main__': result = main(); None if result is None │ 00:06:00 verbose #8047 > > │ else print(result) │ 00:06:00 verbose #8048 > > │ ^^^^^^ │ 00:06:00 verbose #8049 > > │ File │ 00:06:00 verbose #8050 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/9d4ad739531 │ 00:06:00 verbose #8051 > > │ a383d55562d2d54e83a808122db5c2290b3d9af7adfba08f40e71/main.py", line 238, in │ 00:06:00 verbose #8052 > > │ main │ 00:06:00 verbose #8053 > > │ return method0() │ 00:06:00 verbose #8054 > > │ ^^^^^^^^^ │ 00:06:00 verbose #8055 > > │ File │ 00:06:00 verbose #8056 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/9d4ad739531 │ 00:06:00 verbose #8057 > > │ a383d55562d2d54e83a808122db5c2290b3d9af7adfba08f40e71/main.py", line 155, in │ 00:06:00 verbose #8058 > > │ method0 │ 00:06:00 verbose #8059 > > │ v0 = cp.empty(10,dtype=cp.int32) │ 00:06:00 verbose #8060 > > │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ │ 00:06:00 verbose #8061 > > │ File │ 00:06:00 verbose #8062 > > │ "/opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/cupy/_c │ 00:06:00 verbose #8063 > > │ reation/basic.py", line 31, in empty │ 00:06:00 verbose #8064 > > │ return cupy.ndarray(shape, dtype, order=order) │ 00:06:00 verbose #8065 > > │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ │ 00:06:00 verbose #8066 > > │ File "cupy/_core/core.pyx", line 137, in │ 00:06:00 verbose #8067 > > │ cupy._core.core.ndarray.__new__ │ 00:06:00 verbose #8068 > > │ File "cupy/_core/core.pyx", line 225, in │ 00:06:00 verbose #8069 > > │ cupy._core.core._ndarray_base._init │ 00:06:00 verbose #8070 > > │ File "cupy/cuda/memory.pyx", line 738, in cupy.cuda.memory.alloc │ 00:06:00 verbose #8071 > > │ File "cupy/cuda/memory.pyx", line 1424, in │ 00:06:00 verbose #8072 > > │ cupy.cuda.memory.MemoryPool.malloc │ 00:06:00 verbose #8073 > > │ File "cupy/cuda/memory.pyx", line 1444, in │ 00:06:00 verbose #8074 > > │ cupy.cuda.memory.MemoryPool.malloc │ 00:06:00 verbose #8075 > > │ File "cupy/cuda/device.pyx", line 40, in cupy.cuda.device.get_device_id │ 00:06:00 verbose #8076 > > │ [0m │ 00:06:00 verbose #8077 > > │ File "cupy_backends/cuda/api/runtime.pyx", line 202, in │ 00:06:00 verbose #8078 > > │ cupy_backends.cuda.api.runtime.getDevice │ 00:06:00 verbose #8079 > > │ File "cupy_backends/cuda/api/runtime.pyx", line 146, in │ 00:06:00 verbose #8080 > > │ cupy_backends.cuda.api.runtime.check_status │ 00:06:00 verbose #8081 > > │ cupy_backends.cuda.api.runtime.CUDARuntimeError: │ 00:06:00 verbose #8082 > > │ cudaErrorInsufficientDriver: CUDA driver version is insufficient for CUDA │ 00:06:00 verbose #8083 > > │ runtime version │ 00:06:00 verbose #8084 > > │ │ 00:06:00 verbose #8085 > > │ .ts output: │ 00:06:00 verbose #8086 > > │ __assert_eq / actual: 0,2,4,6,8 / expected: 0,2,4,6,8 │ 00:06:00 verbose #8087 > > │ │ 00:06:00 verbose #8088 > > │ .py output: │ 00:06:00 verbose #8089 > > │ __assert_eq / actual: [0, 2, 4, 6, 8] / expected: array('l', [0, 2, 4, 6, │ 00:06:00 verbose #8090 > > │ 8]) │ 00:06:00 verbose #8091 > > │ │ 00:06:00 verbose #8092 > > │ │ 00:06:00 verbose #8093 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:00 verbose #8094 > > 00:06:00 verbose #8095 > > ╭─[ 8.71s - stdout ]───────────────────────────────────────────────────────────╮ 00:06:00 verbose #8096 > > │ .fsx output: │ 00:06:00 verbose #8097 > > │ __assert_eq / actual: [|0; 2; 4; 6; 8|] / expected: [|0; 2; 4; 6; 8|] │ 00:06:00 verbose #8098 > > │ │ 00:06:00 verbose #8099 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:00 verbose #8100 > > 00:06:00 verbose #8101 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:00 verbose #8102 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:00 verbose #8103 > > │ ### sum │ 00:06:00 verbose #8104 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:00 verbose #8105 > > 00:06:00 verbose #8106 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:00 verbose #8107 > > inl sum a = 00:06:00 verbose #8108 > > a |> am.fold (+) 0 00:06:00 verbose #8109 > > 00:06:00 verbose #8110 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:00 verbose #8111 > > //// test 00:06:00 verbose #8112 > > ///! fsharp 00:06:00 verbose #8113 > > ///! cuda 00:06:00 verbose #8114 > > ///! rust 00:06:00 verbose #8115 > > ///! typescript 00:06:00 verbose #8116 > > ///! python 00:06:00 verbose #8117 > > 00:06:00 verbose #8118 > > 10 00:06:00 verbose #8119 > > |> init 00:06:00 verbose #8120 > > |> fun x => a x : _ int _ 00:06:00 verbose #8121 > > |> sum 00:06:00 verbose #8122 > > |> _assert_eq 45 00:06:11 verbose #8123 > > 00:06:11 verbose #8124 > > ╭─[ 11.61s - return value ]────────────────────────────────────────────────────╮ 00:06:11 verbose #8125 > > │ │ 00:06:11 verbose #8126 > > │ .py output (Cuda): │ 00:06:11 verbose #8127 > > │ Traceback (most recent call last): │ 00:06:11 verbose #8128 > > │ File │ 00:06:11 verbose #8129 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/d2ff92bc98e │ 00:06:11 verbose #8130 > > │ a55b61391a67d3568f034e4f65522e461ab8b56245677d24c8308/main.py", line 124, in │ 00:06:11 verbose #8131 > > │ <module> │ 00:06:11 verbose #8132 > > │ if __name__ == '__main__': result = main(); None if result is None │ 00:06:11 verbose #8133 > > │ else print(result) │ 00:06:11 verbose #8134 > > │ ^^^^^^ │ 00:06:11 verbose #8135 > > │ File │ 00:06:11 verbose #8136 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/d2ff92bc98e │ 00:06:11 verbose #8137 > > │ a55b61391a67d3568f034e4f65522e461ab8b56245677d24c8308/main.py", line 122, in │ 00:06:11 verbose #8138 > > │ main │ 00:06:11 verbose #8139 > > │ return method0() │ 00:06:11 verbose #8140 > > │ ^^^^^^^^^ │ 00:06:11 verbose #8141 > > │ File │ 00:06:11 verbose #8142 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/d2ff92bc98e │ 00:06:11 verbose #8143 > > │ a55b61391a67d3568f034e4f65522e461ab8b56245677d24c8308/main.py", line 77, in │ 00:06:11 verbose #8144 > > │ method0 │ 00:06:11 verbose #8145 > > │ v0 = cp.empty(10,dtype=cp.int32) │ 00:06:11 verbose #8146 > > │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ │ 00:06:11 verbose #8147 > > │ File │ 00:06:11 verbose #8148 > > │ "/opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/cupy/_c │ 00:06:11 verbose #8149 > > │ reation/basic.py", line 31, in empty │ 00:06:11 verbose #8150 > > │ return cupy.ndarray(shape, dtype, order=order) │ 00:06:11 verbose #8151 > > │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ │ 00:06:11 verbose #8152 > > │ File "cupy/_core/core.pyx", line 137, in │ 00:06:11 verbose #8153 > > │ cupy._core.core.ndarray.__new__ │ 00:06:11 verbose #8154 > > │ File "cupy/_core/core.pyx", line 225, in │ 00:06:11 verbose #8155 > > │ cupy._core.core._ndarray_base._init │ 00:06:11 verbose #8156 > > │ File "cupy/cuda/memory.pyx", line 738, in cupy.cuda.memory.alloc │ 00:06:11 verbose #8157 > > │ File "cupy/cuda/memory.pyx", line 1424, in │ 00:06:11 verbose #8158 > > │ cupy.cuda.memory.MemoryPool.malloc │ 00:06:11 verbose #8159 > > │ File "cupy/cuda/memory.pyx", line 1444, in │ 00:06:11 verbose #8160 > > │ cupy.cuda.memory.MemoryPool.malloc │ 00:06:11 verbose #8161 > > │ File "cupy/cuda/device.pyx", line 40, in cupy.cuda.device.get_device_id │ 00:06:11 verbose #8162 > > │ [0m │ 00:06:11 verbose #8163 > > │ File "cupy_backends/cuda/api/runtime.pyx", line 202, in │ 00:06:11 verbose #8164 > > │ cupy_backends.cuda.api.runtime.getDevice │ 00:06:11 verbose #8165 > > │ File "cupy_backends/cuda/api/runtime.pyx", line 146, in │ 00:06:11 verbose #8166 > > │ cupy_backends.cuda.api.runtime.check_status │ 00:06:11 verbose #8167 > > │ cupy_backends.cuda.api.runtime.CUDARuntimeError: │ 00:06:11 verbose #8168 > > │ cudaErrorInsufficientDriver: CUDA driver version is insufficient for CUDA │ 00:06:11 verbose #8169 > > │ runtime version │ 00:06:11 verbose #8170 > > │ │ 00:06:11 verbose #8171 > > │ .rs output: │ 00:06:11 verbose #8172 > > │ __assert_eq / actual: 45 / expected: 45 │ 00:06:11 verbose #8173 > > │ │ 00:06:11 verbose #8174 > > │ .ts output: │ 00:06:11 verbose #8175 > > │ __assert_eq / actual: 45 / expected: 45 │ 00:06:11 verbose #8176 > > │ │ 00:06:11 verbose #8177 > > │ .py output: │ 00:06:11 verbose #8178 > > │ __assert_eq / actual: 45 / expected: 45 │ 00:06:11 verbose #8179 > > │ │ 00:06:11 verbose #8180 > > │ │ 00:06:11 verbose #8181 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:11 verbose #8182 > > 00:06:11 verbose #8183 > > ╭─[ 11.61s - stdout ]──────────────────────────────────────────────────────────╮ 00:06:11 verbose #8184 > > │ .fsx output: │ 00:06:11 verbose #8185 > > │ __assert_eq / actual: 45 / expected: 45 │ 00:06:11 verbose #8186 > > │ │ 00:06:11 verbose #8187 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:11 verbose #8188 > > 00:06:11 verbose #8189 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:11 verbose #8190 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:11 verbose #8191 > > │ ### init_series │ 00:06:11 verbose #8192 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:11 verbose #8193 > > 00:06:11 verbose #8194 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:11 verbose #8195 > > inl init_series start end inc : array_base _ = 00:06:11 verbose #8196 > > inl total = conv ((end - start) / inc) + 1 00:06:11 verbose #8197 > > am.init total (conv >> (*) inc >> (+) start) 00:06:11 verbose #8198 > > |> fun (a x : _ int _) => x 00:06:11 verbose #8199 > > 00:06:11 verbose #8200 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:11 verbose #8201 > > //// test 00:06:11 verbose #8202 > > ///! fsharp 00:06:11 verbose #8203 > > ///! cuda 00:06:11 verbose #8204 > > ///! rust 00:06:11 verbose #8205 > > ///! typescript 00:06:11 verbose #8206 > > ///! python 00:06:11 verbose #8207 > > 00:06:11 verbose #8208 > > init_series 0 4 2 00:06:11 verbose #8209 > > |> _assert_eq' ;[[ 0i32; 2; 4 ]] 00:06:22 verbose #8210 > > 00:06:22 verbose #8211 > > ╭─[ 10.57s - return value ]────────────────────────────────────────────────────╮ 00:06:22 verbose #8212 > > │ │ 00:06:22 verbose #8213 > > │ .py output (Cuda): │ 00:06:22 verbose #8214 > > │ Traceback (most recent call last): │ 00:06:22 verbose #8215 > > │ File │ 00:06:22 verbose #8216 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/cc6bc9f685a │ 00:06:22 verbose #8217 > > │ 23ff0387e2d5adeefc74ebf5530960aa10194948f6cbeed681926/main.py", line 101, in │ 00:06:22 verbose #8218 > > │ <module> │ 00:06:22 verbose #8219 > > │ if __name__ == '__main__': result = main(); None if result is None │ 00:06:22 verbose #8220 > > │ else print(result) │ 00:06:22 verbose #8221 > > │ ^^^^^^ │ 00:06:22 verbose #8222 > > │ File │ 00:06:22 verbose #8223 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/cc6bc9f685a │ 00:06:22 verbose #8224 > > │ 23ff0387e2d5adeefc74ebf5530960aa10194948f6cbeed681926/main.py", line 99, in │ 00:06:22 verbose #8225 > > │ main │ 00:06:22 verbose #8226 > > │ return method0() │ 00:06:22 verbose #8227 > > │ ^^^^^^^^^ │ 00:06:22 verbose #8228 > > │ File │ 00:06:22 verbose #8229 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/cc6bc9f685a │ 00:06:22 verbose #8230 > > │ 23ff0387e2d5adeefc74ebf5530960aa10194948f6cbeed681926/main.py", line 67, in │ 00:06:22 verbose #8231 > > │ method0 │ 00:06:22 verbose #8232 > > │ v0 = cp.empty(3,dtype=cp.int32) │ 00:06:22 verbose #8233 > > │ ^^^^^^^^^^^^^^^^^^^^^^^^^^ │ 00:06:22 verbose #8234 > > │ File │ 00:06:22 verbose #8235 > > │ "/opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/cupy/_c │ 00:06:22 verbose #8236 > > │ reation/basic.py", line 31, in empty │ 00:06:22 verbose #8237 > > │ return cupy.ndarray(shape, dtype, order=order) │ 00:06:22 verbose #8238 > > │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ │ 00:06:22 verbose #8239 > > │ File "cupy/_core/core.pyx", line 137, in │ 00:06:22 verbose #8240 > > │ cupy._core.core.ndarray.__new__ │ 00:06:22 verbose #8241 > > │ File "cupy/_core/core.pyx", line 225, in │ 00:06:22 verbose #8242 > > │ cupy._core.core._ndarray_base._init │ 00:06:22 verbose #8243 > > │ File "cupy/cuda/memory.pyx", line 738, in cupy.cuda.memory.alloc │ 00:06:22 verbose #8244 > > │ File "cupy/cuda/memory.pyx", line 1424, in │ 00:06:22 verbose #8245 > > │ cupy.cuda.memory.MemoryPool.malloc │ 00:06:22 verbose #8246 > > │ File "cupy/cuda/memory.pyx", line 1444, in │ 00:06:22 verbose #8247 > > │ cupy.cuda.memory.MemoryPool.malloc │ 00:06:22 verbose #8248 > > │ File "cupy/cuda/device.pyx", line 40, in cupy.cuda.device.get_device_id │ 00:06:22 verbose #8249 > > │ [0m │ 00:06:22 verbose #8250 > > │ File "cupy_backends/cuda/api/runtime.pyx", line 202, in │ 00:06:22 verbose #8251 > > │ cupy_backends.cuda.api.runtime.getDevice │ 00:06:22 verbose #8252 > > │ File "cupy_backends/cuda/api/runtime.pyx", line 146, in │ 00:06:22 verbose #8253 > > │ cupy_backends.cuda.api.runtime.check_status │ 00:06:22 verbose #8254 > > │ cupy_backends.cuda.api.runtime.CUDARuntimeError: │ 00:06:22 verbose #8255 > > │ cudaErrorInsufficientDriver: CUDA driver version is insufficient for CUDA │ 00:06:22 verbose #8256 > > │ runtime version │ 00:06:22 verbose #8257 > > │ │ 00:06:22 verbose #8258 > > │ .rs output: │ 00:06:22 verbose #8259 > > │ __assert_eq' / actual: Array(MutCell([0, 2, 4])) / expected: Array(MutCell([ │ 00:06:22 verbose #8260 > > │ 0, 2, 4])) │ 00:06:22 verbose #8261 > > │ │ 00:06:22 verbose #8262 > > │ .ts output: │ 00:06:22 verbose #8263 > > │ __assert_eq' / actual: 0,2,4 / expected: 0,2,4 │ 00:06:22 verbose #8264 > > │ │ 00:06:22 verbose #8265 > > │ .py output: │ 00:06:22 verbose #8266 > > │ __assert_eq' / actual: [0, 2, 4] / expected: array('l', [0, 2, 4]) │ 00:06:22 verbose #8267 > > │ │ 00:06:22 verbose #8268 > > │ │ 00:06:22 verbose #8269 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:22 verbose #8270 > > 00:06:22 verbose #8271 > > ╭─[ 10.57s - stdout ]──────────────────────────────────────────────────────────╮ 00:06:22 verbose #8272 > > │ .fsx output: │ 00:06:22 verbose #8273 > > │ __assert_eq' / actual: [|0; 2; 4|] / expected: [|0; 2; 4|] │ 00:06:22 verbose #8274 > > │ │ 00:06:22 verbose #8275 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:22 verbose #8276 > > 00:06:22 verbose #8277 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:22 verbose #8278 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:22 verbose #8279 > > │ ### head │ 00:06:22 verbose #8280 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:22 verbose #8281 > > 00:06:22 verbose #8282 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:22 verbose #8283 > > inl head (ar : a _ _) = 00:06:22 verbose #8284 > > if var_is ar || length ar > 0 00:06:22 verbose #8285 > > then ar |> index 0 00:06:22 verbose #8286 > > else error_type "The length of the array should be greater than 0." 00:06:22 verbose #8287 > > 00:06:22 verbose #8288 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:22 verbose #8289 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:22 verbose #8290 > > │ ### last │ 00:06:22 verbose #8291 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:22 verbose #8292 > > 00:06:22 verbose #8293 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:22 verbose #8294 > > inl last (ar : a _ _) = 00:06:22 verbose #8295 > > inl len = length ar 00:06:22 verbose #8296 > > if var_is ar || len > 0 00:06:22 verbose #8297 > > then ar |> index (len - 1) 00:06:22 verbose #8298 > > else error_type "The length of the array should be greater than 0." 00:06:22 verbose #8299 > > 00:06:22 verbose #8300 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:22 verbose #8301 > > //// test 00:06:22 verbose #8302 > > ///! fsharp 00:06:22 verbose #8303 > > ///! cuda 00:06:22 verbose #8304 > > ///! rust 00:06:22 verbose #8305 > > ///! typescript 00:06:22 verbose #8306 > > ///! python 00:06:22 verbose #8307 > > 00:06:22 verbose #8308 > > 10 00:06:22 verbose #8309 > > |> init 00:06:22 verbose #8310 > > |> fun x => a x : _ int _ 00:06:22 verbose #8311 > > |> last 00:06:22 verbose #8312 > > |> _assert_eq 9 00:06:33 verbose #8313 > > 00:06:33 verbose #8314 > > ╭─[ 11.05s - return value ]────────────────────────────────────────────────────╮ 00:06:33 verbose #8315 > > │ │ 00:06:33 verbose #8316 > > │ .py output (Cuda): │ 00:06:33 verbose #8317 > > │ Traceback (most recent call last): │ 00:06:33 verbose #8318 > > │ File │ 00:06:33 verbose #8319 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ed1d2494880 │ 00:06:33 verbose #8320 > > │ 22df51e5f876496d2021ed16162ab1f9734f72e17cda34328ce10/main.py", line 103, in │ 00:06:33 verbose #8321 > > │ <module> │ 00:06:33 verbose #8322 > > │ if __name__ == '__main__': result = main(); None if result is None │ 00:06:33 verbose #8323 > > │ else print(result) │ 00:06:33 verbose #8324 > > │ ^^^^^^ │ 00:06:33 verbose #8325 > > │ File │ 00:06:33 verbose #8326 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ed1d2494880 │ 00:06:33 verbose #8327 > > │ 22df51e5f876496d2021ed16162ab1f9734f72e17cda34328ce10/main.py", line 101, in │ 00:06:33 verbose #8328 > > │ main │ 00:06:33 verbose #8329 > > │ return method0() │ 00:06:33 verbose #8330 > > │ ^^^^^^^^^ │ 00:06:33 verbose #8331 > > │ File │ 00:06:33 verbose #8332 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ed1d2494880 │ 00:06:33 verbose #8333 > > │ 22df51e5f876496d2021ed16162ab1f9734f72e17cda34328ce10/main.py", line 67, in │ 00:06:33 verbose #8334 > > │ method0 │ 00:06:33 verbose #8335 > > │ v0 = cp.empty(10,dtype=cp.int32) │ 00:06:33 verbose #8336 > > │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ │ 00:06:33 verbose #8337 > > │ File │ 00:06:33 verbose #8338 > > │ "/opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/cupy/_c │ 00:06:33 verbose #8339 > > │ reation/basic.py", line 31, in empty │ 00:06:33 verbose #8340 > > │ return cupy.ndarray(shape, dtype, order=order) │ 00:06:33 verbose #8341 > > │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ │ 00:06:33 verbose #8342 > > │ File "cupy/_core/core.pyx", line 137, in │ 00:06:33 verbose #8343 > > │ cupy._core.core.ndarray.__new__ │ 00:06:33 verbose #8344 > > │ File "cupy/_core/core.pyx", line 225, in │ 00:06:33 verbose #8345 > > │ cupy._core.core._ndarray_base._init │ 00:06:33 verbose #8346 > > │ File "cupy/cuda/memory.pyx", line 738, in cupy.cuda.memory.alloc │ 00:06:33 verbose #8347 > > │ File "cupy/cuda/memory.pyx", line 1424, in │ 00:06:33 verbose #8348 > > │ cupy.cuda.memory.MemoryPool.malloc │ 00:06:33 verbose #8349 > > │ File "cupy/cuda/memory.pyx", line 1444, in │ 00:06:33 verbose #8350 > > │ cupy.cuda.memory.MemoryPool.malloc │ 00:06:33 verbose #8351 > > │ File "cupy/cuda/device.pyx", line 40, in cupy.cuda.device.get_device_id │ 00:06:33 verbose #8352 > > │ [0m │ 00:06:33 verbose #8353 > > │ File "cupy_backends/cuda/api/runtime.pyx", line 202, in │ 00:06:33 verbose #8354 > > │ cupy_backends.cuda.api.runtime.getDevice │ 00:06:33 verbose #8355 > > │ File "cupy_backends/cuda/api/runtime.pyx", line 146, in │ 00:06:33 verbose #8356 > > │ cupy_backends.cuda.api.runtime.check_status │ 00:06:33 verbose #8357 > > │ cupy_backends.cuda.api.runtime.CUDARuntimeError: │ 00:06:33 verbose #8358 > > │ cudaErrorInsufficientDriver: CUDA driver version is insufficient for CUDA │ 00:06:33 verbose #8359 > > │ runtime version │ 00:06:33 verbose #8360 > > │ │ 00:06:33 verbose #8361 > > │ .rs output: │ 00:06:33 verbose #8362 > > │ __assert_eq / actual: 9 / expected: 9 │ 00:06:33 verbose #8363 > > │ │ 00:06:33 verbose #8364 > > │ .ts output: │ 00:06:33 verbose #8365 > > │ __assert_eq / actual: 9 / expected: 9 │ 00:06:33 verbose #8366 > > │ │ 00:06:33 verbose #8367 > > │ .py output: │ 00:06:33 verbose #8368 > > │ __assert_eq / actual: 9 / expected: 9 │ 00:06:33 verbose #8369 > > │ │ 00:06:33 verbose #8370 > > │ │ 00:06:33 verbose #8371 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:33 verbose #8372 > > 00:06:33 verbose #8373 > > ╭─[ 11.05s - stdout ]──────────────────────────────────────────────────────────╮ 00:06:33 verbose #8374 > > │ .fsx output: │ 00:06:33 verbose #8375 > > │ __assert_eq / actual: 9 / expected: 9 │ 00:06:33 verbose #8376 > > │ │ 00:06:33 verbose #8377 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:33 verbose #8378 > > 00:06:33 verbose #8379 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:33 verbose #8380 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:33 verbose #8381 > > │ ### try_pick │ 00:06:33 verbose #8382 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:33 verbose #8383 > > 00:06:33 verbose #8384 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:33 verbose #8385 > > inl try_pick forall t u. (fn : t -> option u) (array : a _ t) : option u = 00:06:33 verbose #8386 > > (array, None) 00:06:33 verbose #8387 > > ||> am.foldBack fun x acc => 00:06:33 verbose #8388 > > match acc with 00:06:33 verbose #8389 > > | Some _ => acc 00:06:33 verbose #8390 > > | None => x |> fn 00:06:33 verbose #8391 > > 00:06:33 verbose #8392 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:33 verbose #8393 > > //// test 00:06:33 verbose #8394 > > ///! fsharp 00:06:33 verbose #8395 > > ///! cuda 00:06:33 verbose #8396 > > ////! rust // match &v23 { Spiral_builder::US0::US0_0(x) => x.clone(), _ => 00:06:33 verbose #8397 > > unreachable!(), } == 5_i32 00:06:33 verbose #8398 > > ///! typescript 00:06:33 verbose #8399 > > ///! python 00:06:33 verbose #8400 > > 00:06:33 verbose #8401 > > 10 00:06:33 verbose #8402 > > |> init 00:06:33 verbose #8403 > > |> fun x => a x : _ int _ 00:06:33 verbose #8404 > > |> try_pick (fun x => if x = 5i32 then Some x else None) 00:06:33 verbose #8405 > > |> _assert_eq (Some 5i32) 00:06:41 verbose #8406 > > 00:06:41 verbose #8407 > > ╭─[ 8.02s - return value ]─────────────────────────────────────────────────────╮ 00:06:41 verbose #8408 > > │ │ 00:06:41 verbose #8409 > > │ .py output (Cuda): │ 00:06:41 verbose #8410 > > │ Traceback (most recent call last): │ 00:06:41 verbose #8411 > > │ File │ 00:06:41 verbose #8412 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/f574f6aa78d │ 00:06:41 verbose #8413 > > │ d2d474cc9a15e9816e77781ab6f25f1c539d19fe6f862f7ac5433/main.py", line 157, in │ 00:06:41 verbose #8414 > > │ <module> │ 00:06:41 verbose #8415 > > │ if __name__ == '__main__': result = main(); None if result is None │ 00:06:41 verbose #8416 > > │ else print(result) │ 00:06:41 verbose #8417 > > │ ^^^^^^ │ 00:06:41 verbose #8418 > > │ File │ 00:06:41 verbose #8419 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/f574f6aa78d │ 00:06:41 verbose #8420 > > │ d2d474cc9a15e9816e77781ab6f25f1c539d19fe6f862f7ac5433/main.py", line 155, in │ 00:06:41 verbose #8421 > > │ main │ 00:06:41 verbose #8422 > > │ return method0() │ 00:06:41 verbose #8423 > > │ ^^^^^^^^^ │ 00:06:41 verbose #8424 > > │ File │ 00:06:41 verbose #8425 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/f574f6aa78d │ 00:06:41 verbose #8426 > > │ d2d474cc9a15e9816e77781ab6f25f1c539d19fe6f862f7ac5433/main.py", line 83, in │ 00:06:41 verbose #8427 > > │ method0 │ 00:06:41 verbose #8428 > > │ v0 = cp.empty(10,dtype=cp.int32) │ 00:06:41 verbose #8429 > > │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ │ 00:06:41 verbose #8430 > > │ File │ 00:06:41 verbose #8431 > > │ "/opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/cupy/_c │ 00:06:41 verbose #8432 > > │ reation/basic.py", line 31, in empty │ 00:06:41 verbose #8433 > > │ return cupy.ndarray(shape, dtype, order=order) │ 00:06:41 verbose #8434 > > │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ │ 00:06:41 verbose #8435 > > │ File "cupy/_core/core.pyx", line 137, in │ 00:06:41 verbose #8436 > > │ cupy._core.core.ndarray.__new__ │ 00:06:41 verbose #8437 > > │ File "cupy/_core/core.pyx", line 225, in │ 00:06:41 verbose #8438 > > │ cupy._core.core._ndarray_base._init │ 00:06:41 verbose #8439 > > │ File "cupy/cuda/memory.pyx", line 738, in cupy.cuda.memory.alloc │ 00:06:41 verbose #8440 > > │ File "cupy/cuda/memory.pyx", line 1424, in │ 00:06:41 verbose #8441 > > │ cupy.cuda.memory.MemoryPool.malloc │ 00:06:41 verbose #8442 > > │ File "cupy/cuda/memory.pyx", line 1444, in │ 00:06:41 verbose #8443 > > │ cupy.cuda.memory.MemoryPool.malloc │ 00:06:41 verbose #8444 > > │ File "cupy/cuda/device.pyx", line 40, in cupy.cuda.device.get_device_id │ 00:06:41 verbose #8445 > > │ [0m │ 00:06:41 verbose #8446 > > │ File "cupy_backends/cuda/api/runtime.pyx", line 202, in │ 00:06:41 verbose #8447 > > │ cupy_backends.cuda.api.runtime.getDevice │ 00:06:41 verbose #8448 > > │ File "cupy_backends/cuda/api/runtime.pyx", line 146, in │ 00:06:41 verbose #8449 > > │ cupy_backends.cuda.api.runtime.check_status │ 00:06:41 verbose #8450 > > │ cupy_backends.cuda.api.runtime.CUDARuntimeError: │ 00:06:41 verbose #8451 > > │ cudaErrorInsufficientDriver: CUDA driver version is insufficient for CUDA │ 00:06:41 verbose #8452 > > │ runtime version │ 00:06:41 verbose #8453 > > │ │ 00:06:41 verbose #8454 > > │ .ts output: │ 00:06:41 verbose #8455 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5 │ 00:06:41 verbose #8456 > > │ │ 00:06:41 verbose #8457 > > │ .py output: │ 00:06:41 verbose #8458 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5 │ 00:06:41 verbose #8459 > > │ │ 00:06:41 verbose #8460 > > │ │ 00:06:41 verbose #8461 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:41 verbose #8462 > > 00:06:41 verbose #8463 > > ╭─[ 8.02s - stdout ]───────────────────────────────────────────────────────────╮ 00:06:41 verbose #8464 > > │ .fsx output: │ 00:06:41 verbose #8465 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5 │ 00:06:41 verbose #8466 > > │ │ 00:06:41 verbose #8467 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:41 verbose #8468 > > 00:06:41 verbose #8469 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:41 verbose #8470 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:41 verbose #8471 > > │ ### indexed │ 00:06:41 verbose #8472 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:41 verbose #8473 > > 00:06:41 verbose #8474 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:41 verbose #8475 > > inl indexed forall t u {number}. (ar : array_base t) : array_base (u * t) = 00:06:41 verbose #8476 > > ((0, a ;[[]]), (a ar : _ int _)) 00:06:41 verbose #8477 > > ||> am.fold fun (i, acc) x => 00:06:41 verbose #8478 > > i + 1, acc ++ a ;[[i, x]] 00:06:41 verbose #8479 > > |> snd 00:06:41 verbose #8480 > > |> fun (a x : _ int _) => x 00:06:41 verbose #8481 > > 00:06:41 verbose #8482 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:41 verbose #8483 > > //// test 00:06:41 verbose #8484 > > ///! fsharp 00:06:41 verbose #8485 > > ////! cuda // Only stack allocated primitive types (i8,i16,i32,i64 and 00:06:41 verbose #8486 > > u8,u16,u32,u64 and f32,f64 and bool) are allowed in CuPy arrays. 00:06:41 verbose #8487 > > ///! rust 00:06:41 verbose #8488 > > ///! typescript 00:06:41 verbose #8489 > > ///! python 00:06:41 verbose #8490 > > 00:06:41 verbose #8491 > > am.init 3i32 ((*) 2) 00:06:41 verbose #8492 > > |> fun (a x : _ int _) => x 00:06:41 verbose #8493 > > |> indexed 00:06:41 verbose #8494 > > |> _assert_eq' ;[[0i32, 0; 1, 2; 2, 4]] 00:06:52 verbose #8495 > > 00:06:52 verbose #8496 > > ╭─[ 10.87s - return value ]────────────────────────────────────────────────────╮ 00:06:52 verbose #8497 > > │ .rs output: │ 00:06:52 verbose #8498 > > │ __assert_eq' / actual: Array(MutCell([(0, 0), (1, 2), (2, 4)])) / expected: │ 00:06:52 verbose #8499 > > │ Array(MutCell([(0, 0), (1, 2), (2, 4)])) │ 00:06:52 verbose #8500 > > │ │ 00:06:52 verbose #8501 > > │ .ts output: │ 00:06:52 verbose #8502 > > │ __assert_eq' / actual: 0,0,1,2,2,4 / expected: 0,0,1,2,2,4 │ 00:06:52 verbose #8503 > > │ │ 00:06:52 verbose #8504 > > │ .py output: │ 00:06:52 verbose #8505 > > │ __assert_eq' / actual: [(0, 0), (1, 2), (2, 4)] / expected: [(0, 0), (1, 2), │ 00:06:52 verbose #8506 > > │ (2, 4)] │ 00:06:52 verbose #8507 > > │ │ 00:06:52 verbose #8508 > > │ │ 00:06:52 verbose #8509 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:52 verbose #8510 > > 00:06:52 verbose #8511 > > ╭─[ 10.87s - stdout ]──────────────────────────────────────────────────────────╮ 00:06:52 verbose #8512 > > │ .fsx output: │ 00:06:52 verbose #8513 > > │ __assert_eq' / actual: [|struct (0, 0); struct (1, 2); struct (2, 4)|] / │ 00:06:52 verbose #8514 > > │ expected: [|struct (0, 0); struct (1, 2); struct (2, 4)|] │ 00:06:52 verbose #8515 > > │ │ 00:06:52 verbose #8516 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:52 verbose #8517 > > 00:06:52 verbose #8518 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:52 verbose #8519 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:06:52 verbose #8520 > > │ ### slice │ 00:06:52 verbose #8521 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:06:52 verbose #8522 > > 00:06:52 verbose #8523 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:52 verbose #8524 > > inl slice forall dim {int; number} el. from nearTo s : a dim el = 00:06:52 verbose #8525 > > am.slice { from nearTo } s 00:06:52 verbose #8526 > > 00:06:52 verbose #8527 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:52 verbose #8528 > > //// test 00:06:52 verbose #8529 > > ///! fsharp 00:06:52 verbose #8530 > > ///! cuda 00:06:52 verbose #8531 > > ///! rust 00:06:52 verbose #8532 > > ///! typescript 00:06:52 verbose #8533 > > ///! python 00:06:52 verbose #8534 > > 00:06:52 verbose #8535 > > inl x : _ i32 _ = a ;[[ 1i32; 2; 3 ]] 00:06:52 verbose #8536 > > x |> slice 0 0 |> _assert_eq (a ;[[]]) 00:06:52 verbose #8537 > > x |> slice 0 1 |> _assert_eq (a ;[[ 1 ]]) 00:06:52 verbose #8538 > > x |> slice 1 1 |> _assert_eq (a ;[[]]) 00:06:52 verbose #8539 > > x |> slice 1 2 |> _assert_eq (a ;[[ 2 ]]) 00:06:52 verbose #8540 > > x |> slice 2 2 |> _assert_eq (a ;[[]]) 00:06:52 verbose #8541 > > x |> slice 0 2 |> _assert_eq (a ;[[ 1; 2 ]]) 00:07:03 verbose #8542 > > 00:07:03 verbose #8543 > > ╭─[ 11.20s - return value ]────────────────────────────────────────────────────╮ 00:07:03 verbose #8544 > > │ │ 00:07:03 verbose #8545 > > │ .py output (Cuda): │ 00:07:03 verbose #8546 > > │ Traceback (most recent call last): │ 00:07:03 verbose #8547 > > │ File │ 00:07:03 verbose #8548 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a8adc9f979f │ 00:07:03 verbose #8549 > > │ b0d14587fb26fafe8b2f1cddc6a9cfe0d328177faf8a154a65c7b/main.py", line 367, in │ 00:07:03 verbose #8550 > > │ <module> │ 00:07:03 verbose #8551 > > │ if __name__ == '__main__': result = main(); None if result is None │ 00:07:03 verbose #8552 > > │ else print(result) │ 00:07:03 verbose #8553 > > │ ^^^^^^ │ 00:07:03 verbose #8554 > > │ File │ 00:07:03 verbose #8555 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a8adc9f979f │ 00:07:03 verbose #8556 > > │ b0d14587fb26fafe8b2f1cddc6a9cfe0d328177faf8a154a65c7b/main.py", line 365, in │ 00:07:03 verbose #8557 > > │ main │ 00:07:03 verbose #8558 > > │ return method0() │ 00:07:03 verbose #8559 > > │ ^^^^^^^^^ │ 00:07:03 verbose #8560 > > │ File │ 00:07:03 verbose #8561 > > │ "/home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a8adc9f979f │ 00:07:03 verbose #8562 > > │ b0d14587fb26fafe8b2f1cddc6a9cfe0d328177faf8a154a65c7b/main.py", line 108, in │ 00:07:03 verbose #8563 > > │ method0 │ 00:07:03 verbose #8564 > > │ v0 = cp.array([1, 2, 3],dtype=cp.int32) │ 00:07:03 verbose #8565 > > │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ │ 00:07:03 verbose #8566 > > │ File │ 00:07:03 verbose #8567 > > │ "/opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/cupy/_c │ 00:07:03 verbose #8568 > > │ reation/from_data.py", line 53, in array │ 00:07:03 verbose #8569 > > │ return _core.array(obj, dtype, copy, order, subok, ndmin, blocking)38;5;2m│ 00:07:03 verbose #8570 > > │ 0m │ 00:07:03 verbose #8571 > > │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^38;5;2m│ 00:07:03 verbose #8572 > > │ 0m │ 00:07:03 verbose #8573 > > │ File "cupy/_core/core.pyx", line 2408, in cupy._core.core.array │ 00:07:03 verbose #8574 > > │ File "cupy/_core/core.pyx", line 2435, in cupy._core.core.array │ 00:07:03 verbose #8575 > > │ File "cupy/_core/core.pyx", line 2578, in │ 00:07:03 verbose #8576 > > │ cupy._core.core._array_default │ 00:07:03 verbose #8577 > > │ File "cupy/_core/core.pyx", line...moryPool.malloc │ 00:07:03 verbose #8578 > > │ File "cupy/cuda/device.pyx", line 40, in cupy.cuda.device.get_device_id │ 00:07:03 verbose #8579 > > │ [0m │ 00:07:03 verbose #8580 > > │ File "cupy_backends/cuda/api/runtime.pyx", line 202, in │ 00:07:03 verbose #8581 > > │ cupy_backends.cuda.api.runtime.getDevice │ 00:07:03 verbose #8582 > > │ File "cupy_backends/cuda/api/runtime.pyx", line 146, in │ 00:07:03 verbose #8583 > > │ cupy_backends.cuda.api.runtime.check_status │ 00:07:03 verbose #8584 > > │ cupy_backends.cuda.api.runtime.CUDARuntimeError: │ 00:07:03 verbose #8585 > > │ cudaErrorInsufficientDriver: CUDA driver version is insufficient for CUDA │ 00:07:03 verbose #8586 > > │ runtime version │ 00:07:03 verbose #8587 > > │ │ 00:07:03 verbose #8588 > > │ │ 00:07:03 verbose #8589 > > │ .rs output: │ 00:07:03 verbose #8590 > > │ __assert_eq / actual: Array(MutCell([])) / expected: Array(MutCell([])) │ 00:07:03 verbose #8591 > > │ __assert_eq / actual: Array(MutCell([1])) / expected: Array(MutCell([1])) │ 00:07:03 verbose #8592 > > │ __assert_eq / actual: Array(MutCell([])) / expected: Array(MutCell([])) │ 00:07:03 verbose #8593 > > │ __assert_eq / actual: Array(MutCell([2])) / expected: Array(MutCell([2])) │ 00:07:03 verbose #8594 > > │ __assert_eq / actual: Array(MutCell([])) / expected: Array(MutCell([])) │ 00:07:03 verbose #8595 > > │ __assert_eq / actual: Array(MutCell([1, 2])) / expected: Array(MutCell([1, │ 00:07:03 verbose #8596 > > │ 2])) │ 00:07:03 verbose #8597 > > │ │ 00:07:03 verbose #8598 > > │ │ 00:07:03 verbose #8599 > > │ .ts output: │ 00:07:03 verbose #8600 > > │ __assert_eq / actual: / expected: │ 00:07:03 verbose #8601 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:07:03 verbose #8602 > > │ __assert_eq / actual: / expected: │ 00:07:03 verbose #8603 > > │ __assert_eq / actual: 2 / expected: 2 │ 00:07:03 verbose #8604 > > │ __assert_eq / actual: / expected: │ 00:07:03 verbose #8605 > > │ __assert_eq / actual: 1,2 / expected: 1,2 │ 00:07:03 verbose #8606 > > │ │ 00:07:03 verbose #8607 > > │ │ 00:07:03 verbose #8608 > > │ .py output: │ 00:07:03 verbose #8609 > > │ __assert_eq / actual: [] / expected: array('l') │ 00:07:03 verbose #8610 > > │ __assert_eq / actual: [1] / expected: array('l', [1]) │ 00:07:03 verbose #8611 > > │ __assert_eq / actual: [] / expected: array('l') │ 00:07:03 verbose #8612 > > │ __assert_eq / actual: [2] / expected: array('l', [2]) │ 00:07:03 verbose #8613 > > │ __assert_eq / actual: [] / expected: array('l') │ 00:07:03 verbose #8614 > > │ __assert_eq / actual: [1, 2] / expected: array('l', [1, 2]) │ 00:07:03 verbose #8615 > > │ │ 00:07:03 verbose #8616 > > │ │ 00:07:03 verbose #8617 > > │ │ 00:07:03 verbose #8618 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:03 verbose #8619 > > 00:07:03 verbose #8620 > > ╭─[ 11.20s - stdout ]──────────────────────────────────────────────────────────╮ 00:07:03 verbose #8621 > > │ .fsx output: │ 00:07:03 verbose #8622 > > │ __assert_eq / actual: [||] / expected: [||] │ 00:07:03 verbose #8623 > > │ __assert_eq / actual: [|1|] / expected: [|1|] │ 00:07:03 verbose #8624 > > │ __assert_eq / actual: [||] / expected: [||] │ 00:07:03 verbose #8625 > > │ __assert_eq / actual: [|2|] / expected: [|2|] │ 00:07:03 verbose #8626 > > │ __assert_eq / actual: [||] / expected: [||] │ 00:07:03 verbose #8627 > > │ __assert_eq / actual: [|1; 2|] / expected: [|1; 2|] │ 00:07:03 verbose #8628 > > │ │ 00:07:03 verbose #8629 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:03 verbose #8630 > > 00:07:03 verbose #8631 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:03 verbose #8632 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:03 verbose #8633 > > │ ### range │ 00:07:03 verbose #8634 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:03 verbose #8635 > > 00:07:03 verbose #8636 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:03 verbose #8637 > > union range dim = 00:07:03 verbose #8638 > > | Start : dim 00:07:03 verbose #8639 > > | End : dim -> dim 00:07:03 verbose #8640 > > 00:07:03 verbose #8641 > > inl range start end s = 00:07:03 verbose #8642 > > inl start, end = 00:07:03 verbose #8643 > > match start, end with 00:07:03 verbose #8644 > > | Start start, End fn => 00:07:03 verbose #8645 > > start, s |> length |> conv |> fn 00:07:03 verbose #8646 > > | End start_fn, End end_fn => 00:07:03 verbose #8647 > > inl len = s |> length |> conv 00:07:03 verbose #8648 > > start_fn len, end_fn len 00:07:03 verbose #8649 > > s |> slice (start |> unbox) (end |> unbox) 00:07:04 verbose #8650 > > 00:07:04 verbose #8651 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:04 verbose #8652 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:04 verbose #8653 > > │ ## rust │ 00:07:04 verbose #8654 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:04 verbose #8655 > > 00:07:04 verbose #8656 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:04 verbose #8657 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:04 verbose #8658 > > │ ### vec │ 00:07:04 verbose #8659 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:04 verbose #8660 > > 00:07:04 verbose #8661 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:04 verbose #8662 > > nominal vec t = 00:07:04 verbose #8663 > > `( 00:07:04 verbose #8664 > > backend_switch `(()) `({}) { 00:07:04 verbose #8665 > > Fsharp = 00:07:04 verbose #8666 > > (fun () => 00:07:04 verbose #8667 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:04 verbose #8668 > > Fable.Core.Emit(\"Vec<$0>\")>]]\n#endif\ntype Vec<'T> = class end" 00:07:04 verbose #8669 > > ) : () -> () 00:07:04 verbose #8670 > > } 00:07:04 verbose #8671 > > $'' : $'Vec<`t>' 00:07:04 verbose #8672 > > ) 00:07:04 verbose #8673 > > 00:07:04 verbose #8674 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:04 verbose #8675 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:04 verbose #8676 > > │ ### from_vec │ 00:07:04 verbose #8677 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:04 verbose #8678 > > 00:07:04 verbose #8679 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:04 verbose #8680 > > inl from_vec forall dim el. (vec : vec el) : a dim el = 00:07:04 verbose #8681 > > !\\(vec, $'"fable_library_rust::NativeArray_::array_from($0)"') 00:07:04 verbose #8682 > > 00:07:04 verbose #8683 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:04 verbose #8684 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:04 verbose #8685 > > │ ### to_vec │ 00:07:04 verbose #8686 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:04 verbose #8687 > > 00:07:04 verbose #8688 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:04 verbose #8689 > > inl to_vec forall t. (ab : array_base t) : vec t = 00:07:04 verbose #8690 > > !\\(ab, $'"$0.to_vec()"') 00:07:04 verbose #8691 > > 00:07:04 verbose #8692 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:04 verbose #8693 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:04 verbose #8694 > > │ ### vec_push │ 00:07:04 verbose #8695 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:04 verbose #8696 > > 00:07:04 verbose #8697 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:04 verbose #8698 > > inl vec_push forall el. (el : el) (vec : vec el) : vec el = 00:07:04 verbose #8699 > > inl el = join el 00:07:04 verbose #8700 > > inl vec = join vec 00:07:04 verbose #8701 > > (!\($'"true; let mut !vec = !vec"') : bool) |> ignore 00:07:04 verbose #8702 > > // inl vec = vec |> rust.to_mut 00:07:04 verbose #8703 > > (!\($'"true; !vec.push(!el)"') : bool) |> ignore 00:07:04 verbose #8704 > > !\($'"!vec"') 00:07:04 verbose #8705 > > 00:07:04 verbose #8706 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:04 verbose #8707 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:04 verbose #8708 > > │ ### vec_reverse │ 00:07:04 verbose #8709 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:04 verbose #8710 > > 00:07:04 verbose #8711 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:04 verbose #8712 > > inl vec_reverse forall el. (vec : vec el) : vec el = 00:07:04 verbose #8713 > > inl vec = join vec 00:07:04 verbose #8714 > > (!\($'"true; let mut !vec = !vec"') : bool) |> ignore 00:07:04 verbose #8715 > > (!\($'"true; !vec.reverse()"') : bool) |> ignore 00:07:04 verbose #8716 > > !\($'"!vec"') 00:07:04 verbose #8717 > > 00:07:04 verbose #8718 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:04 verbose #8719 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:04 verbose #8720 > > │ ### vec_retain │ 00:07:04 verbose #8721 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:04 verbose #8722 > > 00:07:04 verbose #8723 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:04 verbose #8724 > > inl vec_retain forall el. (fn : el -> bool) (vec : vec el) : vec el = 00:07:04 verbose #8725 > > inl vec = join vec 00:07:04 verbose #8726 > > inl fn = join fn 00:07:04 verbose #8727 > > (!\($'"true; let mut !vec = !vec"') : bool) |> ignore 00:07:04 verbose #8728 > > // inl vec = vec |> rust.to_mut 00:07:04 verbose #8729 > > (!\($'"true; !vec.retain(|x| !fn(x.clone()))"') : bool) |> ignore 00:07:04 verbose #8730 > > !\($'"!vec"') 00:07:04 verbose #8731 > > 00:07:04 verbose #8732 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:04 verbose #8733 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:04 verbose #8734 > > │ ### vec_sort_by_key │ 00:07:04 verbose #8735 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:04 verbose #8736 > > 00:07:04 verbose #8737 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:04 verbose #8738 > > inl vec_sort_by_key forall el t. (fn : el -> t) (vec : vec el) : vec el = 00:07:04 verbose #8739 > > inl vec = join vec 00:07:04 verbose #8740 > > inl fn = join fn 00:07:04 verbose #8741 > > (!\($'"true; let mut !vec = !vec"') : bool) |> ignore 00:07:04 verbose #8742 > > // inl vec = vec |> rust.to_mut 00:07:04 verbose #8743 > > (!\($'"true; !vec.sort_by_key(|x| !fn(x.clone()))"') : bool) |> ignore 00:07:04 verbose #8744 > > !\($'"!vec"') 00:07:04 verbose #8745 > > 00:07:04 verbose #8746 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:04 verbose #8747 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:04 verbose #8748 > > │ ### vec_extend │ 00:07:04 verbose #8749 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:04 verbose #8750 > > 00:07:04 verbose #8751 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:04 verbose #8752 > > inl vec_extend forall el. (el : vec el) (vec : vec el) : vec el = 00:07:04 verbose #8753 > > inl el = join el 00:07:04 verbose #8754 > > inl vec = join vec 00:07:04 verbose #8755 > > (!\($'"true; let mut !vec = !vec"') : bool) |> ignore 00:07:04 verbose #8756 > > // inl vec = vec |> rust.to_mut 00:07:04 verbose #8757 > > (!\($'"true; !vec.extend(!el)"') : bool) |> ignore 00:07:04 verbose #8758 > > !\($'"!vec"') 00:07:05 verbose #8759 > > 00:07:05 verbose #8760 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:05 verbose #8761 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:05 verbose #8762 > > │ ### vec_collect │ 00:07:05 verbose #8763 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:05 verbose #8764 > > 00:07:05 verbose #8765 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:05 verbose #8766 > > inl vec_collect fn vec = 00:07:05 verbose #8767 > > ((;[[]] |> to_vec), (vec |> from_vec : _ i32 _)) 00:07:05 verbose #8768 > > ||> am.fold fun acc x => 00:07:05 verbose #8769 > > acc |> vec_extend (fn x) 00:07:05 verbose #8770 > > 00:07:05 verbose #8771 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:05 verbose #8772 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:05 verbose #8773 > > │ ### vec_collect_option │ 00:07:05 verbose #8774 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:05 verbose #8775 > > 00:07:05 verbose #8776 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:05 verbose #8777 > > inl vec_collect_option vec = 00:07:05 verbose #8778 > > ((;[[]] |> to_vec |> Ok), (vec |> from_vec : _ i32 _)) 00:07:05 verbose #8779 > > ||> am.fold fun acc x => 00:07:05 verbose #8780 > > x 00:07:05 verbose #8781 > > |> resultm.unbox 00:07:05 verbose #8782 > > |> fun x => 00:07:05 verbose #8783 > > match acc, x |> resultm.map optionm'.unbox with 00:07:05 verbose #8784 > > | Ok acc, Ok (Some x) => acc |> vec_extend x |> Ok 00:07:05 verbose #8785 > > | _, Error error => error |> Error 00:07:05 verbose #8786 > > | _ => acc 00:07:05 verbose #8787 > > 00:07:05 verbose #8788 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:05 verbose #8789 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:05 verbose #8790 > > │ ### vec_collect_into │ 00:07:05 verbose #8791 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:05 verbose #8792 > > 00:07:05 verbose #8793 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:05 verbose #8794 > > inl vec_collect_into forall (c : * -> * -> *) t e. 00:07:05 verbose #8795 > > (x : vec (c t e)) 00:07:05 verbose #8796 > > : c (vec t) e 00:07:05 verbose #8797 > > = 00:07:05 verbose #8798 > > !\($'"!x.into_iter().collect()"') 00:07:05 verbose #8799 > > 00:07:05 verbose #8800 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:05 verbose #8801 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:05 verbose #8802 > > │ ### vec_mapi │ 00:07:05 verbose #8803 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:05 verbose #8804 > > 00:07:05 verbose #8805 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:05 verbose #8806 > > inl vec_mapi forall dim t u. (fn : dim -> t -> u) (ar : vec t) : vec u = 00:07:05 verbose #8807 > > inl fn = join fn 00:07:05 verbose #8808 > > inl ar = join ar 00:07:05 verbose #8809 > > !\($'"!ar.iter().enumerate().map(|(i, x)| 00:07:05 verbose #8810 > > !fn(i.try_into().unwrap())(x.clone())).collect::<Vec<_>>()"') 00:07:05 verbose #8811 > > 00:07:05 verbose #8812 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:05 verbose #8813 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:05 verbose #8814 > > │ ### vec_map │ 00:07:05 verbose #8815 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:05 verbose #8816 > > 00:07:05 verbose #8817 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:05 verbose #8818 > > inl vec_map forall t u. (fn : t -> u) (ar : vec t) : vec u = 00:07:05 verbose #8819 > > (!\\(ar, $'"true; let _vec_map : Vec<_> = $0.into_iter().map(|x| { //"') : 00:07:05 verbose #8820 > > bool) |> ignore 00:07:05 verbose #8821 > > inl result = fn !\($'"x"') 00:07:05 verbose #8822 > > inl is_unit = 00:07:05 verbose #8823 > > real 00:07:05 verbose #8824 > > typecase u with 00:07:05 verbose #8825 > > | () => true 00:07:05 verbose #8826 > > | _ => false 00:07:05 verbose #8827 > > if is_unit 00:07:05 verbose #8828 > > then (!\($'"true; }}).collect::<Vec<_>>()"') : bool) |> ignore 00:07:05 verbose #8829 > > else (!\\(result, $'"true; $0 }).collect::<Vec<_>>()"') : bool) |> ignore 00:07:05 verbose #8830 > > !\($'"_vec_map"') 00:07:05 verbose #8831 > > 00:07:05 verbose #8832 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:05 verbose #8833 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:05 verbose #8834 > > │ ### vec_map' │ 00:07:05 verbose #8835 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:05 verbose #8836 > > 00:07:05 verbose #8837 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:05 verbose #8838 > > inl vec_map' forall t u. (fn : t -> u) (ar : vec t) : vec u = 00:07:05 verbose #8839 > > !\\((ar, fn), $'"$0.into_iter().map(|x| 00:07:05 verbose #8840 > > $1(x.clone())).collect::<Vec<_>>()"') 00:07:05 verbose #8841 > > 00:07:05 verbose #8842 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:05 verbose #8843 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:05 verbose #8844 > > │ ### vec_fold' │ 00:07:05 verbose #8845 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:05 verbose #8846 > > 00:07:05 verbose #8847 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:05 verbose #8848 > > inl vec_fold' forall t u. (fn : u -> t -> u) (init : u) (ar : vec t) : u = 00:07:05 verbose #8849 > > (!\\(ar, $'"true; let _vec_fold_ = $0.into_iter().fold(!init, |acc, x| { 00:07:05 verbose #8850 > > //"') : bool) |> ignore 00:07:05 verbose #8851 > > (!\\(fn !\($'"acc"') !\($'"x"'), $'"true; $0 })"') : bool) |> ignore 00:07:05 verbose #8852 > > !\($'"_vec_fold_"') 00:07:05 verbose #8853 > > 00:07:05 verbose #8854 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:05 verbose #8855 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:05 verbose #8856 > > │ ### vec_for_each │ 00:07:05 verbose #8857 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:05 verbose #8858 > > 00:07:05 verbose #8859 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:05 verbose #8860 > > inl vec_for_each forall t. (fn : t -> ()) (ar : vec t) : () = 00:07:05 verbose #8861 > > (!\\((ar, fn), $'"true; $0.iter().for_each(|x| { $1(x.clone()); }); //"') : 00:07:05 verbose #8862 > > bool) |> ignore 00:07:05 verbose #8863 > > 00:07:05 verbose #8864 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:05 verbose #8865 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:05 verbose #8866 > > │ ### vec_for_each' │ 00:07:05 verbose #8867 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:05 verbose #8868 > > 00:07:05 verbose #8869 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:05 verbose #8870 > > inl vec_for_each' forall t. (fn : t -> ()) (ar : vec t) : () = 00:07:05 verbose #8871 > > (!\\(ar, $'"true; $0.into_iter().for_each(|x| { //"') : bool) |> ignore 00:07:05 verbose #8872 > > (!\\(fn !\($'"x"'), $'$"true;"') : bool) |> ignore 00:07:05 verbose #8873 > > (!\($'"true; }}); { //"') : bool) |> ignore 00:07:05 verbose #8874 > > 00:07:05 verbose #8875 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:05 verbose #8876 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:05 verbose #8877 > > │ ### vec_filter │ 00:07:05 verbose #8878 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:05 verbose #8879 > > 00:07:05 verbose #8880 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:05 verbose #8881 > > inl vec_filter forall t. (fn : t -> bool) (ar : vec t) : vec t = 00:07:05 verbose #8882 > > inl fn = join fn 00:07:05 verbose #8883 > > inl ar = join ar 00:07:05 verbose #8884 > > !\($'"!ar.into_iter().filter(|x| 00:07:05 verbose #8885 > > !fn(x.clone().clone())).collect::<Vec<_>>()"') 00:07:06 verbose #8886 > > 00:07:06 verbose #8887 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:06 verbose #8888 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:06 verbose #8889 > > │ ### vec_len │ 00:07:06 verbose #8890 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:06 verbose #8891 > > 00:07:06 verbose #8892 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:06 verbose #8893 > > inl vec_len forall t. (vec : vec t) : unativeint = 00:07:06 verbose #8894 > > !\\(vec, $'"$0.len()"') 00:07:06 verbose #8895 > > 00:07:06 verbose #8896 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:06 verbose #8897 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:06 verbose #8898 > > │ ### vec_chunks │ 00:07:06 verbose #8899 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:06 verbose #8900 > > 00:07:06 verbose #8901 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:06 verbose #8902 > > inl vec_chunks forall t. (n : i32) (vec : vec t) : vec (vec t) = 00:07:06 verbose #8903 > > !\\(vec, $'"$0.chunks(!n).map(|x| x.into_iter().map(|x| 00:07:06 verbose #8904 > > x.clone()).collect::<Vec<_>>()).collect::<Vec<_>>()"') 00:07:06 verbose #8905 > > 00:07:06 verbose #8906 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:06 verbose #8907 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:06 verbose #8908 > > │ ### slice │ 00:07:06 verbose #8909 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:06 verbose #8910 > > 00:07:06 verbose #8911 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:06 verbose #8912 > > nominal slice t = 00:07:06 verbose #8913 > > `( 00:07:06 verbose #8914 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:06 verbose #8915 > > Fable.Core.Emit(\"[[$0]]\")>]]\n#endif\ntype Slice<'T> = class end" 00:07:06 verbose #8916 > > $'' : $'Slice<`t>' 00:07:06 verbose #8917 > > ) 00:07:06 verbose #8918 > > 00:07:06 verbose #8919 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:06 verbose #8920 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:06 verbose #8921 > > │ ### slice' │ 00:07:06 verbose #8922 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:06 verbose #8923 > > 00:07:06 verbose #8924 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:06 verbose #8925 > > nominal slice' el dim = 00:07:06 verbose #8926 > > `( 00:07:06 verbose #8927 > > backend_switch `(()) `({}) { 00:07:06 verbose #8928 > > Fsharp = 00:07:06 verbose #8929 > > (fun () => 00:07:06 verbose #8930 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:06 verbose #8931 > > Fable.Core.Emit(\"_\")>]]\n#endif\ntype Slice'<'T> = class end" 00:07:06 verbose #8932 > > ) : () -> () 00:07:06 verbose #8933 > > } 00:07:06 verbose #8934 > > $'' : $'Slice\'<`el>' 00:07:06 verbose #8935 > > ) 00:07:06 verbose #8936 > > 00:07:06 verbose #8937 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:06 verbose #8938 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:06 verbose #8939 > > │ ### slice_singleton │ 00:07:06 verbose #8940 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:06 verbose #8941 > > 00:07:06 verbose #8942 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:06 verbose #8943 > > inl slice_singleton forall dim el. (x : option el) : slice' el dim = 00:07:06 verbose #8944 > > match x with 00:07:06 verbose #8945 > > | Some x => !\($'"[[!x]]"') 00:07:06 verbose #8946 > > | None => 00:07:06 verbose #8947 > > !\($'"[[\\\"\\\".to_string()]]"') : slice' el dim 00:07:06 verbose #8948 > > // emit_expr `(()) `(slice' el dim) () ($'"[[@dim]]"' : string) : 00:07:06 verbose #8949 > > slice' el 10 00:07:06 verbose #8950 > > // !\( : string) : slice' el i32 // !\($'"[[]]"') 00:07:06 verbose #8951 > > 00:07:06 verbose #8952 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:06 verbose #8953 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:06 verbose #8954 > > │ ### slice_length │ 00:07:06 verbose #8955 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:06 verbose #8956 > > 00:07:06 verbose #8957 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:06 verbose #8958 > > inl slice_length forall t dim. (x : slice' t dim) : unativeint = 00:07:06 verbose #8959 > > !\($'"!x.len()"') 00:07:06 verbose #8960 > > 00:07:06 verbose #8961 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:06 verbose #8962 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:06 verbose #8963 > > │ ### slice_range │ 00:07:06 verbose #8964 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:06 verbose #8965 > > 00:07:06 verbose #8966 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:06 verbose #8967 > > inl slice_range forall t dim. (start : range t) (end : range t) (s : slice' t 00:07:06 verbose #8968 > > dim) : rust.ref (slice' t dim) = 00:07:06 verbose #8969 > > inl len = s |> slice_length 00:07:06 verbose #8970 > > inl start, (end : unativeint) = 00:07:06 verbose #8971 > > match start, end with 00:07:06 verbose #8972 > > | Start start, End fn => start, len |> convert |> fn |> convert 00:07:06 verbose #8973 > > | End start_fn, End end_fn => len |> convert |> start_fn, len |> convert 00:07:06 verbose #8974 > > |> end_fn |> convert 00:07:06 verbose #8975 > > match start, end with 00:07:06 verbose #8976 > > | start, end when unbox end =. len => !\($'"&!s[[!start..]]"') 00:07:06 verbose #8977 > > | start, end => !\\((start, end), $'"&!s[[$0..$1]]"') 00:07:06 verbose #8978 > > 00:07:06 verbose #8979 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:06 verbose #8980 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:06 verbose #8981 > > │ ### new_slice │ 00:07:06 verbose #8982 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:06 verbose #8983 > > 00:07:06 verbose #8984 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:06 verbose #8985 > > inl new_slice forall el dim. (el : el) : slice' el dim = 00:07:06 verbose #8986 > > !\\(el, $'"[[$0; @dim]]"') 00:07:06 verbose #8987 > > 00:07:06 verbose #8988 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:06 verbose #8989 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:06 verbose #8990 > > │ ### as_slice │ 00:07:06 verbose #8991 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:06 verbose #8992 > > 00:07:06 verbose #8993 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:06 verbose #8994 > > inl as_slice forall t. (x : array_base t) : rust.ref (slice t) = 00:07:06 verbose #8995 > > inl x = x |> to_vec 00:07:06 verbose #8996 > > !\($'"!x.as_slice()"') 00:07:06 verbose #8997 > > 00:07:06 verbose #8998 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:06 verbose #8999 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:06 verbose #9000 > > │ ### slice_to_vec │ 00:07:06 verbose #9001 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:06 verbose #9002 > > 00:07:06 verbose #9003 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:06 verbose #9004 > > inl slice_to_vec forall t. (slice : rust.ref (slice t)) : vec t = 00:07:06 verbose #9005 > > !\\(slice, $'"$0.iter().map(|x| *x).collect::<Vec<_>>()"') 00:07:07 verbose #9006 > > 00:07:07 verbose #9007 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:07 verbose #9008 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:07 verbose #9009 > > │ ### any │ 00:07:07 verbose #9010 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:07 verbose #9011 > > 00:07:07 verbose #9012 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:07 verbose #9013 > > inl any forall t. (fn : t -> bool) (source : array_base t) : bool = 00:07:07 verbose #9014 > > !\($'"!source.any(|x| !fn(x))"') 00:07:07 verbose #9015 > > 00:07:07 verbose #9016 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:07 verbose #9017 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:07 verbose #9018 > > │ ### iter_collect vec │ 00:07:07 verbose #9019 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:07 verbose #9020 > > 00:07:07 verbose #9021 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:07 verbose #9022 > > instance iter_collect vec = fun (iter : into_iterator u) => 00:07:07 verbose #9023 > > !\($'"!iter.collect::<Vec<_>>()"') 00:07:07 verbose #9024 > > 00:07:07 verbose #9025 > > instance iter_collect'' vec = fun (iter : into_iterator (t (u v))) => 00:07:07 verbose #9026 > > !\($'"!iter.collect::<Vec<_>>()"') 00:07:07 verbose #9027 > > 00:07:07 verbose #9028 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:07 verbose #9029 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:07 verbose #9030 > > │ ### new_vec │ 00:07:07 verbose #9031 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:07 verbose #9032 > > 00:07:07 verbose #9033 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:07 verbose #9034 > > inl new_vec forall t. (items : list t) : vec t = 00:07:07 verbose #9035 > > inl items = 00:07:07 verbose #9036 > > (items, ("", 0i32)) 00:07:07 verbose #9037 > > ||> listm.foldBack fun (x : t) (acc, i) => 00:07:07 verbose #9038 > > inl x = join x 00:07:07 verbose #9039 > > $'"!x"' +. (if i = 0 then "" else ", ") +. acc, i + 1 00:07:07 verbose #9040 > > |> fst 00:07:07 verbose #9041 > > !\($'"vec\![[" + !items + "]]"') 00:07:07 verbose #9042 > > 00:07:07 verbose #9043 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:07 verbose #9044 > > //// test 00:07:07 verbose #9045 > > ///! rust 00:07:07 verbose #9046 > > 00:07:07 verbose #9047 > > [[ 0i32; 1 ]] 00:07:07 verbose #9048 > > |> new_vec 00:07:07 verbose #9049 > > |> sm'.format_debug' 00:07:07 verbose #9050 > > |> sm'.from_std_string 00:07:07 verbose #9051 > > |> _assert_eq "[[0, 1]]" 00:07:14 verbose #9052 > > 00:07:14 verbose #9053 > > ╭─[ 6.87s - return value ]─────────────────────────────────────────────────────╮ 00:07:14 verbose #9054 > > │ __assert_eq / actual: "[0, 1]" / expected: "[0, 1]" │ 00:07:14 verbose #9055 > > │ │ 00:07:14 verbose #9056 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:14 verbose #9057 > > 00:07:14 verbose #9058 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:14 verbose #9059 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:14 verbose #9060 > > │ ## fsharp │ 00:07:14 verbose #9061 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:14 verbose #9062 > > 00:07:14 verbose #9063 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:14 verbose #9064 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:14 verbose #9065 > > │ ### average │ 00:07:14 verbose #9066 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:14 verbose #9067 > > 00:07:14 verbose #9068 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:14 verbose #9069 > > inl average forall el {number}. (a : a _ el) : el = 00:07:14 verbose #9070 > > $'!a |> Array.average' 00:07:14 verbose #9071 > > 00:07:14 verbose #9072 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:14 verbose #9073 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:14 verbose #9074 > > │ ### distinct │ 00:07:14 verbose #9075 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:14 verbose #9076 > > 00:07:14 verbose #9077 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:14 verbose #9078 > > inl distinct forall dim el. (a : a dim el) : a dim el = 00:07:14 verbose #9079 > > $'!a |> Array.distinct' 00:07:14 verbose #9080 > > 00:07:14 verbose #9081 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:14 verbose #9082 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:14 verbose #9083 > > │ ### skip │ 00:07:14 verbose #9084 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:14 verbose #9085 > > 00:07:14 verbose #9086 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:14 verbose #9087 > > inl skip forall dim el. (n : dim) (a : a dim el) : a dim el = 00:07:14 verbose #9088 > > $'!a |> Array.skip !n ' 00:07:14 verbose #9089 > > 00:07:14 verbose #9090 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:14 verbose #9091 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:14 verbose #9092 > > │ ### skip_while │ 00:07:14 verbose #9093 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:14 verbose #9094 > > 00:07:14 verbose #9095 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:14 verbose #9096 > > inl skip_while forall dim el. (fn : el -> bool) (a : a dim el) : a dim el = 00:07:14 verbose #9097 > > $'!a |> Array.skipWhile !fn ' 00:07:14 verbose #9098 > > 00:07:14 verbose #9099 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:14 verbose #9100 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:14 verbose #9101 > > │ ### to_list' │ 00:07:14 verbose #9102 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:14 verbose #9103 > > 00:07:14 verbose #9104 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:14 verbose #9105 > > inl to_list' forall dim t. (items : a dim t) : listm'.list' t = 00:07:14 verbose #9106 > > $'!items |> Array.toList' 00:07:14 verbose #9107 > > 00:07:14 verbose #9108 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:14 verbose #9109 > > //// test 00:07:14 verbose #9110 > > ///! fsharp 00:07:14 verbose #9111 > > ////! cuda 00:07:14 verbose #9112 > > ///! rust 00:07:14 verbose #9113 > > ///! typescript 00:07:14 verbose #9114 > > ///! python 00:07:14 verbose #9115 > > 00:07:14 verbose #9116 > > a' ;[[ -3i32; 6 ]] 00:07:14 verbose #9117 > > |> to_list' 00:07:14 verbose #9118 > > |> listm'.unbox 00:07:14 verbose #9119 > > |> _assert_eq [[ -3; 6 ]] 00:07:25 verbose #9120 > > 00:07:25 verbose #9121 > > ╭─[ 10.84s - return value ]────────────────────────────────────────────────────╮ 00:07:25 verbose #9122 > > │ .rs output: │ 00:07:25 verbose #9123 > > │ __assert_eq / actual: UH0_1(-3, UH0_1(6, UH0_0)) / expected: UH0_1(-3, │ 00:07:25 verbose #9124 > > │ UH0_1(6, UH0_0)) │ 00:07:25 verbose #9125 > > │ │ 00:07:25 verbose #9126 > > │ .ts output: │ 00:07:25 verbose #9127 > > │ __assert_eq / actual: UH0_1 (-3, UH0_1 (6, UH0_0)) / expected: UH0_1 (-3, │ 00:07:25 verbose #9128 > > │ UH0_1 (6, UH0_0)) │ 00:07:25 verbose #9129 > > │ │ 00:07:25 verbose #9130 > > │ .py output: │ 00:07:25 verbose #9131 > > │ __assert_eq / actual: UH0_1 (-3, UH0_1 (6, UH0_0)) / expected: UH0_1 (-3, │ 00:07:25 verbose #9132 > > │ UH0_1 (6, UH0_0)) │ 00:07:25 verbose #9133 > > │ │ 00:07:25 verbose #9134 > > │ │ 00:07:25 verbose #9135 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:25 verbose #9136 > > 00:07:25 verbose #9137 > > ╭─[ 10.84s - stdout ]──────────────────────────────────────────────────────────╮ 00:07:25 verbose #9138 > > │ .fsx output: │ 00:07:25 verbose #9139 > > │ __assert_eq / actual: UH0_1 (-3, UH0_1 (6, UH0_0)) / expected: UH0_1 (-3, │ 00:07:25 verbose #9140 > > │ UH0_1 (6, UH0_0)) │ 00:07:25 verbose #9141 > > │ │ 00:07:25 verbose #9142 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:25 verbose #9143 > > 00:07:25 verbose #9144 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:25 verbose #9145 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:25 verbose #9146 > > │ ### parallel_map │ 00:07:25 verbose #9147 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:25 verbose #9148 > > 00:07:25 verbose #9149 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:25 verbose #9150 > > inl parallel_map forall dim el el'. (fn : el -> el') (a : a dim el) : a dim el' 00:07:25 verbose #9151 > > = 00:07:25 verbose #9152 > > $'!a |> Array.Parallel.map !fn ' 00:07:25 verbose #9153 > > 00:07:25 verbose #9154 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:25 verbose #9155 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:25 verbose #9156 > > │ ### map' │ 00:07:25 verbose #9157 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:25 verbose #9158 > > 00:07:25 verbose #9159 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:25 verbose #9160 > > inl map' forall dim el el'. (fn : el -> el') (a : a dim el) : a dim el' = 00:07:25 verbose #9161 > > $'!a |> Array.map !fn ' 00:07:25 verbose #9162 > > 00:07:25 verbose #9163 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:25 verbose #9164 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:25 verbose #9165 > > │ ### sort_by │ 00:07:25 verbose #9166 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:25 verbose #9167 > > 00:07:25 verbose #9168 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:25 verbose #9169 > > inl sort_by forall dim el. (fn : el -> _) (a : a dim el) : a dim el = 00:07:25 verbose #9170 > > $'!a |> Array.sortBy !fn ' 00:07:25 verbose #9171 > > 00:07:25 verbose #9172 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:25 verbose #9173 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:25 verbose #9174 > > │ ### sort │ 00:07:25 verbose #9175 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:25 verbose #9176 > > 00:07:25 verbose #9177 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:25 verbose #9178 > > inl sort forall dim el. (a : a dim el) : a dim el = 00:07:25 verbose #9179 > > $'!a |> Array.sort' 00:07:25 verbose #9180 > > 00:07:25 verbose #9181 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:25 verbose #9182 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:25 verbose #9183 > > │ ### sort_descending │ 00:07:25 verbose #9184 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:25 verbose #9185 > > 00:07:25 verbose #9186 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:25 verbose #9187 > > inl sort_descending forall dim el. (a : a dim el) : a dim el = 00:07:25 verbose #9188 > > $'!a |> Array.sortDescending' 00:07:25 verbose #9189 > > 00:07:25 verbose #9190 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:25 verbose #9191 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:25 verbose #9192 > > │ ### transpose │ 00:07:25 verbose #9193 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:25 verbose #9194 > > 00:07:25 verbose #9195 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:25 verbose #9196 > > inl transpose forall el. (a : array_base (array_base el)) : array_base 00:07:25 verbose #9197 > > (array_base el) = 00:07:25 verbose #9198 > > $'!a |> Array.transpose' 00:07:26 verbose #9199 > > 00:07:26 verbose #9200 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:26 verbose #9201 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:26 verbose #9202 > > │ ### try_item │ 00:07:26 verbose #9203 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:26 verbose #9204 > > 00:07:26 verbose #9205 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:26 verbose #9206 > > inl try_item forall dim el. (i : i32) (a : a dim el) : option el = 00:07:26 verbose #9207 > > $'!a |> Array.tryItem !i ' |> optionm'.unbox 00:07:26 verbose #9208 > 00:01:54 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 101942 } 00:07:26 verbose #9209 > 00:01:54 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:07:26 verbose #9210 > "nbconvert", 00:07:26 verbose #9211 > "/home/runner/work/polyglot/polyglot/lib/spiral/am'.dib.ipynb", 00:07:26 verbose #9212 > "--to", 00:07:26 verbose #9213 > "html", 00:07:26 verbose #9214 > "--HTMLExporter.theme=dark", 00:07:26 verbose #9215 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/am'.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:07:26 verbose #9216 > 00:01:55 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/am'.dib.ipynb to html 00:07:26 verbose #9217 > 00:01:55 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:07:26 verbose #9218 > 00:01:55 verbose #7 ! validate(nb) 00:07:27 verbose #9219 > 00:01:55 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:07:27 verbose #9220 > 00:01:55 verbose #9 ! return _pygments_highlight( 00:07:27 verbose #9221 > 00:01:56 verbose #10 ! [NbConvertApp] Writing 460884 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/am'.dib.html 00:07:28 verbose #9222 > 00:01:56 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 890 } 00:07:28 verbose #9223 > 00:01:56 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 890 } 00:07:28 verbose #9224 > 00:01:56 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:07:28 verbose #9225 > "-c", 00:07:28 verbose #9226 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/am''.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:07:28 verbose #9227 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/am''.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:07:28 verbose #9228 > 00:01:56 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:07:28 verbose #9229 > 00:01:56 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:07:28 verbose #9230 > 00:01:56 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 102891 } 00:07:28 debug #9231 runtime.execute_with_options_async / { exit_code = 0; output_length = 108540 } 00:07:28 debug #10 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path am'.dib --retries 3 00:07:28 debug #9232 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path crypto.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:07:28 verbose #9233 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "crypto.dib", "--retries", "3"])) } 00:07:28 verbose #9234 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:07:28 verbose #9235 > "repl", 00:07:28 verbose #9236 > "--exit-after-run", 00:07:28 verbose #9237 > "--run", 00:07:28 verbose #9238 > "/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib", 00:07:28 verbose #9239 > "--output-path", 00:07:28 verbose #9240 > "/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.ipynb", 00:07:28 verbose #9241 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:07:29 verbose #9242 > > 00:07:29 verbose #9243 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:29 verbose #9244 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:29 verbose #9245 > > │ # crypto │ 00:07:29 verbose #9246 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:32 verbose #9247 > > 00:07:32 verbose #9248 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:32 verbose #9249 > > open rust 00:07:32 verbose #9250 > > open rust_operators 00:07:32 verbose #9251 > > 00:07:32 verbose #9252 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:32 verbose #9253 > > //// test 00:07:32 verbose #9254 > > 00:07:32 verbose #9255 > > open testing 00:07:32 verbose #9256 > > open file_system_operators 00:07:32 verbose #9257 > > 00:07:32 verbose #9258 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:32 verbose #9259 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:32 verbose #9260 > > │ ## fsharp │ 00:07:32 verbose #9261 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:32 verbose #9262 > > 00:07:32 verbose #9263 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:32 verbose #9264 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:32 verbose #9265 > > │ ### sha256 │ 00:07:32 verbose #9266 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:32 verbose #9267 > > 00:07:32 verbose #9268 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:32 verbose #9269 > > nominal sha256 = $'System.Security.Cryptography.SHA256' 00:07:32 verbose #9270 > > 00:07:32 verbose #9271 > > inl sha256 () : sha256 = 00:07:32 verbose #9272 > > $'`sha256.Create' () 00:07:33 verbose #9273 > > 00:07:33 verbose #9274 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:33 verbose #9275 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:33 verbose #9276 > > │ ### sha256_compute_hash │ 00:07:33 verbose #9277 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:33 verbose #9278 > > 00:07:33 verbose #9279 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:33 verbose #9280 > > inl sha256_compute_hash (x : sha256) (data : a i32 u8) : a i32 u8 = 00:07:33 verbose #9281 > > data |> $'!x.ComputeHash' 00:07:33 verbose #9282 > > 00:07:33 verbose #9283 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:33 verbose #9284 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:33 verbose #9285 > > │ ## rust │ 00:07:33 verbose #9286 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:33 verbose #9287 > > 00:07:33 verbose #9288 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:33 verbose #9289 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:33 verbose #9290 > > │ ### get_file_hash' │ 00:07:33 verbose #9291 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:33 verbose #9292 > > 00:07:33 verbose #9293 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:33 verbose #9294 > > inl get_file_hash' (path : string) : result string string = 00:07:33 verbose #9295 > > inl path = path |> file_system.normalize_path 00:07:33 verbose #9296 > > inl exit_code, result = 00:07:33 verbose #9297 > > runtime.execution_options fun x => { x with 00:07:33 verbose #9298 > > command = $'$"pwsh -c \\\"(Get-FileHash \'{!path}\' -Algorithm 00:07:33 verbose #9299 > > SHA256).Hash\\\""' 00:07:33 verbose #9300 > > } 00:07:33 verbose #9301 > > |> runtime.execute_with_options 00:07:33 verbose #9302 > > if exit_code = 0 00:07:33 verbose #9303 > > then result |> sm'.to_lower |> Ok 00:07:33 verbose #9304 > > else result |> Error 00:07:33 verbose #9305 > > 00:07:33 verbose #9306 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:33 verbose #9307 > > //// test 00:07:33 verbose #9308 > > 00:07:33 verbose #9309 > > inl file_name = "test.txt" 00:07:33 verbose #9310 > > inl text = "\n" 00:07:33 verbose #9311 > > 00:07:33 verbose #9312 > > inl temp_dir, disposable = 00:07:33 verbose #9313 > > (file_name, text) 00:07:33 verbose #9314 > > |> sm'.format_debug 00:07:33 verbose #9315 > > |> crypto.hash_text 00:07:33 verbose #9316 > > |> file_system.create_temp_dir' 00:07:33 verbose #9317 > > disposable |> use |> ignore 00:07:33 verbose #9318 > > inl path = temp_dir </> file_name 00:07:33 verbose #9319 > > text |> file_system.write_all_text_async path |> async.run_synchronously 00:07:33 verbose #9320 > > path 00:07:33 verbose #9321 > > |> get_file_hash' 00:07:33 verbose #9322 > > |> resultm.get 00:07:33 verbose #9323 > > |> _assert_eq "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" 00:07:40 verbose #9324 > > 00:07:40 verbose #9325 > > ╭─[ 7.81s - stdout ]───────────────────────────────────────────────────────────╮ 00:07:40 verbose #9326 > > │ 00:00:00 debug #1 runtime.execute_with_options_async / { options = { │ 00:07:40 verbose #9327 > > │ command = pwsh -c "(Get-FileHash │ 00:07:40 verbose #9328 > > │ '/tmp/!create_temp_path_/dotnet-repl/9ca8b18d-ee77-4684-ad12-21e1354945fc/te │ 00:07:40 verbose #9329 > > │ st.txt' -Algorithm SHA256).Hash"; cancellation_token = None; │ 00:07:40 verbose #9330 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:07:40 verbose #9331 > > │ working_directory = None } } │ 00:07:40 verbose #9332 > > │ 00:00:00 verbose #2 > │ 00:07:40 verbose #9333 > > │ 01BA4719C80B6FE911B091A7C05124B64EEECE964E09C058EF8F9805DACA546B │ 00:07:40 verbose #9334 > > │ 00:00:00 debug #3 runtime.execute_with_options_async / { exit_code = │ 00:07:40 verbose #9335 > > │ 0; output_length = 64 } │ 00:07:40 verbose #9336 > > │ __assert_eq / actual: │ 00:07:40 verbose #9337 > > │ "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" / │ 00:07:40 verbose #9338 > > │ expected: "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" │ 00:07:40 verbose #9339 > > │ │ 00:07:40 verbose #9340 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:40 verbose #9341 > > 00:07:40 verbose #9342 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:40 verbose #9343 > > //// test 00:07:40 verbose #9344 > > ///! rust -d chrono encoding_rs encoding_rs_io regex sha2 00:07:40 verbose #9345 > > 00:07:40 verbose #9346 > > inl file_name = "test.txt" 00:07:40 verbose #9347 > > inl text = "\n" 00:07:40 verbose #9348 > > 00:07:40 verbose #9349 > > inl temp_dir, disposable = 00:07:40 verbose #9350 > > (file_name, text) 00:07:40 verbose #9351 > > |> sm'.format_debug 00:07:40 verbose #9352 > > |> crypto.hash_text 00:07:40 verbose #9353 > > |> file_system.create_temp_dir' 00:07:40 verbose #9354 > > inl path = temp_dir </> file_name 00:07:40 verbose #9355 > > text |> file_system.write_all_text path 00:07:40 verbose #9356 > > path 00:07:40 verbose #9357 > > |> get_file_hash' 00:07:40 verbose #9358 > > |> resultm.get 00:07:40 verbose #9359 > > |> _assert_eq "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" 00:07:40 verbose #9360 > > disposable |> use |> ignore 00:07:57 verbose #9361 > > 00:07:57 verbose #9362 > > ╭─[ 16.83s - return value ]────────────────────────────────────────────────────╮ 00:07:57 verbose #9363 > > │ 00:00:00 verbose #1 file_system.create_dir / { dir = │ 00:07:57 verbose #9364 > > │ /tmp/!create_temp_path_/spiral_builder_b97c4da8ad0d16c12bdf59d72381ee374d7f3 │ 00:07:57 verbose #9365 > > │ 2edb99c30da17e97fc85f7b19bb/ba0aa16a-6c5a-be3f-b526-70110c680e36 } │ 00:07:57 verbose #9366 > > │ 00:00:00 debug #2 runtime.execute_with_options / { file_name = pwsh; │ 00:07:57 verbose #9367 > > │ arguments = [ │ 00:07:57 verbose #9368 > > │ "-c", │ 00:07:57 verbose #9369 > > │ "(Get-FileHash │ 00:07:57 verbose #9370 > > │ '/tmp/!create_temp_path_/spiral_builder_b97c4da8ad0d16c12bdf59d72381ee374d7f │ 00:07:57 verbose #9371 > > │ 32edb99c30da17e97fc85f7b19bb/ba0aa16a-6c5a-be3f-b526-70110c680e36/test.txt' │ 00:07:57 verbose #9372 > > │ -Algorithm SHA256).Hash", │ 00:07:57 verbose #9373 > > │ ]; options = { command = pwsh -c "(Get-FileHash │ 00:07:57 verbose #9374 > > │ '/tmp/!create_temp_path_/spiral_builder_b97c4da8ad0d16c12bdf59d72381ee374d7f │ 00:07:57 verbose #9375 > > │ 32edb99c30da17e97fc85f7b19bb/ba0aa16a-6c5a-be3f-b526-70110c680e36/test.txt' │ 00:07:57 verbose #9376 > > │ -Algorithm SHA256).Hash"; cancellation_token = None; environment_variables = │ 00:07:57 verbose #9377 > > │ Array(MutCell([])); on_line = None; stdin = None; trace = true; │ 00:07:57 verbose #9378 > > │ working_directory = None } } │ 00:07:57 verbose #9379 > > │ 00:00:00 verbose #3 > │ 00:07:57 verbose #9380 > > │ 01BA4719C80B6FE911B091A7C05124B64EEECE964E09C058EF8F9805DACA546B │ 00:07:57 verbose #9381 > > │ 00:00:00 verbose #4 runtime.execute_with_options / result / { │ 00:07:57 verbose #9382 > > │ exit_code = 0; std_trace_length = 64 } │ 00:07:57 verbose #9383 > > │ __assert_eq / actual: │ 00:07:57 verbose #9384 > > │ "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" / │ 00:07:57 verbose #9385 > > │ expected: "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" │ 00:07:57 verbose #9386 > > │ │ 00:07:57 verbose #9387 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:57 verbose #9388 > > 00:07:57 verbose #9389 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:57 verbose #9390 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:57 verbose #9391 > > │ ### sha256' │ 00:07:57 verbose #9392 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:57 verbose #9393 > > 00:07:57 verbose #9394 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:57 verbose #9395 > > nominal sha256' = 00:07:57 verbose #9396 > > `( 00:07:57 verbose #9397 > > backend_switch `(()) `({}) { 00:07:57 verbose #9398 > > Fsharp = 00:07:57 verbose #9399 > > (fun () => 00:07:57 verbose #9400 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:57 verbose #9401 > > Fable.Core.Emit(\"sha2::Sha256\")>]]\n#endif\ntype sha2_Sha256 = class end" 00:07:57 verbose #9402 > > ) : () -> () 00:07:57 verbose #9403 > > } 00:07:57 verbose #9404 > > $'' : $'sha2_Sha256' 00:07:57 verbose #9405 > > ) 00:07:57 verbose #9406 > > 00:07:57 verbose #9407 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:57 verbose #9408 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:57 verbose #9409 > > │ ### new_sha256 │ 00:07:57 verbose #9410 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:57 verbose #9411 > > 00:07:57 verbose #9412 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:57 verbose #9413 > > inl new_sha256 () : sha256' = 00:07:57 verbose #9414 > > !\($'"let result : sha2::Sha256 = sha2::Digest::new()"') 00:07:57 verbose #9415 > > !\($'"result"') 00:07:57 verbose #9416 > > 00:07:57 verbose #9417 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:57 verbose #9418 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:57 verbose #9419 > > │ ### hasher_update │ 00:07:57 verbose #9420 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:57 verbose #9421 > > 00:07:57 verbose #9422 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:57 verbose #9423 > > inl hasher_update forall el dim. (slice : rust.ref (am'.slice' el dim)) (hasher 00:07:57 verbose #9424 > > : sha256') : () = 00:07:57 verbose #9425 > > !\($'"sha2::Digest::update(&mut !hasher, !slice)"') 00:07:58 verbose #9426 > > 00:07:58 verbose #9427 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:58 verbose #9428 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:58 verbose #9429 > > │ ### hasher_finalize │ 00:07:58 verbose #9430 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:58 verbose #9431 > > 00:07:58 verbose #9432 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:58 verbose #9433 > > inl hasher_finalize (hasher : sha256') : rust.ref (am'.slice u8) = 00:07:58 verbose #9434 > > !\($'"&sha2::Digest::finalize(!hasher)"') 00:07:58 verbose #9435 > > 00:07:58 verbose #9436 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:58 verbose #9437 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:58 verbose #9438 > > │ ### hash_read │ 00:07:58 verbose #9439 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:58 verbose #9440 > > 00:07:58 verbose #9441 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:58 verbose #9442 > > inl hash_read data : resultm.result' string stream.io_error = 00:07:58 verbose #9443 > > inl reader = data |> stream.new_buf_reader 00:07:58 verbose #9444 > > (!\($'"true; let mut !reader = !reader"') : bool) |> ignore 00:07:58 verbose #9445 > > inl hasher = new_sha256 () 00:07:58 verbose #9446 > > (!\($'"true; let mut !hasher = !hasher"') : bool) |> ignore 00:07:58 verbose #9447 > > 00:07:58 verbose #9448 > > real 00:07:58 verbose #9449 > > inl size = 1024 00:07:58 verbose #9450 > > inl zero = convert `i32 `unativeint 0 00:07:58 verbose #9451 > > inl buffer = am'.new_slice `u8 `@size 0u8 00:07:58 verbose #9452 > > 00:07:58 verbose #9453 > > rust.loop 2 fun () => 00:07:58 verbose #9454 > > inl count = stream.buf_reader_read `u8 `@size buffer reader 00:07:58 verbose #9455 > > inl count = resultm.unwrap' `unativeint `(stream.io_error) count 00:07:58 verbose #9456 > > 00:07:58 verbose #9457 > > if (=.) `unativeint count zero then rust.break () 00:07:58 verbose #9458 > > 00:07:58 verbose #9459 > > hasher_update `u8 `@size 00:07:58 verbose #9460 > > ( 00:07:58 verbose #9461 > > am'.slice_range `u8 `@size 00:07:58 verbose #9462 > > (am'.Start `unativeint zero) 00:07:58 verbose #9463 > > (am'.End `unativeint ((fun _ => count) : unativeint -> 00:07:58 verbose #9464 > > unativeint)) 00:07:58 verbose #9465 > > buffer 00:07:58 verbose #9466 > > ) 00:07:58 verbose #9467 > > hasher 00:07:58 verbose #9468 > > 00:07:58 verbose #9469 > > hasher 00:07:58 verbose #9470 > > |> hasher_finalize 00:07:58 verbose #9471 > > |> am'.slice_to_vec 00:07:58 verbose #9472 > > |> am'.vec_map (sm'.format_hex' >> sm'.from_std_string) 00:07:58 verbose #9473 > > |> am'.from_vec 00:07:58 verbose #9474 > > |> fun x => x : _ i32 _ 00:07:58 verbose #9475 > > |> seq.of_array' 00:07:58 verbose #9476 > > |> sm'.concat (join "") 00:07:58 verbose #9477 > > |> Ok 00:07:58 verbose #9478 > > |> resultm.box 00:07:58 verbose #9479 > > 00:07:58 verbose #9480 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:58 verbose #9481 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:07:58 verbose #9482 > > │ ### get_file_hash │ 00:07:58 verbose #9483 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:07:58 verbose #9484 > > 00:07:58 verbose #9485 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:58 verbose #9486 > > inl get_file_hash (path : string) = 00:07:58 verbose #9487 > > inl path = path |> file_system.normalize_path 00:07:58 verbose #9488 > > inl file = path |> file_system.file_open |> resultm.unwrap' 00:07:58 verbose #9489 > > inl reader = file |> stream.new_buf_reader 00:07:58 verbose #9490 > > reader 00:07:58 verbose #9491 > > |> hash_read 00:07:58 verbose #9492 > > 00:07:58 verbose #9493 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:58 verbose #9494 > > //// test 00:07:58 verbose #9495 > > ///! rust -d chrono regex sha2 00:07:58 verbose #9496 > > 00:07:58 verbose #9497 > > inl file_name = join "test.txt" 00:07:58 verbose #9498 > > inl text = "\n" 00:07:58 verbose #9499 > > 00:07:58 verbose #9500 > > inl temp_dir, disposable = 00:07:58 verbose #9501 > > (file_name, text) 00:07:58 verbose #9502 > > |> sm'.format_debug 00:07:58 verbose #9503 > > |> crypto.hash_text 00:07:58 verbose #9504 > > |> file_system.create_temp_dir' 00:07:58 verbose #9505 > > 00:07:58 verbose #9506 > > inl path = temp_dir </> file_name 00:07:58 verbose #9507 > > text |> file_system.write_all_text path 00:07:58 verbose #9508 > > 00:07:58 verbose #9509 > > path 00:07:58 verbose #9510 > > |> get_file_hash 00:07:58 verbose #9511 > > |> resultm.unwrap' 00:07:58 verbose #9512 > > |> _assert_eq "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" 00:07:58 verbose #9513 > > disposable |> use |> ignore 00:08:07 verbose #9514 > > 00:08:07 verbose #9515 > > ╭─[ 9.53s - return value ]─────────────────────────────────────────────────────╮ 00:08:07 verbose #9516 > > │ 00:00:00 verbose #1 file_system.create_dir / { dir = │ 00:08:07 verbose #9517 > > │ /tmp/!create_temp_path_/spiral_builder_81c8b6082da238438a508899ab4a79cd7a06e │ 00:08:07 verbose #9518 > > │ f64555e21fd12d4f1278d053cae/ba0aa16a-6c5a-be3f-b526-70110c680e36 } │ 00:08:07 verbose #9519 > > │ __assert_eq / actual: │ 00:08:07 verbose #9520 > > │ "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" / │ 00:08:07 verbose #9521 > > │ expected: "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" │ 00:08:07 verbose #9522 > > │ │ 00:08:07 verbose #9523 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:07 verbose #9524 > > 00:08:07 verbose #9525 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:07 verbose #9526 > > //// test 00:08:07 verbose #9527 > > ///! rust -d chrono regex sha2 00:08:07 verbose #9528 > > 00:08:07 verbose #9529 > > inl file_name = join "test.txt" 00:08:07 verbose #9530 > > inl text = "" 00:08:07 verbose #9531 > > 00:08:07 verbose #9532 > > inl temp_dir, disposable = 00:08:07 verbose #9533 > > (file_name, text) 00:08:07 verbose #9534 > > |> sm'.format_debug 00:08:07 verbose #9535 > > |> crypto.hash_text 00:08:07 verbose #9536 > > |> file_system.create_temp_dir' 00:08:07 verbose #9537 > > 00:08:07 verbose #9538 > > inl path = temp_dir </> file_name 00:08:07 verbose #9539 > > text |> file_system.write_all_text path 00:08:07 verbose #9540 > > path 00:08:07 verbose #9541 > > |> get_file_hash 00:08:07 verbose #9542 > > |> resultm.unwrap' 00:08:07 verbose #9543 > > |> _assert_eq "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" 00:08:07 verbose #9544 > > disposable |> use |> ignore 00:08:17 verbose #9545 > > 00:08:17 verbose #9546 > > ╭─[ 9.53s - return value ]─────────────────────────────────────────────────────╮ 00:08:17 verbose #9547 > > │ 00:00:00 verbose #1 file_system.create_dir / { dir = │ 00:08:17 verbose #9548 > > │ /tmp/!create_temp_path_/spiral_builder_665cb3f007374c31147d80efe6504bb8f003a │ 00:08:17 verbose #9549 > > │ 1263c3d66315f072b40bea0bf82/c0e26dac-4cb1-4b09-be07-ff616700f056 } │ 00:08:17 verbose #9550 > > │ __assert_eq / actual: │ 00:08:17 verbose #9551 > > │ "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" / │ 00:08:17 verbose #9552 > > │ expected: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" │ 00:08:17 verbose #9553 > > │ │ 00:08:17 verbose #9554 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:17 verbose #9555 > > 00:08:17 verbose #9556 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:17 verbose #9557 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:17 verbose #9558 > > │ ## typescript │ 00:08:17 verbose #9559 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:17 verbose #9560 > > 00:08:17 verbose #9561 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:17 verbose #9562 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:17 verbose #9563 > > │ ### create_hash │ 00:08:17 verbose #9564 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:17 verbose #9565 > > 00:08:17 verbose #9566 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:17 verbose #9567 > > inl create_hash (x : string) : any = 00:08:17 verbose #9568 > > open typescript_operators 00:08:17 verbose #9569 > > global "type ICryptoCreateHash = abstract createHash: x: string -> obj" 00:08:17 verbose #9570 > > inl crypto : $'ICryptoCreateHash' = typescript.import_all "crypto" 00:08:17 verbose #9571 > > !\\(x, $'"!crypto.createHash($0)"') 00:08:17 verbose #9572 > > 00:08:17 verbose #9573 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:17 verbose #9574 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:17 verbose #9575 > > │ ### hash_update │ 00:08:17 verbose #9576 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:17 verbose #9577 > > 00:08:17 verbose #9578 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:17 verbose #9579 > > inl hash_update (s : string) (x : any) : any = 00:08:17 verbose #9580 > > open typescript_operators 00:08:17 verbose #9581 > > !\\((x, s), $'"$0.update($1, \'utf8\')"') 00:08:17 verbose #9582 > > 00:08:17 verbose #9583 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:17 verbose #9584 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:17 verbose #9585 > > │ ### hash_digest │ 00:08:17 verbose #9586 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:17 verbose #9587 > > 00:08:17 verbose #9588 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:17 verbose #9589 > > inl hash_digest (s : string) (x : any) : string = 00:08:17 verbose #9590 > > open typescript_operators 00:08:17 verbose #9591 > > !\\((x, s), $'"$0.digest($1)"') 00:08:17 verbose #9592 > > 00:08:17 verbose #9593 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:17 verbose #9594 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:17 verbose #9595 > > │ ## python │ 00:08:17 verbose #9596 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:17 verbose #9597 > > 00:08:17 verbose #9598 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:17 verbose #9599 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:17 verbose #9600 > > │ ### py_sha256 │ 00:08:17 verbose #9601 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:17 verbose #9602 > > 00:08:17 verbose #9603 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:17 verbose #9604 > > nominal py_sha256 = any 00:08:17 verbose #9605 > > 00:08:17 verbose #9606 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:17 verbose #9607 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:17 verbose #9608 > > │ ### hashlib_sha256 │ 00:08:17 verbose #9609 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:17 verbose #9610 > > 00:08:17 verbose #9611 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:17 verbose #9612 > > inl hashlib_sha256 () : py_sha256 = 00:08:17 verbose #9613 > > backend_switch { 00:08:17 verbose #9614 > > Fsharp = fun () => 00:08:17 verbose #9615 > > open python_operators 00:08:17 verbose #9616 > > global "type IHashlibSha256 = abstract sha256: x: unit -> obj" 00:08:17 verbose #9617 > > inl hashlib : $'IHashlibSha256' = python.import_all "hashlib" 00:08:17 verbose #9618 > > !\($'"!hashlib.sha256()"') : py_sha256 00:08:17 verbose #9619 > > Python = fun () => 00:08:17 verbose #9620 > > global "import hashlib" 00:08:17 verbose #9621 > > $'hashlib.sha256()' : py_sha256 00:08:17 verbose #9622 > > } 00:08:17 verbose #9623 > > 00:08:17 verbose #9624 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:17 verbose #9625 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:17 verbose #9626 > > │ ### sha256_update │ 00:08:17 verbose #9627 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:17 verbose #9628 > > 00:08:17 verbose #9629 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:17 verbose #9630 > > inl sha256_update (x : string) (sha256 : py_sha256) : py_sha256 = 00:08:17 verbose #9631 > > backend_switch { 00:08:17 verbose #9632 > > Fsharp = fun () => 00:08:17 verbose #9633 > > open python_operators 00:08:17 verbose #9634 > > !\\(x, $'"!sha256.update($0)"') : () 00:08:17 verbose #9635 > > Python = fun () => 00:08:17 verbose #9636 > > $'!sha256.update(!x)' : () 00:08:17 verbose #9637 > > } 00:08:17 verbose #9638 > > sha256 00:08:17 verbose #9639 > > 00:08:17 verbose #9640 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:17 verbose #9641 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:17 verbose #9642 > > │ ### sha256_hexdigest │ 00:08:17 verbose #9643 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:17 verbose #9644 > > 00:08:17 verbose #9645 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:17 verbose #9646 > > inl sha256_hexdigest (sha256 : py_sha256) : string = 00:08:17 verbose #9647 > > backend_switch { 00:08:17 verbose #9648 > > Fsharp = fun () => 00:08:17 verbose #9649 > > open python_operators 00:08:17 verbose #9650 > > !\($'"!sha256.hexdigest()"') : string 00:08:17 verbose #9651 > > Python = fun () => 00:08:17 verbose #9652 > > $'!sha256.hexdigest()' : string 00:08:17 verbose #9653 > > } 00:08:18 verbose #9654 > > 00:08:18 verbose #9655 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:18 verbose #9656 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:18 verbose #9657 > > │ ## crypto │ 00:08:18 verbose #9658 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:18 verbose #9659 > > 00:08:18 verbose #9660 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:18 verbose #9661 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:18 verbose #9662 > > │ ### hash_text │ 00:08:18 verbose #9663 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:18 verbose #9664 > > 00:08:18 verbose #9665 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:18 verbose #9666 > > let hash_text (~input : string) = 00:08:18 verbose #9667 > > run_target function 00:08:18 verbose #9668 > > | Fsharp (Native) => fun () => 00:08:18 verbose #9669 > > inl sha256 = sha256 () |> use 00:08:18 verbose #9670 > > input 00:08:18 verbose #9671 > > |> sm'.utf8_get_bytes 00:08:18 verbose #9672 > > |> sha256_compute_hash sha256 00:08:18 verbose #9673 > > |> am.map (sm'.byte_to_string "x2") 00:08:18 verbose #9674 > > |> seq.of_array' 00:08:18 verbose #9675 > > |> sm'.concat (join "") 00:08:18 verbose #9676 > > | TypeScript (Native) => fun () => 00:08:18 verbose #9677 > > create_hash "sha256" 00:08:18 verbose #9678 > > |> hash_update input 00:08:18 verbose #9679 > > |> hash_digest "hex" 00:08:18 verbose #9680 > > | Rust (Native) => fun () => 00:08:18 verbose #9681 > > input 00:08:18 verbose #9682 > > |> sm'.utf8_get_bytes 00:08:18 verbose #9683 > > |> fun (a x) => x 00:08:18 verbose #9684 > > |> am'.to_vec 00:08:18 verbose #9685 > > |> stream.new_cursor 00:08:18 verbose #9686 > > |> hash_read 00:08:18 verbose #9687 > > |> resultm.unwrap' 00:08:18 verbose #9688 > > | Python (Native) | Cuda (Native) => fun () => 00:08:18 verbose #9689 > > hashlib_sha256 () 00:08:18 verbose #9690 > > |> sha256_update (input |> sm'.encode_utf8) 00:08:18 verbose #9691 > > |> sha256_hexdigest 00:08:18 verbose #9692 > > | _ => fun () => null () 00:08:18 verbose #9693 > > 00:08:18 verbose #9694 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:18 verbose #9695 > > //// test 00:08:18 verbose #9696 > > ///! fsharp 00:08:18 verbose #9697 > > ///! cuda 00:08:18 verbose #9698 > > ///! rust -d sha2 00:08:18 verbose #9699 > > ///! typescript 00:08:18 verbose #9700 > > ///! python 00:08:18 verbose #9701 > > 00:08:18 verbose #9702 > > "\n" 00:08:18 verbose #9703 > > |> hash_text 00:08:18 verbose #9704 > > |> _assert_eq "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" 00:08:18 verbose #9705 > > 00:08:18 verbose #9706 > > "" 00:08:18 verbose #9707 > > |> hash_text 00:08:18 verbose #9708 > > |> _assert_eq "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" 00:08:30 verbose #9709 > > 00:08:30 verbose #9710 > > ╭─[ 12.12s - return value ]────────────────────────────────────────────────────╮ 00:08:30 verbose #9711 > > │ │ 00:08:30 verbose #9712 > > │ .py output (Cuda): │ 00:08:30 verbose #9713 > > │ __assert_eq / actual: │ 00:08:30 verbose #9714 > > │ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b / expected: │ 00:08:30 verbose #9715 > > │ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b │ 00:08:30 verbose #9716 > > │ __assert_eq / actual: │ 00:08:30 verbose #9717 > > │ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 / expected: │ 00:08:30 verbose #9718 > > │ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 │ 00:08:30 verbose #9719 > > │ │ 00:08:30 verbose #9720 > > │ │ 00:08:30 verbose #9721 > > │ .rs output (rust -d sha2): │ 00:08:30 verbose #9722 > > │ __assert_eq / actual: │ 00:08:30 verbose #9723 > > │ "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" / │ 00:08:30 verbose #9724 > > │ expected: "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" │ 00:08:30 verbose #9725 > > │ __assert_eq / actual: │ 00:08:30 verbose #9726 > > │ "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" / │ 00:08:30 verbose #9727 > > │ expected: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" │ 00:08:30 verbose #9728 > > │ │ 00:08:30 verbose #9729 > > │ │ 00:08:30 verbose #9730 > > │ .ts output: │ 00:08:30 verbose #9731 > > │ __assert_eq / actual: │ 00:08:30 verbose #9732 > > │ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b / expected: │ 00:08:30 verbose #9733 > > │ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b │ 00:08:30 verbose #9734 > > │ __assert_eq / actual: │ 00:08:30 verbose #9735 > > │ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 / expected: │ 00:08:30 verbose #9736 > > │ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 │ 00:08:30 verbose #9737 > > │ │ 00:08:30 verbose #9738 > > │ │ 00:08:30 verbose #9739 > > │ .py output: │ 00:08:30 verbose #9740 > > │ __assert_eq / actual: │ 00:08:30 verbose #9741 > > │ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b / expected: │ 00:08:30 verbose #9742 > > │ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b │ 00:08:30 verbose #9743 > > │ __assert_eq / actual: │ 00:08:30 verbose #9744 > > │ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 / expected: │ 00:08:30 verbose #9745 > > │ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 │ 00:08:30 verbose #9746 > > │ │ 00:08:30 verbose #9747 > > │ │ 00:08:30 verbose #9748 > > │ │ 00:08:30 verbose #9749 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:30 verbose #9750 > > 00:08:30 verbose #9751 > > ╭─[ 12.12s - stdout ]──────────────────────────────────────────────────────────╮ 00:08:30 verbose #9752 > > │ .fsx output: │ 00:08:30 verbose #9753 > > │ __assert_eq / actual: │ 00:08:30 verbose #9754 > > │ "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" / │ 00:08:30 verbose #9755 > > │ expected: "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" │ 00:08:30 verbose #9756 > > │ __assert_eq / actual: │ 00:08:30 verbose #9757 > > │ "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" / │ 00:08:30 verbose #9758 > > │ expected: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" │ 00:08:30 verbose #9759 > > │ │ 00:08:30 verbose #9760 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:30 verbose #9761 > > 00:08:30 verbose #9762 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:30 verbose #9763 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:30 verbose #9764 > > │ ### hash_to_port │ 00:08:30 verbose #9765 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:30 verbose #9766 > > 00:08:30 verbose #9767 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:30 verbose #9768 > > inl hash_to_port (text : string) : u16 = 00:08:30 verbose #9769 > > inl first_letter_code = text |> sm'.index 0i32 |> i32 00:08:30 verbose #9770 > > inl hash_part = text |> sm'.slice 0i32 7 00:08:30 verbose #9771 > > inl combined_value = convert_i32_base 16 hash_part + first_letter_code |> 00:08:30 verbose #9772 > > u16 00:08:30 verbose #9773 > > trace Verbose 00:08:30 verbose #9774 > > fun () => "crypto.hash_to_port" 00:08:30 verbose #9775 > > fun () => { first_letter_code hash_part combined_value } 00:08:30 verbose #9776 > > combined_value % 48128 + 1024 00:08:30 verbose #9777 > > 00:08:30 verbose #9778 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:30 verbose #9779 > > //// test 00:08:30 verbose #9780 > > ///! fsharp 00:08:30 verbose #9781 > > ////! cuda // Only stack allocated primitive types (i8,i16,i32,i64 and 00:08:30 verbose #9782 > > u8,u16,u32,u64 and f32,f64 and bool) are allowed in CuPy arrays. 00:08:30 verbose #9783 > > ///! rust -d sha2 00:08:30 verbose #9784 > > ///! typescript 00:08:30 verbose #9785 > > ///! python 00:08:30 verbose #9786 > > 00:08:30 verbose #9787 > > "\n" 00:08:30 verbose #9788 > > |> hash_text 00:08:30 verbose #9789 > > |> hash_to_port 00:08:30 verbose #9790 > > |> _assert_eq 19273 00:08:42 verbose #9791 > > 00:08:42 verbose #9792 > > ╭─[ 12.27s - return value ]────────────────────────────────────────────────────╮ 00:08:42 verbose #9793 > > │ │ 00:08:42 verbose #9794 > > │ .rs output (rust -d sha2): │ 00:08:42 verbose #9795 > > │ 00:00:00 verbose #1 crypto.hash_to_port / { first_letter_code = 48; │ 00:08:42 verbose #9796 > > │ hash_part = 01ba4719; combined_value = 18249 } │ 00:08:42 verbose #9797 > > │ __assert_eq / actual: 19273 / expected: 19273 │ 00:08:42 verbose #9798 > > │ │ 00:08:42 verbose #9799 > > │ │ 00:08:42 verbose #9800 > > │ .ts output: │ 00:08:42 verbose #9801 > > │ 00:00:00 verbose #1 crypto.hash_to_port / { first_letter_code = 48; │ 00:08:42 verbose #9802 > > │ hash_part = 01ba4719; combined_value = 18249 } │ 00:08:42 verbose #9803 > > │ __assert_eq / actual: 19273 / expected: 19273 │ 00:08:42 verbose #9804 > > │ │ 00:08:42 verbose #9805 > > │ │ 00:08:42 verbose #9806 > > │ .py output: │ 00:08:42 verbose #9807 > > │ 00:00:00 verbose #1 crypto.hash_to_port / { first_letter_code = 48; │ 00:08:42 verbose #9808 > > │ hash_part = 01ba4719; combined_value = 18249 } │ 00:08:42 verbose #9809 > > │ __assert_eq / actual: 19273 / expected: 19273 │ 00:08:42 verbose #9810 > > │ │ 00:08:42 verbose #9811 > > │ │ 00:08:42 verbose #9812 > > │ │ 00:08:42 verbose #9813 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:42 verbose #9814 > > 00:08:42 verbose #9815 > > ╭─[ 12.27s - stdout ]──────────────────────────────────────────────────────────╮ 00:08:42 verbose #9816 > > │ .fsx output: │ 00:08:42 verbose #9817 > > │ 00:00:00 verbose #1 crypto.hash_to_port / { first_letter_code = 48; │ 00:08:42 verbose #9818 > > │ hash_part = 01ba4719; combined_value = 18249 } │ 00:08:42 verbose #9819 > > │ __assert_eq / actual: 19273us / expected: 19273us │ 00:08:42 verbose #9820 > > │ │ 00:08:42 verbose #9821 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:42 verbose #9822 > > 00:08:42 verbose #9823 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:42 verbose #9824 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:42 verbose #9825 > > │ ## main │ 00:08:42 verbose #9826 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:42 verbose #9827 > > 00:08:42 verbose #9828 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:42 verbose #9829 > > inl main () = 00:08:42 verbose #9830 > > $'let hash_text x = !hash_text x' : () 00:08:42 verbose #9831 > > $'let hash_to_port x = !hash_to_port x' : () 00:08:43 verbose #9832 > 00:01:14 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 35439 } 00:08:43 verbose #9833 > 00:01:14 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:08:43 verbose #9834 > "nbconvert", 00:08:43 verbose #9835 > "/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.ipynb", 00:08:43 verbose #9836 > "--to", 00:08:43 verbose #9837 > "html", 00:08:43 verbose #9838 > "--HTMLExporter.theme=dark", 00:08:43 verbose #9839 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:08:43 verbose #9840 > 00:01:15 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.ipynb to html 00:08:43 verbose #9841 > 00:01:15 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:08:43 verbose #9842 > 00:01:15 verbose #7 ! validate(nb) 00:08:44 verbose #9843 > 00:01:15 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:08:44 verbose #9844 > 00:01:15 verbose #9 ! return _pygments_highlight( 00:08:44 verbose #9845 > 00:01:16 verbose #10 ! [NbConvertApp] Writing 341946 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.html 00:08:44 verbose #9846 > 00:01:16 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 896 } 00:08:44 verbose #9847 > 00:01:16 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 896 } 00:08:44 verbose #9848 > 00:01:16 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:08:44 verbose #9849 > "-c", 00:08:44 verbose #9850 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:08:44 verbose #9851 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:08:44 verbose #9852 > 00:01:16 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:08:44 verbose #9853 > 00:01:16 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:08:44 verbose #9854 > 00:01:16 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 36394 } 00:08:44 debug #9855 runtime.execute_with_options_async / { exit_code = 0; output_length = 40418 } 00:08:44 debug #11 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path crypto.dib --retries 3 00:08:44 debug #9856 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path common.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:08:44 verbose #9857 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "common.dib", "--retries", "3"])) } 00:08:44 verbose #9858 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:08:44 verbose #9859 > "repl", 00:08:44 verbose #9860 > "--exit-after-run", 00:08:44 verbose #9861 > "--run", 00:08:44 verbose #9862 > "/home/runner/work/polyglot/polyglot/lib/spiral/common.dib", 00:08:44 verbose #9863 > "--output-path", 00:08:44 verbose #9864 > "/home/runner/work/polyglot/polyglot/lib/spiral/common.dib.ipynb", 00:08:44 verbose #9865 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/common.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/common.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:08:46 verbose #9866 > > 00:08:46 verbose #9867 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:46 verbose #9868 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:46 verbose #9869 > > │ # common │ 00:08:46 verbose #9870 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:48 verbose #9871 > > 00:08:48 verbose #9872 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:48 verbose #9873 > > //// test 00:08:48 verbose #9874 > > 00:08:48 verbose #9875 > > open testing 00:08:49 verbose #9876 > > 00:08:49 verbose #9877 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:49 verbose #9878 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:49 verbose #9879 > > │ ## common │ 00:08:49 verbose #9880 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:49 verbose #9881 > > 00:08:49 verbose #9882 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:49 verbose #9883 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:49 verbose #9884 > > │ ### (:>) │ 00:08:49 verbose #9885 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:49 verbose #9886 > > 00:08:49 verbose #9887 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:49 verbose #9888 > > prototype (~:>) r : forall t. t -> r 00:08:49 verbose #9889 > > 00:08:49 verbose #9890 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:49 verbose #9891 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:49 verbose #9892 > > │ ### to_any │ 00:08:49 verbose #9893 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:49 verbose #9894 > > 00:08:49 verbose #9895 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:49 verbose #9896 > > inl to_any forall t. (obj : t) : any = 00:08:49 verbose #9897 > > $'!obj ' 00:08:49 verbose #9898 > > 00:08:49 verbose #9899 > > instance (~:>) any = to_any 00:08:49 verbose #9900 > > 00:08:49 verbose #9901 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:49 verbose #9902 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:08:49 verbose #9903 > > │ ### (||>) │ 00:08:49 verbose #9904 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:08:49 verbose #9905 > > 00:08:49 verbose #9906 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:49 verbose #9907 > > //// test 00:08:49 verbose #9908 > > ///! fsharp 00:08:49 verbose #9909 > > ///! cuda 00:08:49 verbose #9910 > > ///! rust 00:08:49 verbose #9911 > > ///! typescript 00:08:49 verbose #9912 > > ///! python 00:08:49 verbose #9913 > > 00:08:49 verbose #9914 > > (3i32, 2i32) 00:08:49 verbose #9915 > > ||> fun a b => a - b 00:08:49 verbose #9916 > > |> _assert_eq 1 00:09:00 verbose #9917 > > 00:09:00 verbose #9918 > > ╭─[ 11.40s - return value ]────────────────────────────────────────────────────╮ 00:09:00 verbose #9919 > > │ .py output (Cuda): │ 00:09:00 verbose #9920 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:09:00 verbose #9921 > > │ │ 00:09:00 verbose #9922 > > │ .rs output: │ 00:09:00 verbose #9923 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:09:00 verbose #9924 > > │ │ 00:09:00 verbose #9925 > > │ .ts output: │ 00:09:00 verbose #9926 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:09:00 verbose #9927 > > │ │ 00:09:00 verbose #9928 > > │ .py output: │ 00:09:00 verbose #9929 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:09:00 verbose #9930 > > │ │ 00:09:00 verbose #9931 > > │ │ 00:09:00 verbose #9932 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:00 verbose #9933 > > 00:09:00 verbose #9934 > > ╭─[ 11.41s - stdout ]──────────────────────────────────────────────────────────╮ 00:09:00 verbose #9935 > > │ .fsx output: │ 00:09:00 verbose #9936 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:09:00 verbose #9937 > > │ │ 00:09:00 verbose #9938 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:00 verbose #9939 > > 00:09:00 verbose #9940 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:00 verbose #9941 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:00 verbose #9942 > > │ ### flip │ 00:09:00 verbose #9943 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:00 verbose #9944 > > 00:09:00 verbose #9945 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:00 verbose #9946 > > inl flip fn a b = 00:09:00 verbose #9947 > > fn b a 00:09:00 verbose #9948 > > 00:09:00 verbose #9949 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:00 verbose #9950 > > //// test 00:09:00 verbose #9951 > > ///! fsharp 00:09:00 verbose #9952 > > ///! cuda 00:09:00 verbose #9953 > > ///! rust 00:09:00 verbose #9954 > > ///! typescript 00:09:00 verbose #9955 > > ///! python 00:09:00 verbose #9956 > > 00:09:00 verbose #9957 > > (1i32, 2i32) 00:09:00 verbose #9958 > > ||> flip pair 00:09:00 verbose #9959 > > |> _assert_eq (2, 1) 00:09:11 verbose #9960 > > 00:09:11 verbose #9961 > > ╭─[ 10.60s - return value ]────────────────────────────────────────────────────╮ 00:09:11 verbose #9962 > > │ .py output (Cuda): │ 00:09:11 verbose #9963 > > │ __assert_eq / actual: (2, 1) / expected: (2, 1) │ 00:09:11 verbose #9964 > > │ │ 00:09:11 verbose #9965 > > │ .rs output: │ 00:09:11 verbose #9966 > > │ __assert_eq / actual: (2, 1) / expected: (2, 1) │ 00:09:11 verbose #9967 > > │ │ 00:09:11 verbose #9968 > > │ .ts output: │ 00:09:11 verbose #9969 > > │ __assert_eq / actual: 2,1 / expected: 2,1 │ 00:09:11 verbose #9970 > > │ │ 00:09:11 verbose #9971 > > │ .py output: │ 00:09:11 verbose #9972 > > │ __assert_eq / actual: (2, 1) / expected: (2, 1) │ 00:09:11 verbose #9973 > > │ │ 00:09:11 verbose #9974 > > │ │ 00:09:11 verbose #9975 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:11 verbose #9976 > > 00:09:11 verbose #9977 > > ╭─[ 10.60s - stdout ]──────────────────────────────────────────────────────────╮ 00:09:11 verbose #9978 > > │ .fsx output: │ 00:09:11 verbose #9979 > > │ __assert_eq / actual: struct (2, 1) / expected: struct (2, 1) │ 00:09:11 verbose #9980 > > │ │ 00:09:11 verbose #9981 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:11 verbose #9982 > > 00:09:11 verbose #9983 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:11 verbose #9984 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:11 verbose #9985 > > │ ### join_body │ 00:09:11 verbose #9986 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:11 verbose #9987 > > 00:09:11 verbose #9988 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:11 verbose #9989 > > inl join_body body acc x = 00:09:11 verbose #9990 > > if var_is x |> not 00:09:11 verbose #9991 > > then body acc x 00:09:11 verbose #9992 > > else 00:09:11 verbose #9993 > > inl acc = dyn acc 00:09:11 verbose #9994 > > join body acc x 00:09:11 verbose #9995 > > 00:09:11 verbose #9996 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:11 verbose #9997 > > //// test 00:09:11 verbose #9998 > > 00:09:11 verbose #9999 > > inl rec fold_list f s = function 00:09:11 verbose #10000 > > | Cons (x, x') => fold_list f (f s x) x' 00:09:11 verbose #10001 > > | Nil => s 00:09:11 verbose #10002 > > 00:09:11 verbose #10003 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:11 verbose #10004 > > //// test 00:09:11 verbose #10005 > > ///! fsharp 00:09:11 verbose #10006 > > ///! cuda 00:09:11 verbose #10007 > > ///! rust 00:09:11 verbose #10008 > > ///! typescript 00:09:11 verbose #10009 > > ///! python 00:09:11 verbose #10010 > > //// print_code=true 00:09:11 verbose #10011 > > 00:09:11 verbose #10012 > > [[ 5i32; 4; join 3; 2; 1 ]] 00:09:11 verbose #10013 > > |> fold_list (+) 0 00:09:11 verbose #10014 > > |> _assert_eq 15 00:09:22 verbose #10015 > > 00:09:22 verbose #10016 > > ╭─[ 11.08s - return value ]────────────────────────────────────────────────────╮ 00:09:22 verbose #10017 > > │ .py output (Cuda): │ 00:09:22 verbose #10018 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:09:22 verbose #10019 > > │ │ 00:09:22 verbose #10020 > > │ .rs output: │ 00:09:22 verbose #10021 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:09:22 verbose #10022 > > │ │ 00:09:22 verbose #10023 > > │ .ts output: │ 00:09:22 verbose #10024 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:09:22 verbose #10025 > > │ │ 00:09:22 verbose #10026 > > │ .py output: │ 00:09:22 verbose #10027 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:09:22 verbose #10028 > > │ │ 00:09:22 verbose #10029 > > │ │ 00:09:22 verbose #10030 > > │ │ 00:09:22 verbose #10031 > > │ │ 00:09:22 verbose #10032 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:22 verbose #10033 > > 00:09:22 verbose #10034 > > ╭─[ 11.08s - stdout ]──────────────────────────────────────────────────────────╮ 00:09:22 verbose #10035 > > │ .fsx: │ 00:09:22 verbose #10036 > > │ let rec method1 () : int32 = │ 00:09:22 verbose #10037 > > │ 3 │ 00:09:22 verbose #10038 > > │ and method2 (v0 : bool) : bool = │ 00:09:22 verbose #10039 > > │ v0 │ 00:09:22 verbose #10040 > > │ and closure0 (v0 : string) () : unit = │ 00:09:22 verbose #10041 > > │ let v1 : (string -> unit) = System.Console.WriteLine │ 00:09:22 verbose #10042 > > │ v1 v0 │ 00:09:22 verbose #10043 > > │ and method0 () : unit = │ 00:09:22 verbose #10044 > > │ let v0 : int32 = method1() │ 00:09:22 verbose #10045 > > │ let v1 : int32 = 9 + v0 │ 00:09:22 verbose #10046 > > │ let v2 : int32 = v1 + 2 │ 00:09:22 verbose #10047 > > │ let v3 : int32 = v2 + 1 │ 00:09:22 verbose #10048 > > │ let v4 : bool = v3 = 15 │ 00:09:22 verbose #10049 > > │ let v6 : bool = │ 00:09:22 verbose #10050 > > │ if v4 then │ 00:09:22 verbose #10051 > > │ true │ 00:09:22 verbose #10052 > > │ else │ 00:09:22 verbose #10053 > > │ method2(v4) │ 00:09:22 verbose #10054 > > │ let v7 : string = "__assert_eq" │ 00:09:22 verbose #10055 > > │ let v8 : string = $"{v7} / actual: %A{v3} / expected: %A{15}" │ 00:09:22 verbose #10056 > > │ let v11 : unit = () │ 00:09:22 verbose #10057 > > │ let v12 : (unit -> unit) = closure0(v8) │ 00:09:22 verbose #10058 > > │ let v13 : unit = (fun () -> v12 (); v11) () │ 00:09:22 verbose #10059 > > │ let v15 : bool = v6 = false │ 00:09:22 verbose #10060 > > │ if v15 then │ 00:09:22 verbose #10061 > > │ failwith<unit> v8 │ 00:09:22 verbose #10062 > > │ method0() │ 00:09:22 verbose #10063 > > │ │ 00:09:22 verbose #10064 > > │ │ 00:09:22 verbose #10065 > > │ .rs: │ 00:09:22 verbose #10066 > > │ #![allow(dead_code)] │ 00:09:22 verbose #10067 > > │ #![allow(non_camel_case_types)] │ 00:09:22 verbose #10068 > > │ #![allow(non_snake_case)] │ 00:09:22 verbose #10069 > > │ #![allow(non_upper_case_globals)] │ 00:09:22 verbose #10070 > > │ #![allow(unreachable_code)] │ 00:09:22 verbose #10071 > > │ #![allow(unused_attributes)] │ 00:09:22 verbose #10072 > > │ #![allow(unused_imports)] │ 00:09:22 verbose #10073 > > │ #![allow(unused_macros)] │ 00:09:22 verbose #10074 > > │ #![allow(unused_parens)] │ 00:09:22 verbose #10075 > > │ #![allow(unused_variables)] │ 00:09:22 verbose #10076 > > │ mod module_7e2cd9e0 { │ 00:09:22 verbose #10077 > > │ pub mod Spiral_builder { │ 00:09:22 verbose #10078 > > │ use super::*; │ 00:09:22 verbose #10079 > > │ use fable_library_rust::Native_::on_startup; │ 00:09:22 verbose #10080 > > │ use fable_library_rust::String_::printfn; │ 00:09:22 verbose #10081 > > │ use fable_library_rust::String_::sprintf; │ 00:09:22 verbose #10082 > > │ use fable_library_rust::String_::string; │ 00:09:22 verbose #10083 > > │ pub fn method1() -> i32 { │ 00:09:22 verbose #10084 > > │ 3_i32 │ 00:09:22 verbose #10085 > > │ } │ 00:09:22 verbose #10086 > > │ pub fn method2(v0: bool) -> bool { │ 00:09:22 verbose #10087 > > │ v0 │ 00:09:22 verbose #10088 > > │ } │ 00:09:22 verbose #10089 > > │ pub fn closure0(v0: string, unitVar: ()) { │ 00:09:22 verbose #10090 > > │ printfn!("{0}", v0); │ 00:09:22 verbose #10091 > > │ } │ 00:09:22 verbose #10092 > > │ pub fn method0() { │ 00:09:22 verbose #10093 > > │ let v3: i32 = 9_i32 + Spiral_builder::method1() + 2_i32 + 1_i32; │ 00:09:22 verbose #10094 > > │ let v4: bool = v3 == 15_i32; │ 00:09:22 verbose #10095 > > │ let v6: bool = if v4 { │ 00:09:22 verbose #10096 > > │ true │ 00:09:22 verbose #10097 > > │ } else { │ 00:09:22 verbose #10098 > > │ Spiral_builder::method2(v4) │ 00:09:22 verbose #10099 > > │ }; │ 00:09:22 verbose #10100 > > │ let v8: string = sprintf!( │ 00:09:22 verbose #10101 > > │ "{} / actual: {:?} / expected: {:?}", │ 00:09:22 verbose #10102 > > │ string("__assert_eq"), │ 00:09:22 verbose #10103 > > │ v3, │ 00:09:22 verbose #10104 > > │ 15_i32 │ 00:09:22 verbose #10105 > > │ ); │ 00:09:22 verbose #10106 > > │ let v13: () = { │ 00:09:22 verbose #10107 > > │ Spiral_builder::closure0(v8.clone(), ()); │ 00:09:22 verbose #10108 > > │ () │ 00:09:22 verbose #10109 > > │ }; │ 00:09:22 verbose #10110 > > │ if v6 == false { │ 00:09:22 verbose #10111 > > │ panic!("{}", v8,); │ 00:09:22 verbose #10112 > > │ } │ 00:09:22 verbose #10113 > > │ } │ 00:09:22 verbose #10114 > > │ on_startup!(Spiral_builder::method0()); │ 00:09:22 verbose #10115 > > │ } │ 00:09:22 verbose #10116 > > │ } │ 00:09:22 verbose #10117 > > │ pub use module_7e2cd9e0::*; │ 00:09:22 verbose #10118 > > │ │ 00:09:22 verbose #10119 > > │ .ts: │ 00:09:22 verbose #10120 > > │ import { int32 } from "./fable_modules/fable-library-ts.4.19.3/Int32.js"; │ 00:09:22 verbose #10121 > > │ import { interpolate, toText } from │ 00:09:22 verbose #10122 > > │ "./fable_modules/fable-library-ts.4.19.3/String.js"; │ 00:09:22 verbose #10123 > > │ │ 00:09:22 verbose #10124 > > │ export function method1(): int32 { │ 00:09:22 verbose #10125 > > │ return 3; │ 00:09:22 verbose #10126 > > │ } │ 00:09:22 verbose #10127 > > │ │ 00:09:22 verbose #10128 > > │ export function method2(v0: boolean): boolean { │ 00:09:22 verbose #10129 > > │ return v0; │ 00:09:22 verbose #10130 > > │ } │ 00:09:22 verbose #10131 > > │ │ 00:09:22 verbose #10132 > > │ export function closure0(v0: string, unitVar: void): void { │ 00:09:22 verbose #10133 > > │ console.log(v0); │ 00:09:22 verbose #10134 > > │ } │ 00:09:22 verbose #10135 > > │ │ 00:09:22 verbose #10136 > > │ export function method0(): void { │ 00:09:22 verbose #10137 > > │ const v3: int32 = (((9 + method1()) + 2) + 1) | 0; │ 00:09:22 verbose #10138 > > │ const v4: boolean = v3 === 15; │ 00:09:22 verbose #10139 > > │ const v6: boolean = v4 ? true : method2(v4); │ 00:09:22 verbose #10140 > > │ const v8: string = toText(interpolate("%P() / actual: %A%P() / expected: │ 00:09:22 verbose #10141 > > │ %A%P()", ["__assert_eq", v3, 15])); │ 00:09:22 verbose #10142 > > │ let v13: any; │ 00:09:22 verbose #10143 > > │ closure0(v8, undefined); │ 00:09:22 verbose #10144 > > │ v13 = undefined; │ 00:09:22 verbose #10145 > > │ if (v6 === false) { │ 00:09:22 verbose #10146 > > │ throw new Error(v8); │ 00:09:22 verbose #10147 > > │ } │ 00:09:22 verbose #10148 > > │ } │ 00:09:22 verbose #10149 > > │ │ 00:09:22 verbose #10150 > > │ method0(); │ 00:09:22 verbose #10151 > > │ │ 00:09:22 verbose #10152 > > │ │ 00:09:22 verbose #10153 > > │ .py: │ 00:09:22 verbose #10154 > > │ from fable_modules.fable_library.string_ import (to_text, interpolate) │ 00:09:22 verbose #10155 > > │ │ 00:09:22 verbose #10156 > > │ def method1(__unit: None=None) -> int: │ 00:09:22 verbose #10157 > > │ return 3 │ 00:09:22 verbose #10158 > > │ │ 00:09:22 verbose #10159 > > │ │ 00:09:22 verbose #10160 > > │ def method2(v0: bool) -> bool: │ 00:09:22 verbose #10161 > > │ return v0 │ 00:09:22 verbose #10162 > > │ │ 00:09:22 verbose #10163 > > │ │ 00:09:22 verbose #10164 > > │ def closure0(v0: str, unit_var: None) -> None: │ 00:09:22 verbose #10165 > > │ print(v0) │ 00:09:22 verbose #10166 > > │ │ 00:09:22 verbose #10167 > > │ │ 00:09:22 verbose #10168 > > │ def method0(__unit: None=None) -> None: │ 00:09:22 verbose #10169 > > │ v3: int = (((9 + method1()) + 2) + 1) or 0 │ 00:09:22 verbose #10170 > > │ v4: bool = v3 == 15 │ 00:09:22 verbose #10171 > > │ v6: bool = True if v4 else method2(v4) │ 00:09:22 verbose #10172 > > │ v8: str = to_text(interpolate("%P() / actual: %A%P() / expected: │ 00:09:22 verbose #10173 > > │ %A%P()", ["__assert_eq", v3, 15])) │ 00:09:22 verbose #10174 > > │ v13: None │ 00:09:22 verbose #10175 > > │ closure0(v8, None) │ 00:09:22 verbose #10176 > > │ v13 = None │ 00:09:22 verbose #10177 > > │ if v6 == False: │ 00:09:22 verbose #10178 > > │ raise Exception(v8) │ 00:09:22 verbose #10179 > > │ │ 00:09:22 verbose #10180 > > │ │ 00:09:22 verbose #10181 > > │ │ 00:09:22 verbose #10182 > > │ method0() │ 00:09:22 verbose #10183 > > │ │ 00:09:22 verbose #10184 > > │ │ 00:09:22 verbose #10185 > > │ .py: │ 00:09:22 verbose #10186 > > │ kernel = r""" │ 00:09:22 verbose #10187 > > │ """ │ 00:09:22 verbose #10188 > > │ class static_array(): │ 00:09:22 verbose #10189 > > │ def __init__(self, length): │ 00:09:22 verbose #10190 > > │ self.ptr = [] │ 00:09:22 verbose #10191 > > │ for _ in range(length): │ 00:09:22 verbose #10192 > > │ self.ptr.append(None) │ 00:09:22 verbose #10193 > > │ │ 00:09:22 verbose #10194 > > │ def __getitem__(self, index): │ 00:09:22 verbose #10195 > > │ assert 0 <= index < len(self.ptr), "The get index needs to be in │ 00:09:22 verbose #10196 > > │ range." │ 00:09:22 verbose #10197 > > │ return self.ptr[index] │ 00:09:22 verbose #10198 > > │ │ 00:09:22 verbose #10199 > > │ def __setitem__(self, index, value): │ 00:09:22 verbose #10200 > > │ assert 0 <= index < len(self.ptr), "The set index needs to be in │ 00:09:22 verbose #10201 > > │ range." │ 00:09:22 verbose #10202 > > │ self.ptr[index] = value │ 00:09:22 verbose #10203 > > │ │ 00:09:22 verbose #10204 > > │ class static_array_list(static_array): │ 00:09:22 verbose #10205 > > │ def __init__(self, length): │ 00:09:22 verbose #10206 > > │ super().__init__(length) │ 00:09:22 verbose #10207 > > │ self.length = 0 │ 00:09:22 verbose #10208 > > │ │ 00:09:22 verbose #10209 > > │ def __getitem__(self, index): │ 00:09:22 verbose #10210 > > │ assert 0 <= index < self.length, "The get index needs to be in │ 00:09:22 verbose #10211 > > │ range." │ 00:09:22 verbose #10212 > > │ return self.ptr[index] │ 00:09:22 verbose #10213 > > │ │ 00:09:22 verbose #10214 > > │ def __setitem__(self, index, value): │ 00:09:22 verbose #10215 > > │ assert 0 <= index < self.length, "The set index needs to be in │ 00:09:22 verbose #10216 > > │ range." │ 00:09:22 verbose #10217 > > │ self.ptr[index] = value │ 00:09:22 verbose #10218 > > │ │ 00:09:22 verbose #10219 > > │ def push(self,value): │ 00:09:22 verbose #10220 > > │ assert (self.length < len(self.ptr)), "The length before pushing has │ 00:09:22 verbose #10221 > > │ to be less than the maximum length of the array." │ 00:09:22 verbose #10222 > > │ self.ptr[self.length] = value │ 00:09:22 verbose #10223 > > │ self.length += 1 │ 00:09:22 verbose #10224 > > │ │ 00:09:22 verbose #10225 > > │ def pop(self): │ 00:09:22 verbose #10226 > > │ assert (0 < self.length), "The length before popping has to be │ 00:09:22 verbose #10227 > > │ greater than 0." │ 00:09:22 verbose #10228 > > │ self.length -= 1 │ 00:09:22 verbose #10229 > > │ return self.ptr[self.length] │ 00:09:22 verbose #10230 > > │ │ 00:09:22 verbose #10231 > > │ def unsafe_set_length(self,i): │ 00:09:22 verbose #10232 > > │ assert 0 <= i <= len(self.ptr), "The new length has to be in range." │ 00:09:22 verbose #10233 > > │ self.length = i │ 00:09:22 verbose #10234 > > │ │ 00:09:22 verbose #10235 > > │ class dynamic_array(static_array): │ 00:09:22 verbose #10236 > > │ pass │ 00:09:22 verbose #10237 > > │ │ 00:09:22 verbose #10238 > > │ class dynamic_array_list(static_array_list): │ 00:09:22 verbose #10239 > > │ def length_(self): return self.length │ 00:09:22 verbose #10240 > > │ │ 00:09:22 verbose #10241 > > │ import cupy as cp │ 00:09:22 verbose #10242 > > │ from dataclasses import dataclass │ 00:09:22 verbose #10243 > > │ from typing import NamedTuple, Union, Callable, Tuple │ 00:09:22 verbose #10244 > > │ i8 = i16 = i32 = i64 = u8 = u16 = u32 = u64 = int; f32 = f64 = float; char = │ 00:09:22 verbose #10245 > > │ string = str │ 00:09:22 verbose #10246 > > │ │ 00:09:22 verbose #10247 > > │ def method1() -> i32: │ 00:09:22 verbose #10248 > > │ return 3 │ 00:09:22 verbose #10249 > > │ def method2(v0 : bool) -> bool: │ 00:09:22 verbose #10250 > > │ return v0 │ 00:09:22 verbose #10251 > > │ def method0() -> None: │ 00:09:22 verbose #10252 > > │ v0 = method1() │ 00:09:22 verbose #10253 > > │ v1 = 9 + v0 │ 00:09:22 verbose #10254 > > │ del v0 │ 00:09:22 verbose #10255 > > │ v2 = v1 + 2 │ 00:09:22 verbose #10256 > > │ del v1 │ 00:09:22 verbose #10257 > > │ v3 = v2 + 1 │ 00:09:22 verbose #10258 > > │ del v2 │ 00:09:22 verbose #10259 > > │ v4 = v3 == 15 │ 00:09:22 verbose #10260 > > │ if v4: │ 00:09:22 verbose #10261 > > │ v6 = True │ 00:09:22 verbose #10262 > > │ else: │ 00:09:22 verbose #10263 > > │ v6 = method2(v4) │ 00:09:22 verbose #10264 > > │ del v4 │ 00:09:22 verbose #10265 > > │ v9 = "__assert_eq" │ 00:09:22 verbose #10266 > > │ v10 = f"{v9} / actual: {v3} / expected: {15}" │ 00:09:22 verbose #10267 > > │ del v3, v9 │ 00:09:22 verbose #10268 > > │ print(v10) │ 00:09:22 verbose #10269 > > │ v16 = v6 == False │ 00:09:22 verbose #10270 > > │ del v6 │ 00:09:22 verbose #10271 > > │ if v16: │ 00:09:22 verbose #10272 > > │ del v16 │ 00:09:22 verbose #10273 > > │ raise Exception(v10) │ 00:09:22 verbose #10274 > > │ else: │ 00:09:22 verbose #10275 > > │ del v10, v16 │ 00:09:22 verbose #10276 > > │ return │ 00:09:22 verbose #10277 > > │ def main(): │ 00:09:22 verbose #10278 > > │ return method0() │ 00:09:22 verbose #10279 > > │ │ 00:09:22 verbose #10280 > > │ if __name__ == '__main__': result = main(); None if result is None else │ 00:09:22 verbose #10281 > > │ print(result) │ 00:09:22 verbose #10282 > > │ │ 00:09:22 verbose #10283 > > │ │ 00:09:22 verbose #10284 > > │ .py: │ 00:09:22 verbose #10285 > > │ kernel = r""" │ 00:09:22 verbose #10286 > > │ """ │ 00:09:22 verbose #10287 > > │ class static_array(): │ 00:09:22 verbose #10288 > > │ def __init__(self, length): │ 00:09:22 verbose #10289 > > │ self.ptr = [] │ 00:09:22 verbose #10290 > > │ for _ in range(length): │ 00:09:22 verbose #10291 > > │ self.ptr.append(None) │ 00:09:22 verbose #10292 > > │ │ 00:09:22 verbose #10293 > > │ def __getitem__(self, index): │ 00:09:22 verbose #10294 > > │ assert 0 <= index < len(self.ptr), "The get index needs to be in │ 00:09:22 verbose #10295 > > │ range." │ 00:09:22 verbose #10296 > > │ return self.ptr[index] │ 00:09:22 verbose #10297 > > │ │ 00:09:22 verbose #10298 > > │ def __setitem__(self, index, value): │ 00:09:22 verbose #10299 > > │ assert 0 <= index < len(self.ptr), "The set index needs to be in │ 00:09:22 verbose #10300 > > │ range." │ 00:09:22 verbose #10301 > > │ self.ptr[index] = value │ 00:09:22 verbose #10302 > > │ │ 00:09:22 verbose #10303 > > │ class static_array_list(static_array): │ 00:09:22 verbose #10304 > > │ def __init__(self, length): │ 00:09:22 verbose #10305 > > │ super().__init__(length) │ 00:09:22 verbose #10306 > > │ self.length = 0 │ 00:09:22 verbose #10307 > > │ │ 00:09:22 verbose #10308 > > │ def __getitem__(self, index): │ 00:09:22 verbose #10309 > > │ assert 0 <= index < self.length, "The get index needs to be in │ 00:09:22 verbose #10310 > > │ range." │ 00:09:22 verbose #10311 > > │ return self.ptr[index] │ 00:09:22 verbose #10312 > > │ │ 00:09:22 verbose #10313 > > │ def __setitem__(self, index, value): │ 00:09:22 verbose #10314 > > │ assert 0 <= index < self.length, "The set index needs to be in │ 00:09:22 verbose #10315 > > │ range." │ 00:09:22 verbose #10316 > > │ self.ptr[index] = value │ 00:09:22 verbose #10317 > > │ │ 00:09:22 verbose #10318 > > │ def push(self,value): │ 00:09:22 verbose #10319 > > │ assert (self.length < len(self.ptr)), "The length before pushing has │ 00:09:22 verbose #10320 > > │ to be less than the maximum length of the array." │ 00:09:22 verbose #10321 > > │ self.ptr[self.length] = value │ 00:09:22 verbose #10322 > > │ self.length += 1 │ 00:09:22 verbose #10323 > > │ │ 00:09:22 verbose #10324 > > │ def pop(self): │ 00:09:22 verbose #10325 > > │ assert (0 < self.length), "The length before popping has to be │ 00:09:22 verbose #10326 > > │ greater than 0." │ 00:09:22 verbose #10327 > > │ self.length -= 1 │ 00:09:22 verbose #10328 > > │ return self.ptr[self.length] │ 00:09:22 verbose #10329 > > │ │ 00:09:22 verbose #10330 > > │ def unsafe_set_length(self,i): │ 00:09:22 verbose #10331 > > │ assert 0 <= i <= len(self.ptr), "The new length has to be in range." │ 00:09:22 verbose #10332 > > │ self.length = i │ 00:09:22 verbose #10333 > > │ │ 00:09:22 verbose #10334 > > │ class dynamic_array(static_array): │ 00:09:22 verbose #10335 > > │ pass │ 00:09:22 verbose #10336 > > │ │ 00:09:22 verbose #10337 > > │ class dynamic_array_list(static_array_list): │ 00:09:22 verbose #10338 > > │ def length_(self): return self.length │ 00:09:22 verbose #10339 > > │ │ 00:09:22 verbose #10340 > > │ import cupy as cp │ 00:09:22 verbose #10341 > > │ from dataclasses import dataclass │ 00:09:22 verbose #10342 > > │ from typing import NamedTuple, Union, Callable, Tuple │ 00:09:22 verbose #10343 > > │ i8 = i16 = i32 = i64 = u8 = u16 = u32 = u64 = int; f32 = f64 = float; char = │ 00:09:22 verbose #10344 > > │ string = str │ 00:09:22 verbose #10345 > > │ │ 00:09:22 verbose #10346 > > │ def method1() -> i32: │ 00:09:22 verbose #10347 > > │ return 3 │ 00:09:22 verbose #10348 > > │ def method2(v0 : bool) -> bool: │ 00:09:22 verbose #10349 > > │ return v0 │ 00:09:22 verbose #10350 > > │ def method0() -> None: │ 00:09:22 verbose #10351 > > │ v0 = method1() │ 00:09:22 verbose #10352 > > │ v1 = 9 + v0 │ 00:09:22 verbose #10353 > > │ del v0 │ 00:09:22 verbose #10354 > > │ v2 = v1 + 2 │ 00:09:22 verbose #10355 > > │ del v1 │ 00:09:22 verbose #10356 > > │ v3 = v2 + 1 │ 00:09:22 verbose #10357 > > │ del v2 │ 00:09:22 verbose #10358 > > │ v4 = v3 == 15 │ 00:09:22 verbose #10359 > > │ if v4: │ 00:09:22 verbose #10360 > > │ v6 = True │ 00:09:22 verbose #10361 > > │ else: │ 00:09:22 verbose #10362 > > │ v6 = method2(v4) │ 00:09:22 verbose #10363 > > │ del v4 │ 00:09:22 verbose #10364 > > │ v9 = "__assert_eq" │ 00:09:22 verbose #10365 > > │ v10 = f"{v9} / actual: {v3} / expected: {15}" │ 00:09:22 verbose #10366 > > │ del v3, v9 │ 00:09:22 verbose #10367 > > │ print(v10) │ 00:09:22 verbose #10368 > > │ v16 = v6 == False │ 00:09:22 verbose #10369 > > │ del v6 │ 00:09:22 verbose #10370 > > │ if v16: │ 00:09:22 verbose #10371 > > │ del v16 │ 00:09:22 verbose #10372 > > │ raise Exception(v10) │ 00:09:22 verbose #10373 > > │ else: │ 00:09:22 verbose #10374 > > │ del v10, v16 │ 00:09:22 verbose #10375 > > │ return │ 00:09:22 verbose #10376 > > │ def main(): │ 00:09:22 verbose #10377 > > │ return method0() │ 00:09:22 verbose #10378 > > │ │ 00:09:22 verbose #10379 > > │ if __name__ == '__main__': result = main(); None if result is None else │ 00:09:22 verbose #10380 > > │ print(result) │ 00:09:22 verbose #10381 > > │ │ 00:09:22 verbose #10382 > > │ .fsx output: │ 00:09:22 verbose #10383 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:09:22 verbose #10384 > > │ │ 00:09:22 verbose #10385 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:22 verbose #10386 > > 00:09:22 verbose #10387 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:22 verbose #10388 > > //// test 00:09:22 verbose #10389 > > ///! fsharp 00:09:22 verbose #10390 > > ///! cuda 00:09:22 verbose #10391 > > ///! rust 00:09:22 verbose #10392 > > ///! typescript 00:09:22 verbose #10393 > > ///! python 00:09:22 verbose #10394 > > //// print_code=true 00:09:22 verbose #10395 > > 00:09:22 verbose #10396 > > [[ 5i32; 4; join 3; 2; 1 ]] 00:09:22 verbose #10397 > > |> fold_list (join_body (+)) 0 00:09:22 verbose #10398 > > |> _assert_eq 15 00:09:32 verbose #10399 > > 00:09:32 verbose #10400 > > ╭─[ 9.94s - return value ]─────────────────────────────────────────────────────╮ 00:09:32 verbose #10401 > > │ .py output (Cuda): │ 00:09:32 verbose #10402 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:09:32 verbose #10403 > > │ │ 00:09:32 verbose #10404 > > │ .rs output: │ 00:09:32 verbose #10405 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:09:32 verbose #10406 > > │ │ 00:09:32 verbose #10407 > > │ .ts output: │ 00:09:32 verbose #10408 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:09:32 verbose #10409 > > │ │ 00:09:32 verbose #10410 > > │ .py output: │ 00:09:32 verbose #10411 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:09:32 verbose #10412 > > │ │ 00:09:32 verbose #10413 > > │ │ 00:09:32 verbose #10414 > > │ │ 00:09:32 verbose #10415 > > │ │ 00:09:32 verbose #10416 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:32 verbose #10417 > > 00:09:32 verbose #10418 > > ╭─[ 9.94s - stdout ]───────────────────────────────────────────────────────────╮ 00:09:32 verbose #10419 > > │ .fsx: │ 00:09:32 verbose #10420 > > │ let rec method1 () : int32 = │ 00:09:32 verbose #10421 > > │ 3 │ 00:09:32 verbose #10422 > > │ and method2 (v0 : int32, v1 : int32) : int32 = │ 00:09:32 verbose #10423 > > │ let v2 : int32 = v1 + v0 │ 00:09:32 verbose #10424 > > │ v2 │ 00:09:32 verbose #10425 > > │ and method3 (v0 : bool) : bool = │ 00:09:32 verbose #10426 > > │ v0 │ 00:09:32 verbose #10427 > > │ and closure0 (v0 : string) () : unit = │ 00:09:32 verbose #10428 > > │ let v1 : (string -> unit) = System.Console.WriteLine │ 00:09:32 verbose #10429 > > │ v1 v0 │ 00:09:32 verbose #10430 > > │ and method0 () : unit = │ 00:09:32 verbose #10431 > > │ let v0 : int32 = method1() │ 00:09:32 verbose #10432 > > │ let v1 : int32 = 9 │ 00:09:32 verbose #10433 > > │ let v2 : int32 = method2(v0, v1) │ 00:09:32 verbose #10434 > > │ let v3 : int32 = v2 + 2 │ 00:09:32 verbose #10435 > > │ let v4 : int32 = v3 + 1 │ 00:09:32 verbose #10436 > > │ let v5 : bool = v4 = 15 │ 00:09:32 verbose #10437 > > │ let v7 : bool = │ 00:09:32 verbose #10438 > > │ if v5 then │ 00:09:32 verbose #10439 > > │ true │ 00:09:32 verbose #10440 > > │ else │ 00:09:32 verbose #10441 > > │ method3(v5) │ 00:09:32 verbose #10442 > > │ let v8 : string = "__assert_eq" │ 00:09:32 verbose #10443 > > │ let v9 : string = $"{v8} / actual: %A{v4} / expected: %A{15}" │ 00:09:32 verbose #10444 > > │ let v12 : unit = () │ 00:09:32 verbose #10445 > > │ let v13 : (unit -> unit) = closure0(v9) │ 00:09:32 verbose #10446 > > │ let v14 : unit = (fun () -> v13 (); v12) () │ 00:09:32 verbose #10447 > > │ let v16 : bool = v7 = false │ 00:09:32 verbose #10448 > > │ if v16 then │ 00:09:32 verbose #10449 > > │ failwith<unit> v9 │ 00:09:32 verbose #10450 > > │ method0() │ 00:09:32 verbose #10451 > > │ │ 00:09:32 verbose #10452 > > │ │ 00:09:32 verbose #10453 > > │ .rs: │ 00:09:32 verbose #10454 > > │ #![allow(dead_code)] │ 00:09:32 verbose #10455 > > │ #![allow(non_camel_case_types)] │ 00:09:32 verbose #10456 > > │ #![allow(non_snake_case)] │ 00:09:32 verbose #10457 > > │ #![allow(non_upper_case_globals)] │ 00:09:32 verbose #10458 > > │ #![allow(unreachable_code)] │ 00:09:32 verbose #10459 > > │ #![allow(unused_attributes)] │ 00:09:32 verbose #10460 > > │ #![allow(unused_imports)] │ 00:09:32 verbose #10461 > > │ #![allow(unused_macros)] │ 00:09:32 verbose #10462 > > │ #![allow(unused_parens)] │ 00:09:32 verbose #10463 > > │ #![allow(unused_variables)] │ 00:09:32 verbose #10464 > > │ mod module_7e2cd9e0 { │ 00:09:32 verbose #10465 > > │ pub mod Spiral_builder { │ 00:09:32 verbose #10466 > > │ use super::*; │ 00:09:32 verbose #10467 > > │ use fable_library_rust::Native_::on_startup; │ 00:09:32 verbose #10468 > > │ use fable_library_rust::String_::printfn; │ 00:09:32 verbose #10469 > > │ use fable_library_rust::String_::sprintf; │ 00:09:32 verbose #10470 > > │ use fable_library_rust::String_::string; │ 00:09:32 verbose #10471 > > │ pub fn method1() -> i32 { │ 00:09:32 verbose #10472 > > │ 3_i32 │ 00:09:32 verbose #10473 > > │ } │ 00:09:32 verbose #10474 > > │ pub fn method2(v0: i32, v1: i32) -> i32 { │ 00:09:32 verbose #10475 > > │ v1 + v0 │ 00:09:32 verbose #10476 > > │ } │ 00:09:32 verbose #10477 > > │ pub fn method3(v0: bool) -> bool { │ 00:09:32 verbose #10478 > > │ v0 │ 00:09:32 verbose #10479 > > │ } │ 00:09:32 verbose #10480 > > │ pub fn closure0(v0: string, unitVar: ()) { │ 00:09:32 verbose #10481 > > │ printfn!("{0}", v0); │ 00:09:32 verbose #10482 > > │ } │ 00:09:32 verbose #10483 > > │ pub fn method0() { │ 00:09:32 verbose #10484 > > │ let v4: i32 = Spiral_builder::method2(Spiral_builder::method1(), │ 00:09:32 verbose #10485 > > │ 9_i32) + 2_i32 + 1_i32; │ 00:09:32 verbose #10486 > > │ let v5: bool = v4 == 15_i32; │ 00:09:32 verbose #10487 > > │ let v7: bool = if v5 { │ 00:09:32 verbose #10488 > > │ true │ 00:09:32 verbose #10489 > > │ } else { │ 00:09:32 verbose #10490 > > │ Spiral_builder::method3(v5) │ 00:09:32 verbose #10491 > > │ }; │ 00:09:32 verbose #10492 > > │ let v9: string = sprintf!( │ 00:09:32 verbose #10493 > > │ "{} / actual: {:?} / expected: {:?}", │ 00:09:32 verbose #10494 > > │ string("__assert_eq"), │ 00:09:32 verbose #10495 > > │ v4, │ 00:09:32 verbose #10496 > > │ 15_i32 │ 00:09:32 verbose #10497 > > │ ); │ 00:09:32 verbose #10498 > > │ let v14: () = { │ 00:09:32 verbose #10499 > > │ Spiral_builder::closure0(v9.clone(), ()); │ 00:09:32 verbose #10500 > > │ () │ 00:09:32 verbose #10501 > > │ }; │ 00:09:32 verbose #10502 > > │ if v7 == false { │ 00:09:32 verbose #10503 > > │ panic!("{}", v9,); │ 00:09:32 verbose #10504 > > │ } │ 00:09:32 verbose #10505 > > │ } │ 00:09:32 verbose #10506 > > │ on_startup!(Spiral_builder::method0()); │ 00:09:32 verbose #10507 > > │ } │ 00:09:32 verbose #10508 > > │ } │ 00:09:32 verbose #10509 > > │ pub use module_7e2cd9e0::*; │ 00:09:32 verbose #10510 > > │ │ 00:09:32 verbose #10511 > > │ .ts: │ 00:09:32 verbose #10512 > > │ import { int32 } from "./fable_modules/fable-library-ts.4.19.3/Int32.js"; │ 00:09:32 verbose #10513 > > │ import { interpolate, toText } from │ 00:09:32 verbose #10514 > > │ "./fable_modules/fable-library-ts.4.19.3/String.js"; │ 00:09:32 verbose #10515 > > │ │ 00:09:32 verbose #10516 > > │ export function method1(): int32 { │ 00:09:32 verbose #10517 > > │ return 3; │ 00:09:32 verbose #10518 > > │ } │ 00:09:32 verbose #10519 > > │ │ 00:09:32 verbose #10520 > > │ export function method2(v0: int32, v1: int32): int32 { │ 00:09:32 verbose #10521 > > │ return v1 + v0; │ 00:09:32 verbose #10522 > > │ } │ 00:09:32 verbose #10523 > > │ │ 00:09:32 verbose #10524 > > │ export function method3(v0: boolean): boolean { │ 00:09:32 verbose #10525 > > │ return v0; │ 00:09:32 verbose #10526 > > │ } │ 00:09:32 verbose #10527 > > │ │ 00:09:32 verbose #10528 > > │ export function closure0(v0: string, unitVar: void): void { │ 00:09:32 verbose #10529 > > │ console.log(v0); │ 00:09:32 verbose #10530 > > │ } │ 00:09:32 verbose #10531 > > │ │ 00:09:32 verbose #10532 > > │ export function method0(): void { │ 00:09:32 verbose #10533 > > │ const v4: int32 = ((method2(method1(), 9) + 2) + 1) | 0; │ 00:09:32 verbose #10534 > > │ const v5: boolean = v4 === 15; │ 00:09:32 verbose #10535 > > │ const v7: boolean = v5 ? true : method3(v5); │ 00:09:32 verbose #10536 > > │ const v9: string = toText(interpolate("%P() / actual: %A%P() / expected: │ 00:09:32 verbose #10537 > > │ %A%P()", ["__assert_eq", v4, 15])); │ 00:09:32 verbose #10538 > > │ let v14: any; │ 00:09:32 verbose #10539 > > │ closure0(v9, undefined); │ 00:09:32 verbose #10540 > > │ v14 = undefined; │ 00:09:32 verbose #10541 > > │ if (v7 === false) { │ 00:09:32 verbose #10542 > > │ throw new Error(v9); │ 00:09:32 verbose #10543 > > │ } │ 00:09:32 verbose #10544 > > │ } │ 00:09:32 verbose #10545 > > │ │ 00:09:32 verbose #10546 > > │ method0(); │ 00:09:32 verbose #10547 > > │ │ 00:09:32 verbose #10548 > > │ │ 00:09:32 verbose #10549 > > │ .py: │ 00:09:32 verbose #10550 > > │ from fable_modules.fable_library.string_ import (to_text, interpolate) │ 00:09:32 verbose #10551 > > │ │ 00:09:32 verbose #10552 > > │ def method1(__unit: None=None) -> int: │ 00:09:32 verbose #10553 > > │ return 3 │ 00:09:32 verbose #10554 > > │ │ 00:09:32 verbose #10555 > > │ │ 00:09:32 verbose #10556 > > │ def method2(v0: int, v1: int) -> int: │ 00:09:32 verbose #10557 > > │ return v1 + v0 │ 00:09:32 verbose #10558 > > │ │ 00:09:32 verbose #10559 > > │ │ 00:09:32 verbose #10560 > > │ def method3(v0: bool) -> bool: │ 00:09:32 verbose #10561 > > │ return v0 │ 00:09:32 verbose #10562 > > │ │ 00:09:32 verbose #10563 > > │ │ 00:09:32 verbose #10564 > > │ def closure0(v0: str, unit_var: None) -> None: │ 00:09:32 verbose #10565 > > │ print(v0) │ 00:09:32 verbose #10566 > > │ │ 00:09:32 verbose #10567 > > │ │ 00:09:32 verbose #10568 > > │ def method0(__unit: None=None) -> None: │ 00:09:32 verbose #10569 > > │ v4: int = ((method2(method1(), 9) + 2) + 1) or 0 │ 00:09:32 verbose #10570 > > │ v5: bool = v4 == 15 │ 00:09:32 verbose #10571 > > │ v7: bool = True if v5 else method3(v5) │ 00:09:32 verbose #10572 > > │ v9: str = to_text(interpolate("%P() / actual: %A%P() / expected: │ 00:09:32 verbose #10573 > > │ %A%P()", ["__assert_eq", v4, 15])) │ 00:09:32 verbose #10574 > > │ v14: None │ 00:09:32 verbose #10575 > > │ closure0(v9, None) │ 00:09:32 verbose #10576 > > │ v14 = None │ 00:09:32 verbose #10577 > > │ if v7 == False: │ 00:09:32 verbose #10578 > > │ raise Exception(v9) │ 00:09:32 verbose #10579 > > │ │ 00:09:32 verbose #10580 > > │ │ 00:09:32 verbose #10581 > > │ │ 00:09:32 verbose #10582 > > │ method0() │ 00:09:32 verbose #10583 > > │ │ 00:09:32 verbose #10584 > > │ │ 00:09:32 verbose #10585 > > │ .py: │ 00:09:32 verbose #10586 > > │ kernel = r""" │ 00:09:32 verbose #10587 > > │ """ │ 00:09:32 verbose #10588 > > │ class static_array(): │ 00:09:32 verbose #10589 > > │ def __init__(self, length): │ 00:09:32 verbose #10590 > > │ self.ptr = [] │ 00:09:32 verbose #10591 > > │ for _ in range(length): │ 00:09:32 verbose #10592 > > │ self.ptr.append(None) │ 00:09:32 verbose #10593 > > │ │ 00:09:32 verbose #10594 > > │ def __getitem__(self, index): │ 00:09:32 verbose #10595 > > │ assert 0 <= index < len(self.ptr), "The get index needs to be in │ 00:09:32 verbose #10596 > > │ range." │ 00:09:32 verbose #10597 > > │ return self.ptr[index] │ 00:09:32 verbose #10598 > > │ │ 00:09:32 verbose #10599 > > │ def __setitem__(self, index, value): │ 00:09:32 verbose #10600 > > │ assert 0 <= index < len(self.ptr), "The set index needs to be in │ 00:09:32 verbose #10601 > > │ range." │ 00:09:32 verbose #10602 > > │ self.ptr[index] = value │ 00:09:32 verbose #10603 > > │ │ 00:09:32 verbose #10604 > > │ class static_array_list(static_array): │ 00:09:32 verbose #10605 > > │ def __init__(self, length): │ 00:09:32 verbose #10606 > > │ super().__init__(length) │ 00:09:32 verbose #10607 > > │ self.length = 0 │ 00:09:32 verbose #10608 > > │ │ 00:09:32 verbose #10609 > > │ def __getitem__(self, index): │ 00:09:32 verbose #10610 > > │ assert 0 <= index < self.length, "The get index needs to be in │ 00:09:32 verbose #10611 > > │ range." │ 00:09:32 verbose #10612 > > │ return self.ptr[index] │ 00:09:32 verbose #10613 > > │ │ 00:09:32 verbose #10614 > > │ def __setitem__(self, index, value): │ 00:09:32 verbose #10615 > > │ assert 0 <= index < self.length, "The set index needs to be in │ 00:09:32 verbose #10616 > > │ range." │ 00:09:32 verbose #10617 > > │ self.ptr[index] = value │ 00:09:32 verbose #10618 > > │ │ 00:09:32 verbose #10619 > > │ def push(self,value): │ 00:09:32 verbose #10620 > > │ assert (self.length < len(self.ptr)), "The length before pushing has │ 00:09:32 verbose #10621 > > │ to be less than the maximum length of the array." │ 00:09:32 verbose #10622 > > │ self.ptr[self.length] = value │ 00:09:32 verbose #10623 > > │ self.length += 1 │ 00:09:32 verbose #10624 > > │ │ 00:09:32 verbose #10625 > > │ def pop(self): │ 00:09:32 verbose #10626 > > │ assert (0 < self.length), "The length before popping has to be │ 00:09:32 verbose #10627 > > │ greater than 0." │ 00:09:32 verbose #10628 > > │ self.length -= 1 │ 00:09:32 verbose #10629 > > │ return self.ptr[self.length] │ 00:09:32 verbose #10630 > > │ │ 00:09:32 verbose #10631 > > │ def unsafe_set_length(self,i): │ 00:09:32 verbose #10632 > > │ assert 0 <= i <= len(self.ptr), "The new length has to be in range." │ 00:09:32 verbose #10633 > > │ self.length = i │ 00:09:32 verbose #10634 > > │ │ 00:09:32 verbose #10635 > > │ class dynamic_array(static_array): │ 00:09:32 verbose #10636 > > │ pass │ 00:09:32 verbose #10637 > > │ │ 00:09:32 verbose #10638 > > │ class dynamic_array_list(static_array_list): │ 00:09:32 verbose #10639 > > │ def length_(self): return self.length │ 00:09:32 verbose #10640 > > │ │ 00:09:32 verbose #10641 > > │ import cupy as cp │ 00:09:32 verbose #10642 > > │ from dataclasses import dataclass │ 00:09:32 verbose #10643 > > │ from typing import NamedTuple, Union, Callable, Tuple │ 00:09:32 verbose #10644 > > │ i8 = i16 = i32 = i64 = u8 = u16 = u32 = u64 = int; f32 = f64 = float; char = │ 00:09:32 verbose #10645 > > │ string = str │ 00:09:32 verbose #10646 > > │ │ 00:09:32 verbose #10647 > > │ def method1() -> i32: │ 00:09:32 verbose #10648 > > │ return 3 │ 00:09:32 verbose #10649 > > │ def method2(v0 : i32, v1 : i32) -> i32: │ 00:09:32 verbose #10650 > > │ v2 = v1 + v0 │ 00:09:32 verbose #10651 > > │ del v0, v1 │ 00:09:32 verbose #10652 > > │ return v2 │ 00:09:32 verbose #10653 > > │ def method3(v0 : bool) -> bool: │ 00:09:32 verbose #10654 > > │ return v0 │ 00:09:32 verbose #10655 > > │ def method0() -> None: │ 00:09:32 verbose #10656 > > │ v0 = method1() │ 00:09:32 verbose #10657 > > │ v1 = 9 │ 00:09:32 verbose #10658 > > │ v2 = method2(v0, v1) │ 00:09:32 verbose #10659 > > │ del v0, v1 │ 00:09:32 verbose #10660 > > │ v3 = v2 + 2 │ 00:09:32 verbose #10661 > > │ del v2 │ 00:09:32 verbose #10662 > > │ v4 = v3 + 1 │ 00:09:32 verbose #10663 > > │ del v3 │ 00:09:32 verbose #10664 > > │ v5 = v4 == 15 │ 00:09:32 verbose #10665 > > │ if v5: │ 00:09:32 verbose #10666 > > │ v7 = True │ 00:09:32 verbose #10667 > > │ else: │ 00:09:32 verbose #10668 > > │ v7 = method3(v5) │ 00:09:32 verbose #10669 > > │ del v5 │ 00:09:32 verbose #10670 > > │ v10 = "__assert_eq" │ 00:09:32 verbose #10671 > > │ v11 = f"{v10} / actual: {v4} / expected: {15}" │ 00:09:32 verbose #10672 > > │ del v4, v10 │ 00:09:32 verbose #10673 > > │ print(v11) │ 00:09:32 verbose #10674 > > │ v17 = v7 == False │ 00:09:32 verbose #10675 > > │ del v7 │ 00:09:32 verbose #10676 > > │ if v17: │ 00:09:32 verbose #10677 > > │ del v17 │ 00:09:32 verbose #10678 > > │ raise Exception(v11) │ 00:09:32 verbose #10679 > > │ else: │ 00:09:32 verbose #10680 > > │ del v11, v17 │ 00:09:32 verbose #10681 > > │ return │ 00:09:32 verbose #10682 > > │ def main(): │ 00:09:32 verbose #10683 > > │ return method0() │ 00:09:32 verbose #10684 > > │ │ 00:09:32 verbose #10685 > > │ if __name__ == '__main__': result = main(); None if result is None else │ 00:09:32 verbose #10686 > > │ print(result) │ 00:09:32 verbose #10687 > > │ │ 00:09:32 verbose #10688 > > │ │ 00:09:32 verbose #10689 > > │ .py: │ 00:09:32 verbose #10690 > > │ kernel = r""" │ 00:09:32 verbose #10691 > > │ """ │ 00:09:32 verbose #10692 > > │ class static_array(): │ 00:09:32 verbose #10693 > > │ def __init__(self, length): │ 00:09:32 verbose #10694 > > │ self.ptr = [] │ 00:09:32 verbose #10695 > > │ for _ in range(length): │ 00:09:32 verbose #10696 > > │ self.ptr.append(None) │ 00:09:32 verbose #10697 > > │ │ 00:09:32 verbose #10698 > > │ def __getitem__(self, index): │ 00:09:32 verbose #10699 > > │ assert 0 <= index < len(self.ptr), "The get index needs to be in │ 00:09:32 verbose #10700 > > │ range." │ 00:09:32 verbose #10701 > > │ return self.ptr[index] │ 00:09:32 verbose #10702 > > │ │ 00:09:32 verbose #10703 > > │ def __setitem__(self, index, value): │ 00:09:32 verbose #10704 > > │ assert 0 <= index < len(self.ptr), "The set index needs to be in │ 00:09:32 verbose #10705 > > │ range." │ 00:09:32 verbose #10706 > > │ self.ptr[index] = value │ 00:09:32 verbose #10707 > > │ │ 00:09:32 verbose #10708 > > │ class static_array_list(static_array): │ 00:09:32 verbose #10709 > > │ def __init__(self, length): │ 00:09:32 verbose #10710 > > │ super().__init__(length) │ 00:09:32 verbose #10711 > > │ self.length = 0 │ 00:09:32 verbose #10712 > > │ │ 00:09:32 verbose #10713 > > │ def __getitem__(self, index): │ 00:09:32 verbose #10714 > > │ assert 0 <= index < self.length, "The get index needs to be in │ 00:09:32 verbose #10715 > > │ range." │ 00:09:32 verbose #10716 > > │ return self.ptr[index] │ 00:09:32 verbose #10717 > > │ │ 00:09:32 verbose #10718 > > │ def __setitem__(self, index, value): │ 00:09:32 verbose #10719 > > │ assert 0 <= index < self.length, "The set index needs to be in │ 00:09:32 verbose #10720 > > │ range." │ 00:09:32 verbose #10721 > > │ self.ptr[index] = value │ 00:09:32 verbose #10722 > > │ │ 00:09:32 verbose #10723 > > │ def push(self,value): │ 00:09:32 verbose #10724 > > │ assert (self.length < len(self.ptr)), "The length before pushing has │ 00:09:32 verbose #10725 > > │ to be less than the maximum length of the array." │ 00:09:32 verbose #10726 > > │ self.ptr[self.length] = value │ 00:09:32 verbose #10727 > > │ self.length += 1 │ 00:09:32 verbose #10728 > > │ │ 00:09:32 verbose #10729 > > │ def pop(self): │ 00:09:32 verbose #10730 > > │ assert (0 < self.length), "The length before popping has to be │ 00:09:32 verbose #10731 > > │ greater than 0." │ 00:09:32 verbose #10732 > > │ self.length -= 1 │ 00:09:32 verbose #10733 > > │ return self.ptr[self.length] │ 00:09:32 verbose #10734 > > │ │ 00:09:32 verbose #10735 > > │ def unsafe_set_length(self,i): │ 00:09:32 verbose #10736 > > │ assert 0 <= i <= len(self.ptr), "The new length has to be in range." │ 00:09:32 verbose #10737 > > │ self.length = i │ 00:09:32 verbose #10738 > > │ │ 00:09:32 verbose #10739 > > │ class dynamic_array(static_array): │ 00:09:32 verbose #10740 > > │ pass │ 00:09:32 verbose #10741 > > │ │ 00:09:32 verbose #10742 > > │ class dynamic_array_list(static_array_list): │ 00:09:32 verbose #10743 > > │ def length_(self): return self.length │ 00:09:32 verbose #10744 > > │ │ 00:09:32 verbose #10745 > > │ import cupy as cp │ 00:09:32 verbose #10746 > > │ from dataclasses import dataclass │ 00:09:32 verbose #10747 > > │ from typing import NamedTuple, Union, Callable, Tuple │ 00:09:32 verbose #10748 > > │ i8 = i16 = i32 = i64 = u8 = u16 = u32 = u64 = int; f32 = f64 = float; char = │ 00:09:32 verbose #10749 > > │ string = str │ 00:09:32 verbose #10750 > > │ │ 00:09:32 verbose #10751 > > │ def method1() -> i32: │ 00:09:32 verbose #10752 > > │ return 3 │ 00:09:32 verbose #10753 > > │ def method2(v0 : i32, v1 : i32) -> i32: │ 00:09:32 verbose #10754 > > │ v2 = v1 + v0 │ 00:09:32 verbose #10755 > > │ del v0, v1 │ 00:09:32 verbose #10756 > > │ return v2 │ 00:09:32 verbose #10757 > > │ def method3(v0 : bool) -> bool: │ 00:09:32 verbose #10758 > > │ return v0 │ 00:09:32 verbose #10759 > > │ def method0() -> None: │ 00:09:32 verbose #10760 > > │ v0 = method1() │ 00:09:32 verbose #10761 > > │ v1 = 9 │ 00:09:32 verbose #10762 > > │ v2 = method2(v0, v1) │ 00:09:32 verbose #10763 > > │ del v0, v1 │ 00:09:32 verbose #10764 > > │ v3 = v2 + 2 │ 00:09:32 verbose #10765 > > │ del v2 │ 00:09:32 verbose #10766 > > │ v4 = v3 + 1 │ 00:09:32 verbose #10767 > > │ del v3 │ 00:09:32 verbose #10768 > > │ v5 = v4 == 15 │ 00:09:32 verbose #10769 > > │ if v5: │ 00:09:32 verbose #10770 > > │ v7 = True │ 00:09:32 verbose #10771 > > │ else: │ 00:09:32 verbose #10772 > > │ v7 = method3(v5) │ 00:09:32 verbose #10773 > > │ del v5 │ 00:09:32 verbose #10774 > > │ v10 = "__assert_eq" │ 00:09:32 verbose #10775 > > │ v11 = f"{v10} / actual: {v4} / expected: {15}" │ 00:09:32 verbose #10776 > > │ del v4, v10 │ 00:09:32 verbose #10777 > > │ print(v11) │ 00:09:32 verbose #10778 > > │ v17 = v7 == False │ 00:09:32 verbose #10779 > > │ del v7 │ 00:09:32 verbose #10780 > > │ if v17: │ 00:09:32 verbose #10781 > > │ del v17 │ 00:09:32 verbose #10782 > > │ raise Exception(v11) │ 00:09:32 verbose #10783 > > │ else: │ 00:09:32 verbose #10784 > > │ del v11, v17 │ 00:09:32 verbose #10785 > > │ return │ 00:09:32 verbose #10786 > > │ def main(): │ 00:09:32 verbose #10787 > > │ return method0() │ 00:09:32 verbose #10788 > > │ │ 00:09:32 verbose #10789 > > │ if __name__ == '__main__': result = main(); None if result is None else │ 00:09:32 verbose #10790 > > │ print(result) │ 00:09:32 verbose #10791 > > │ │ 00:09:32 verbose #10792 > > │ .fsx output: │ 00:09:32 verbose #10793 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:09:32 verbose #10794 > > │ │ 00:09:32 verbose #10795 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:32 verbose #10796 > > 00:09:32 verbose #10797 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:32 verbose #10798 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:32 verbose #10799 > > │ ### join_body_unit │ 00:09:32 verbose #10800 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:32 verbose #10801 > > 00:09:32 verbose #10802 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:32 verbose #10803 > > inl join_body_unit body d x = 00:09:32 verbose #10804 > > if var_is d |> not 00:09:32 verbose #10805 > > then body x 00:09:32 verbose #10806 > > else 00:09:32 verbose #10807 > > inl x = dyn x 00:09:32 verbose #10808 > > join body x 00:09:32 verbose #10809 > > 00:09:32 verbose #10810 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:32 verbose #10811 > > //// test 00:09:32 verbose #10812 > > ///! fsharp 00:09:32 verbose #10813 > > ///! cuda 00:09:32 verbose #10814 > > ///! rust 00:09:32 verbose #10815 > > ///! typescript 00:09:32 verbose #10816 > > ///! python 00:09:32 verbose #10817 > > //// print_code=true 00:09:32 verbose #10818 > > 00:09:32 verbose #10819 > > [[ 5i32; 4; join 3; 2; 1 ]] 00:09:32 verbose #10820 > > |> fold_list (fun acc n => join_body_unit ((+) acc) n n) 0 00:09:32 verbose #10821 > > |> _assert_eq 15 00:09:44 verbose #10822 > > 00:09:44 verbose #10823 > > ╭─[ 11.21s - return value ]────────────────────────────────────────────────────╮ 00:09:44 verbose #10824 > > │ .py output (Cuda): │ 00:09:44 verbose #10825 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:09:44 verbose #10826 > > │ │ 00:09:44 verbose #10827 > > │ .rs output: │ 00:09:44 verbose #10828 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:09:44 verbose #10829 > > │ │ 00:09:44 verbose #10830 > > │ .ts output: │ 00:09:44 verbose #10831 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:09:44 verbose #10832 > > │ │ 00:09:44 verbose #10833 > > │ .py output: │ 00:09:44 verbose #10834 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:09:44 verbose #10835 > > │ │ 00:09:44 verbose #10836 > > │ │ 00:09:44 verbose #10837 > > │ │ 00:09:44 verbose #10838 > > │ │ 00:09:44 verbose #10839 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:44 verbose #10840 > > 00:09:44 verbose #10841 > > ╭─[ 11.21s - stdout ]──────────────────────────────────────────────────────────╮ 00:09:44 verbose #10842 > > │ .fsx: │ 00:09:44 verbose #10843 > > │ let rec method1 () : int32 = │ 00:09:44 verbose #10844 > > │ 3 │ 00:09:44 verbose #10845 > > │ and method2 (v0 : int32) : int32 = │ 00:09:44 verbose #10846 > > │ let v1 : int32 = 9 + v0 │ 00:09:44 verbose #10847 > > │ v1 │ 00:09:44 verbose #10848 > > │ and method3 (v0 : bool) : bool = │ 00:09:44 verbose #10849 > > │ v0 │ 00:09:44 verbose #10850 > > │ and closure0 (v0 : string) () : unit = │ 00:09:44 verbose #10851 > > │ let v1 : (string -> unit) = System.Console.WriteLine │ 00:09:44 verbose #10852 > > │ v1 v0 │ 00:09:44 verbose #10853 > > │ and method0 () : unit = │ 00:09:44 verbose #10854 > > │ let v0 : int32 = method1() │ 00:09:44 verbose #10855 > > │ let v1 : int32 = method2(v0) │ 00:09:44 verbose #10856 > > │ let v2 : int32 = v1 + 2 │ 00:09:44 verbose #10857 > > │ let v3 : int32 = v2 + 1 │ 00:09:44 verbose #10858 > > │ let v4 : bool = v3 = 15 │ 00:09:44 verbose #10859 > > │ let v6 : bool = │ 00:09:44 verbose #10860 > > │ if v4 then │ 00:09:44 verbose #10861 > > │ true │ 00:09:44 verbose #10862 > > │ else │ 00:09:44 verbose #10863 > > │ method3(v4) │ 00:09:44 verbose #10864 > > │ let v7 : string = "__assert_eq" │ 00:09:44 verbose #10865 > > │ let v8 : string = $"{v7} / actual: %A{v3} / expected: %A{15}" │ 00:09:44 verbose #10866 > > │ let v11 : unit = () │ 00:09:44 verbose #10867 > > │ let v12 : (unit -> unit) = closure0(v8) │ 00:09:44 verbose #10868 > > │ let v13 : unit = (fun () -> v12 (); v11) () │ 00:09:44 verbose #10869 > > │ let v15 : bool = v6 = false │ 00:09:44 verbose #10870 > > │ if v15 then │ 00:09:44 verbose #10871 > > │ failwith<unit> v8 │ 00:09:44 verbose #10872 > > │ method0() │ 00:09:44 verbose #10873 > > │ │ 00:09:44 verbose #10874 > > │ │ 00:09:44 verbose #10875 > > │ .rs: │ 00:09:44 verbose #10876 > > │ #![allow(dead_code)] │ 00:09:44 verbose #10877 > > │ #![allow(non_camel_case_types)] │ 00:09:44 verbose #10878 > > │ #![allow(non_snake_case)] │ 00:09:44 verbose #10879 > > │ #![allow(non_upper_case_globals)] │ 00:09:44 verbose #10880 > > │ #![allow(unreachable_code)] │ 00:09:44 verbose #10881 > > │ #![allow(unused_attributes)] │ 00:09:44 verbose #10882 > > │ #![allow(unused_imports)] │ 00:09:44 verbose #10883 > > │ #![allow(unused_macros)] │ 00:09:44 verbose #10884 > > │ #![allow(unused_parens)] │ 00:09:44 verbose #10885 > > │ #![allow(unused_variables)] │ 00:09:44 verbose #10886 > > │ mod module_7e2cd9e0 { │ 00:09:44 verbose #10887 > > │ pub mod Spiral_builder { │ 00:09:44 verbose #10888 > > │ use super::*; │ 00:09:44 verbose #10889 > > │ use fable_library_rust::Native_::on_startup; │ 00:09:44 verbose #10890 > > │ use fable_library_rust::String_::printfn; │ 00:09:44 verbose #10891 > > │ use fable_library_rust::String_::sprintf; │ 00:09:44 verbose #10892 > > │ use fable_library_rust::String_::string; │ 00:09:44 verbose #10893 > > │ pub fn method1() -> i32 { │ 00:09:44 verbose #10894 > > │ 3_i32 │ 00:09:44 verbose #10895 > > │ } │ 00:09:44 verbose #10896 > > │ pub fn method2(v0: i32) -> i32 { │ 00:09:44 verbose #10897 > > │ 9_i32 + v0 │ 00:09:44 verbose #10898 > > │ } │ 00:09:44 verbose #10899 > > │ pub fn method3(v0: bool) -> bool { │ 00:09:44 verbose #10900 > > │ v0 │ 00:09:44 verbose #10901 > > │ } │ 00:09:44 verbose #10902 > > │ pub fn closure0(v0: string, unitVar: ()) { │ 00:09:44 verbose #10903 > > │ printfn!("{0}", v0); │ 00:09:44 verbose #10904 > > │ } │ 00:09:44 verbose #10905 > > │ pub fn method0() { │ 00:09:44 verbose #10906 > > │ let v3: i32 = Spiral_builder::method2(Spiral_builder::method1()) │ 00:09:44 verbose #10907 > > │ + 2_i32 + 1_i32; │ 00:09:44 verbose #10908 > > │ let v4: bool = v3 == 15_i32; │ 00:09:44 verbose #10909 > > │ let v6: bool = if v4 { │ 00:09:44 verbose #10910 > > │ true │ 00:09:44 verbose #10911 > > │ } else { │ 00:09:44 verbose #10912 > > │ Spiral_builder::method3(v4) │ 00:09:44 verbose #10913 > > │ }; │ 00:09:44 verbose #10914 > > │ let v8: string = sprintf!( │ 00:09:44 verbose #10915 > > │ "{} / actual: {:?} / expected: {:?}", │ 00:09:44 verbose #10916 > > │ string("__assert_eq"), │ 00:09:44 verbose #10917 > > │ v3, │ 00:09:44 verbose #10918 > > │ 15_i32 │ 00:09:44 verbose #10919 > > │ ); │ 00:09:44 verbose #10920 > > │ let v13: () = { │ 00:09:44 verbose #10921 > > │ Spiral_builder::closure0(v8.clone(), ()); │ 00:09:44 verbose #10922 > > │ () │ 00:09:44 verbose #10923 > > │ }; │ 00:09:44 verbose #10924 > > │ if v6 == false { │ 00:09:44 verbose #10925 > > │ panic!("{}", v8,); │ 00:09:44 verbose #10926 > > │ } │ 00:09:44 verbose #10927 > > │ } │ 00:09:44 verbose #10928 > > │ on_startup!(Spiral_builder::method0()); │ 00:09:44 verbose #10929 > > │ } │ 00:09:44 verbose #10930 > > │ } │ 00:09:44 verbose #10931 > > │ pub use module_7e2cd9e0::*; │ 00:09:44 verbose #10932 > > │ │ 00:09:44 verbose #10933 > > │ .ts: │ 00:09:44 verbose #10934 > > │ import { int32 } from "./fable_modules/fable-library-ts.4.19.3/Int32.js"; │ 00:09:44 verbose #10935 > > │ import { interpolate, toText } from │ 00:09:44 verbose #10936 > > │ "./fable_modules/fable-library-ts.4.19.3/String.js"; │ 00:09:44 verbose #10937 > > │ │ 00:09:44 verbose #10938 > > │ export function method1(): int32 { │ 00:09:44 verbose #10939 > > │ return 3; │ 00:09:44 verbose #10940 > > │ } │ 00:09:44 verbose #10941 > > │ │ 00:09:44 verbose #10942 > > │ export function method2(v0: int32): int32 { │ 00:09:44 verbose #10943 > > │ return 9 + v0; │ 00:09:44 verbose #10944 > > │ } │ 00:09:44 verbose #10945 > > │ │ 00:09:44 verbose #10946 > > │ export function method3(v0: boolean): boolean { │ 00:09:44 verbose #10947 > > │ return v0; │ 00:09:44 verbose #10948 > > │ } │ 00:09:44 verbose #10949 > > │ │ 00:09:44 verbose #10950 > > │ export function closure0(v0: string, unitVar: void): void { │ 00:09:44 verbose #10951 > > │ console.log(v0); │ 00:09:44 verbose #10952 > > │ } │ 00:09:44 verbose #10953 > > │ │ 00:09:44 verbose #10954 > > │ export function method0(): void { │ 00:09:44 verbose #10955 > > │ const v3: int32 = ((method2(method1()) + 2) + 1) | 0; │ 00:09:44 verbose #10956 > > │ const v4: boolean = v3 === 15; │ 00:09:44 verbose #10957 > > │ const v6: boolean = v4 ? true : method3(v4); │ 00:09:44 verbose #10958 > > │ const v8: string = toText(interpolate("%P() / actual: %A%P() / expected: │ 00:09:44 verbose #10959 > > │ %A%P()", ["__assert_eq", v3, 15])); │ 00:09:44 verbose #10960 > > │ let v13: any; │ 00:09:44 verbose #10961 > > │ closure0(v8, undefined); │ 00:09:44 verbose #10962 > > │ v13 = undefined; │ 00:09:44 verbose #10963 > > │ if (v6 === false) { │ 00:09:44 verbose #10964 > > │ throw new Error(v8); │ 00:09:44 verbose #10965 > > │ } │ 00:09:44 verbose #10966 > > │ } │ 00:09:44 verbose #10967 > > │ │ 00:09:44 verbose #10968 > > │ method0(); │ 00:09:44 verbose #10969 > > │ │ 00:09:44 verbose #10970 > > │ │ 00:09:44 verbose #10971 > > │ .py: │ 00:09:44 verbose #10972 > > │ from fable_modules.fable_library.string_ import (to_text, interpolate) │ 00:09:44 verbose #10973 > > │ │ 00:09:44 verbose #10974 > > │ def method1(__unit: None=None) -> int: │ 00:09:44 verbose #10975 > > │ return 3 │ 00:09:44 verbose #10976 > > │ │ 00:09:44 verbose #10977 > > │ │ 00:09:44 verbose #10978 > > │ def method2(v0: int) -> int: │ 00:09:44 verbose #10979 > > │ return 9 + v0 │ 00:09:44 verbose #10980 > > │ │ 00:09:44 verbose #10981 > > │ │ 00:09:44 verbose #10982 > > │ def method3(v0: bool) -> bool: │ 00:09:44 verbose #10983 > > │ return v0 │ 00:09:44 verbose #10984 > > │ │ 00:09:44 verbose #10985 > > │ │ 00:09:44 verbose #10986 > > │ def closure0(v0: str, unit_var: None) -> None: │ 00:09:44 verbose #10987 > > │ print(v0) │ 00:09:44 verbose #10988 > > │ │ 00:09:44 verbose #10989 > > │ │ 00:09:44 verbose #10990 > > │ def method0(__unit: None=None) -> None: │ 00:09:44 verbose #10991 > > │ v3: int = ((method2(method1()) + 2) + 1) or 0 │ 00:09:44 verbose #10992 > > │ v4: bool = v3 == 15 │ 00:09:44 verbose #10993 > > │ v6: bool = True if v4 else method3(v4) │ 00:09:44 verbose #10994 > > │ v8: str = to_text(interpolate("%P() / actual: %A%P() / expected: │ 00:09:44 verbose #10995 > > │ %A%P()", ["__assert_eq", v3, 15])) │ 00:09:44 verbose #10996 > > │ v13: None │ 00:09:44 verbose #10997 > > │ closure0(v8, None) │ 00:09:44 verbose #10998 > > │ v13 = None │ 00:09:44 verbose #10999 > > │ if v6 == False: │ 00:09:44 verbose #11000 > > │ raise Exception(v8) │ 00:09:44 verbose #11001 > > │ │ 00:09:44 verbose #11002 > > │ │ 00:09:44 verbose #11003 > > │ │ 00:09:44 verbose #11004 > > │ method0() │ 00:09:44 verbose #11005 > > │ │ 00:09:44 verbose #11006 > > │ │ 00:09:44 verbose #11007 > > │ .py: │ 00:09:44 verbose #11008 > > │ kernel = r""" │ 00:09:44 verbose #11009 > > │ """ │ 00:09:44 verbose #11010 > > │ class static_array(): │ 00:09:44 verbose #11011 > > │ def __init__(self, length): │ 00:09:44 verbose #11012 > > │ self.ptr = [] │ 00:09:44 verbose #11013 > > │ for _ in range(length): │ 00:09:44 verbose #11014 > > │ self.ptr.append(None) │ 00:09:44 verbose #11015 > > │ │ 00:09:44 verbose #11016 > > │ def __getitem__(self, index): │ 00:09:44 verbose #11017 > > │ assert 0 <= index < len(self.ptr), "The get index needs to be in │ 00:09:44 verbose #11018 > > │ range." │ 00:09:44 verbose #11019 > > │ return self.ptr[index] │ 00:09:44 verbose #11020 > > │ │ 00:09:44 verbose #11021 > > │ def __setitem__(self, index, value): │ 00:09:44 verbose #11022 > > │ assert 0 <= index < len(self.ptr), "The set index needs to be in │ 00:09:44 verbose #11023 > > │ range." │ 00:09:44 verbose #11024 > > │ self.ptr[index] = value │ 00:09:44 verbose #11025 > > │ │ 00:09:44 verbose #11026 > > │ class static_array_list(static_array): │ 00:09:44 verbose #11027 > > │ def __init__(self, length): │ 00:09:44 verbose #11028 > > │ super().__init__(length) │ 00:09:44 verbose #11029 > > │ self.length = 0 │ 00:09:44 verbose #11030 > > │ │ 00:09:44 verbose #11031 > > │ def __getitem__(self, index): │ 00:09:44 verbose #11032 > > │ assert 0 <= index < self.length, "The get index needs to be in │ 00:09:44 verbose #11033 > > │ range." │ 00:09:44 verbose #11034 > > │ return self.ptr[index] │ 00:09:44 verbose #11035 > > │ │ 00:09:44 verbose #11036 > > │ def __setitem__(self, index, value): │ 00:09:44 verbose #11037 > > │ assert 0 <= index < self.length, "The set index needs to be in │ 00:09:44 verbose #11038 > > │ range." │ 00:09:44 verbose #11039 > > │ self.ptr[index] = value │ 00:09:44 verbose #11040 > > │ │ 00:09:44 verbose #11041 > > │ def push(self,value): │ 00:09:44 verbose #11042 > > │ assert (self.length < len(self.ptr)), "The length before pushing has │ 00:09:44 verbose #11043 > > │ to be less than the maximum length of the array." │ 00:09:44 verbose #11044 > > │ self.ptr[self.length] = value │ 00:09:44 verbose #11045 > > │ self.length += 1 │ 00:09:44 verbose #11046 > > │ │ 00:09:44 verbose #11047 > > │ def pop(self): │ 00:09:44 verbose #11048 > > │ assert (0 < self.length), "The length before popping has to be │ 00:09:44 verbose #11049 > > │ greater than 0." │ 00:09:44 verbose #11050 > > │ self.length -= 1 │ 00:09:44 verbose #11051 > > │ return self.ptr[self.length] │ 00:09:44 verbose #11052 > > │ │ 00:09:44 verbose #11053 > > │ def unsafe_set_length(self,i): │ 00:09:44 verbose #11054 > > │ assert 0 <= i <= len(self.ptr), "The new length has to be in range." │ 00:09:44 verbose #11055 > > │ self.length = i │ 00:09:44 verbose #11056 > > │ │ 00:09:44 verbose #11057 > > │ class dynamic_array(static_array): │ 00:09:44 verbose #11058 > > │ pass │ 00:09:44 verbose #11059 > > │ │ 00:09:44 verbose #11060 > > │ class dynamic_array_list(static_array_list): │ 00:09:44 verbose #11061 > > │ def length_(self): return self.length │ 00:09:44 verbose #11062 > > │ │ 00:09:44 verbose #11063 > > │ import cupy as cp │ 00:09:44 verbose #11064 > > │ from dataclasses import dataclass │ 00:09:44 verbose #11065 > > │ from typing import NamedTuple, Union, Callable, Tuple │ 00:09:44 verbose #11066 > > │ i8 = i16 = i32 = i64 = u8 = u16 = u32 = u64 = int; f32 = f64 = float; char = │ 00:09:44 verbose #11067 > > │ string = str │ 00:09:44 verbose #11068 > > │ │ 00:09:44 verbose #11069 > > │ def method1() -> i32: │ 00:09:44 verbose #11070 > > │ return 3 │ 00:09:44 verbose #11071 > > │ def method2(v0 : i32) -> i32: │ 00:09:44 verbose #11072 > > │ v1 = 9 + v0 │ 00:09:44 verbose #11073 > > │ del v0 │ 00:09:44 verbose #11074 > > │ return v1 │ 00:09:44 verbose #11075 > > │ def method3(v0 : bool) -> bool: │ 00:09:44 verbose #11076 > > │ return v0 │ 00:09:44 verbose #11077 > > │ def method0() -> None: │ 00:09:44 verbose #11078 > > │ v0 = method1() │ 00:09:44 verbose #11079 > > │ v1 = method2(v0) │ 00:09:44 verbose #11080 > > │ del v0 │ 00:09:44 verbose #11081 > > │ v2 = v1 + 2 │ 00:09:44 verbose #11082 > > │ del v1 │ 00:09:44 verbose #11083 > > │ v3 = v2 + 1 │ 00:09:44 verbose #11084 > > │ del v2 │ 00:09:44 verbose #11085 > > │ v4 = v3 == 15 │ 00:09:44 verbose #11086 > > │ if v4: │ 00:09:44 verbose #11087 > > │ v6 = True │ 00:09:44 verbose #11088 > > │ else: │ 00:09:44 verbose #11089 > > │ v6 = method3(v4) │ 00:09:44 verbose #11090 > > │ del v4 │ 00:09:44 verbose #11091 > > │ v9 = "__assert_eq" │ 00:09:44 verbose #11092 > > │ v10 = f"{v9} / actual: {v3} / expected: {15}" │ 00:09:44 verbose #11093 > > │ del v3, v9 │ 00:09:44 verbose #11094 > > │ print(v10) │ 00:09:44 verbose #11095 > > │ v16 = v6 == False │ 00:09:44 verbose #11096 > > │ del v6 │ 00:09:44 verbose #11097 > > │ if v16: │ 00:09:44 verbose #11098 > > │ del v16 │ 00:09:44 verbose #11099 > > │ raise Exception(v10) │ 00:09:44 verbose #11100 > > │ else: │ 00:09:44 verbose #11101 > > │ del v10, v16 │ 00:09:44 verbose #11102 > > │ return │ 00:09:44 verbose #11103 > > │ def main(): │ 00:09:44 verbose #11104 > > │ return method0() │ 00:09:44 verbose #11105 > > │ │ 00:09:44 verbose #11106 > > │ if __name__ == '__main__': result = main(); None if result is None else │ 00:09:44 verbose #11107 > > │ print(result) │ 00:09:44 verbose #11108 > > │ │ 00:09:44 verbose #11109 > > │ │ 00:09:44 verbose #11110 > > │ .py: │ 00:09:44 verbose #11111 > > │ kernel = r""" │ 00:09:44 verbose #11112 > > │ """ │ 00:09:44 verbose #11113 > > │ class static_array(): │ 00:09:44 verbose #11114 > > │ def __init__(self, length): │ 00:09:44 verbose #11115 > > │ self.ptr = [] │ 00:09:44 verbose #11116 > > │ for _ in range(length): │ 00:09:44 verbose #11117 > > │ self.ptr.append(None) │ 00:09:44 verbose #11118 > > │ │ 00:09:44 verbose #11119 > > │ def __getitem__(self, index): │ 00:09:44 verbose #11120 > > │ assert 0 <= index < len(self.ptr), "The get index needs to be in │ 00:09:44 verbose #11121 > > │ range." │ 00:09:44 verbose #11122 > > │ return self.ptr[index] │ 00:09:44 verbose #11123 > > │ │ 00:09:44 verbose #11124 > > │ def __setitem__(self, index, value): │ 00:09:44 verbose #11125 > > │ assert 0 <= index < len(self.ptr), "The set index needs to be in │ 00:09:44 verbose #11126 > > │ range." │ 00:09:44 verbose #11127 > > │ self.ptr[index] = value │ 00:09:44 verbose #11128 > > │ │ 00:09:44 verbose #11129 > > │ class static_array_list(static_array): │ 00:09:44 verbose #11130 > > │ def __init__(self, length): │ 00:09:44 verbose #11131 > > │ super().__init__(length) │ 00:09:44 verbose #11132 > > │ self.length = 0 │ 00:09:44 verbose #11133 > > │ │ 00:09:44 verbose #11134 > > │ def __getitem__(self, index): │ 00:09:44 verbose #11135 > > │ assert 0 <= index < self.length, "The get index needs to be in │ 00:09:44 verbose #11136 > > │ range." │ 00:09:44 verbose #11137 > > │ return self.ptr[index] │ 00:09:44 verbose #11138 > > │ │ 00:09:44 verbose #11139 > > │ def __setitem__(self, index, value): │ 00:09:44 verbose #11140 > > │ assert 0 <= index < self.length, "The set index needs to be in │ 00:09:44 verbose #11141 > > │ range." │ 00:09:44 verbose #11142 > > │ self.ptr[index] = value │ 00:09:44 verbose #11143 > > │ │ 00:09:44 verbose #11144 > > │ def push(self,value): │ 00:09:44 verbose #11145 > > │ assert (self.length < len(self.ptr)), "The length before pushing has │ 00:09:44 verbose #11146 > > │ to be less than the maximum length of the array." │ 00:09:44 verbose #11147 > > │ self.ptr[self.length] = value │ 00:09:44 verbose #11148 > > │ self.length += 1 │ 00:09:44 verbose #11149 > > │ │ 00:09:44 verbose #11150 > > │ def pop(self): │ 00:09:44 verbose #11151 > > │ assert (0 < self.length), "The length before popping has to be │ 00:09:44 verbose #11152 > > │ greater than 0." │ 00:09:44 verbose #11153 > > │ self.length -= 1 │ 00:09:44 verbose #11154 > > │ return self.ptr[self.length] │ 00:09:44 verbose #11155 > > │ │ 00:09:44 verbose #11156 > > │ def unsafe_set_length(self,i): │ 00:09:44 verbose #11157 > > │ assert 0 <= i <= len(self.ptr), "The new length has to be in range." │ 00:09:44 verbose #11158 > > │ self.length = i │ 00:09:44 verbose #11159 > > │ │ 00:09:44 verbose #11160 > > │ class dynamic_array(static_array): │ 00:09:44 verbose #11161 > > │ pass │ 00:09:44 verbose #11162 > > │ │ 00:09:44 verbose #11163 > > │ class dynamic_array_list(static_array_list): │ 00:09:44 verbose #11164 > > │ def length_(self): return self.length │ 00:09:44 verbose #11165 > > │ │ 00:09:44 verbose #11166 > > │ import cupy as cp │ 00:09:44 verbose #11167 > > │ from dataclasses import dataclass │ 00:09:44 verbose #11168 > > │ from typing import NamedTuple, Union, Callable, Tuple │ 00:09:44 verbose #11169 > > │ i8 = i16 = i32 = i64 = u8 = u16 = u32 = u64 = int; f32 = f64 = float; char = │ 00:09:44 verbose #11170 > > │ string = str │ 00:09:44 verbose #11171 > > │ │ 00:09:44 verbose #11172 > > │ def method1() -> i32: │ 00:09:44 verbose #11173 > > │ return 3 │ 00:09:44 verbose #11174 > > │ def method2(v0 : i32) -> i32: │ 00:09:44 verbose #11175 > > │ v1 = 9 + v0 │ 00:09:44 verbose #11176 > > │ del v0 │ 00:09:44 verbose #11177 > > │ return v1 │ 00:09:44 verbose #11178 > > │ def method3(v0 : bool) -> bool: │ 00:09:44 verbose #11179 > > │ return v0 │ 00:09:44 verbose #11180 > > │ def method0() -> None: │ 00:09:44 verbose #11181 > > │ v0 = method1() │ 00:09:44 verbose #11182 > > │ v1 = method2(v0) │ 00:09:44 verbose #11183 > > │ del v0 │ 00:09:44 verbose #11184 > > │ v2 = v1 + 2 │ 00:09:44 verbose #11185 > > │ del v1 │ 00:09:44 verbose #11186 > > │ v3 = v2 + 1 │ 00:09:44 verbose #11187 > > │ del v2 │ 00:09:44 verbose #11188 > > │ v4 = v3 == 15 │ 00:09:44 verbose #11189 > > │ if v4: │ 00:09:44 verbose #11190 > > │ v6 = True │ 00:09:44 verbose #11191 > > │ else: │ 00:09:44 verbose #11192 > > │ v6 = method3(v4) │ 00:09:44 verbose #11193 > > │ del v4 │ 00:09:44 verbose #11194 > > │ v9 = "__assert_eq" │ 00:09:44 verbose #11195 > > │ v10 = f"{v9} / actual: {v3} / expected: {15}" │ 00:09:44 verbose #11196 > > │ del v3, v9 │ 00:09:44 verbose #11197 > > │ print(v10) │ 00:09:44 verbose #11198 > > │ v16 = v6 == False │ 00:09:44 verbose #11199 > > │ del v6 │ 00:09:44 verbose #11200 > > │ if v16: │ 00:09:44 verbose #11201 > > │ del v16 │ 00:09:44 verbose #11202 > > │ raise Exception(v10) │ 00:09:44 verbose #11203 > > │ else: │ 00:09:44 verbose #11204 > > │ del v10, v16 │ 00:09:44 verbose #11205 > > │ return │ 00:09:44 verbose #11206 > > │ def main(): │ 00:09:44 verbose #11207 > > │ return method0() │ 00:09:44 verbose #11208 > > │ │ 00:09:44 verbose #11209 > > │ if __name__ == '__main__': result = main(); None if result is None else │ 00:09:44 verbose #11210 > > │ print(result) │ 00:09:44 verbose #11211 > > │ │ 00:09:44 verbose #11212 > > │ .fsx output: │ 00:09:44 verbose #11213 > > │ __assert_eq / actual: 15 / expected: 15 │ 00:09:44 verbose #11214 > > │ │ 00:09:44 verbose #11215 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:44 verbose #11216 > > 00:09:44 verbose #11217 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:44 verbose #11218 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:44 verbose #11219 > > │ ### retry_fn' │ 00:09:44 verbose #11220 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:44 verbose #11221 > > 00:09:44 verbose #11222 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:44 verbose #11223 > > inl retry_fn' retries fn = 00:09:44 verbose #11224 > > let rec loop retry = 00:09:44 verbose #11225 > > inl is_error, result = 00:09:44 verbose #11226 > > match fn () with 00:09:44 verbose #11227 > > | Ok x => false, x 00:09:44 verbose #11228 > > | Error x => true, x 00:09:44 verbose #11229 > > if not is_error || retry >= retries 00:09:44 verbose #11230 > > then result 00:09:44 verbose #11231 > > else 00:09:44 verbose #11232 > > trace Debug 00:09:44 verbose #11233 > > fun () => $'"common.retry_fn\' / loop"' 00:09:44 verbose #11234 > > fun () => { is_error retry = $'$"{!retry}/{!retries}"' : string; 00:09:44 verbose #11235 > > result } 00:09:44 verbose #11236 > > loop (retry + 1) 00:09:44 verbose #11237 > > loop 1 00:09:44 verbose #11238 > > 00:09:44 verbose #11239 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:44 verbose #11240 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:44 verbose #11241 > > │ ## fsharp │ 00:09:44 verbose #11242 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:44 verbose #11243 > > 00:09:44 verbose #11244 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:44 verbose #11245 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:44 verbose #11246 > > │ ### upcast │ 00:09:44 verbose #11247 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:44 verbose #11248 > > 00:09:44 verbose #11249 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:44 verbose #11250 > > inl upcast forall t u. (x : t) : u = 00:09:44 verbose #11251 > > $'!x :> `u ' 00:09:44 verbose #11252 > > 00:09:44 verbose #11253 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:44 verbose #11254 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:44 verbose #11255 > > │ ### downcast │ 00:09:44 verbose #11256 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:44 verbose #11257 > > 00:09:44 verbose #11258 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:44 verbose #11259 > > inl downcast forall t u. (x : t) : u = 00:09:44 verbose #11260 > > $'!x :?> `u ' 00:09:44 verbose #11261 > > 00:09:44 verbose #11262 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:44 verbose #11263 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:44 verbose #11264 > > │ ### random │ 00:09:44 verbose #11265 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:44 verbose #11266 > > 00:09:44 verbose #11267 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:44 verbose #11268 > > nominal random = $'System.Random' 00:09:44 verbose #11269 > > 00:09:44 verbose #11270 > > inl random () : random = 00:09:44 verbose #11271 > > $'`random ' () 00:09:44 verbose #11272 > > 00:09:44 verbose #11273 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:44 verbose #11274 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:44 verbose #11275 > > │ ### random_next │ 00:09:44 verbose #11276 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:44 verbose #11277 > > 00:09:44 verbose #11278 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:44 verbose #11279 > > inl random_next (min : i32) (max : i32) (random : random) : i32 = 00:09:44 verbose #11280 > > $'!random.Next (!min, !max)' 00:09:44 verbose #11281 > > 00:09:44 verbose #11282 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:44 verbose #11283 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:44 verbose #11284 > > │ ### disposable │ 00:09:44 verbose #11285 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:44 verbose #11286 > > 00:09:44 verbose #11287 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:44 verbose #11288 > > nominal disposable t = $"backend_switch `({ Fsharp : $'System.IDisposable'; 00:09:44 verbose #11289 > > Python : $'object' })" 00:09:44 verbose #11290 > > 00:09:44 verbose #11291 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:44 verbose #11292 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:44 verbose #11293 > > │ ### dispose │ 00:09:44 verbose #11294 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:44 verbose #11295 > > 00:09:44 verbose #11296 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:44 verbose #11297 > > inl dispose (disposable : disposable _) : () = 00:09:44 verbose #11298 > > backend_switch { 00:09:44 verbose #11299 > > Fsharp = fun () => disposable |> $'_.Dispose()' : () 00:09:44 verbose #11300 > > Python = fun () => $'!disposable.__exit__(None, None, None)' : () 00:09:44 verbose #11301 > > } 00:09:44 verbose #11302 > > 00:09:44 verbose #11303 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:44 verbose #11304 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:44 verbose #11305 > > │ ### return │ 00:09:44 verbose #11306 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:44 verbose #11307 > > 00:09:44 verbose #11308 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:44 verbose #11309 > > inl return forall t. (x : t) : () = 00:09:44 verbose #11310 > > $'return !x ' 00:09:44 verbose #11311 > > 00:09:44 verbose #11312 > > inl return' forall t. (x : t) : t = 00:09:44 verbose #11313 > > $'return !x ' 00:09:44 verbose #11314 > > 00:09:44 verbose #11315 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:44 verbose #11316 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:09:44 verbose #11317 > > │ ### retry_fn │ 00:09:44 verbose #11318 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:44 verbose #11319 > > 00:09:44 verbose #11320 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:44 verbose #11321 > > inl retry_fn forall t. retries (fn : () -> t) : option t = 00:09:44 verbose #11322 > > let rec loop retry = 00:09:44 verbose #11323 > > try 00:09:44 verbose #11324 > > fun () => 00:09:44 verbose #11325 > > if retry < retries 00:09:44 verbose #11326 > > then fn () |> Some 00:09:44 verbose #11327 > > else None 00:09:44 verbose #11328 > > fun ex => 00:09:44 verbose #11329 > > trace Warning 00:09:44 verbose #11330 > > fun () => "common.retry_fn" 00:09:44 verbose #11331 > > fun () => { retry ex } 00:09:44 verbose #11332 > > None 00:09:44 verbose #11333 > > |> function 00:09:44 verbose #11334 > > | Some x => x 00:09:44 verbose #11335 > > | None => loop (retry + 1) 00:09:44 verbose #11336 > > loop 0 00:09:44 verbose #11337 > > 00:09:44 verbose #11338 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:44 verbose #11339 > > //// test 00:09:44 verbose #11340 > > ///! fsharp 00:09:44 verbose #11341 > > ////! cuda // v3 = $"retry: {v0} / ex: %A{v1} / {v2 ()}" 00:09:44 verbose #11342 > > ///! rust 00:09:44 verbose #11343 > > ///! typescript 00:09:44 verbose #11344 > > ///! python 00:09:44 verbose #11345 > > 00:09:44 verbose #11346 > > inl retry_fn_test = mut 0i32 00:09:44 verbose #11347 > > fun () => 00:09:44 verbose #11348 > > retry_fn_test <- *retry_fn_test + 1 00:09:44 verbose #11349 > > *retry_fn_test 00:09:44 verbose #11350 > > |> retry_fn 3i32 00:09:44 verbose #11351 > > |> _assert_eq' (Some 1i32) 00:09:57 verbose #11352 > > 00:09:57 verbose #11353 > > ╭─[ 13.03s - return value ]────────────────────────────────────────────────────╮ 00:09:57 verbose #11354 > > │ .rs output: │ 00:09:57 verbose #11355 > > │ __assert_eq' / actual: US0_0(1) / expected: US0_0(1) │ 00:09:57 verbose #11356 > > │ │ 00:09:57 verbose #11357 > > │ .ts output: │ 00:09:57 verbose #11358 > > │ __assert_eq' / actual: US0_0 1 / expected: US0_0 1 │ 00:09:57 verbose #11359 > > │ │ 00:09:57 verbose #11360 > > │ .py output: │ 00:09:57 verbose #11361 > > │ __assert_eq' / actual: US0_0 1 / expected: US0_0 1 │ 00:09:57 verbose #11362 > > │ │ 00:09:57 verbose #11363 > > │ │ 00:09:57 verbose #11364 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:57 verbose #11365 > > 00:09:57 verbose #11366 > > ╭─[ 13.03s - stdout ]──────────────────────────────────────────────────────────╮ 00:09:57 verbose #11367 > > │ .fsx output: │ 00:09:57 verbose #11368 > > │ __assert_eq' / actual: US0_0 1 / expected: US0_0 1 │ 00:09:57 verbose #11369 > > │ │ 00:09:57 verbose #11370 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:09:57 verbose #11371 > > 00:09:57 verbose #11372 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:57 verbose #11373 > > //// test 00:09:57 verbose #11374 > > ///! fsharp 00:09:57 verbose #11375 > > ////! cuda // v3 = $"retry: {v0} / ex: %A{v1} / {v2 ()}" 00:09:57 verbose #11376 > > ///! rust 00:09:57 verbose #11377 > > ///! typescript 00:09:57 verbose #11378 > > ///! python 00:09:57 verbose #11379 > > 00:09:57 verbose #11380 > > inl retry_fn_test = mut 0i32 00:09:57 verbose #11381 > > fun () => 00:09:57 verbose #11382 > > if *retry_fn_test >= 2 00:09:57 verbose #11383 > > then *retry_fn_test 00:09:57 verbose #11384 > > else 00:09:57 verbose #11385 > > retry_fn_test <- *retry_fn_test + 1 00:09:57 verbose #11386 > > failwith "test" 00:09:57 verbose #11387 > > |> retry_fn 3i32 00:09:57 verbose #11388 > > |> _assert_eq' (Some 2i32) 00:10:10 verbose #11389 > > 00:10:10 verbose #11390 > > ╭─[ 12.61s - return value ]────────────────────────────────────────────────────╮ 00:10:10 verbose #11391 > > │ │ 00:10:10 verbose #11392 > > │ .rs output: │ 00:10:10 verbose #11393 > > │ 00:00:00 warning #1 common.retry_fn / { retry = 0; ex = Exception { │ 00:10:10 verbose #11394 > > │ message: "test", │ 00:10:10 verbose #11395 > > │ } } │ 00:10:10 verbose #11396 > > │ 00:00:00 warning #2 common.retry_fn / { retry = 1; ex = Exception { │ 00:10:10 verbose #11397 > > │ message: "test", │ 00:10:10 verbose #11398 > > │ } } │ 00:10:10 verbose #11399 > > │ __assert_eq' / actual: US0_0(2) / expected: US0_0(2) │ 00:10:10 verbose #11400 > > │ │ 00:10:10 verbose #11401 > > │ │ 00:10:10 verbose #11402 > > │ .ts output: │ 00:10:10 verbose #11403 > > │ 00:00:00 warning #1 common.retry_fn / { retry = 0; ex = Error: test } │ 00:10:10 verbose #11404 > > │ 00:00:00 warning #2 common.retry_fn / { retry = 1; ex = Error: test } │ 00:10:10 verbose #11405 > > │ __assert_eq' / actual: US0_0 2 / expected: US0_0 2 │ 00:10:10 verbose #11406 > > │ │ 00:10:10 verbose #11407 > > │ │ 00:10:10 verbose #11408 > > │ .py output: │ 00:10:10 verbose #11409 > > │ 00:00:00 warning #1 common.retry_fn / { retry = 0; ex = test } │ 00:10:10 verbose #11410 > > │ 00:00:00 warning #2 common.retry_fn / { retry = 1; ex = test } │ 00:10:10 verbose #11411 > > │ __assert_eq' / actual: US0_0 2 / expected: US0_0 2 │ 00:10:10 verbose #11412 > > │ │ 00:10:10 verbose #11413 > > │ │ 00:10:10 verbose #11414 > > │ │ 00:10:10 verbose #11415 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:10 verbose #11416 > > 00:10:10 verbose #11417 > > ╭─[ 12.61s - stdout ]──────────────────────────────────────────────────────────╮ 00:10:10 verbose #11418 > > │ .fsx output: │ 00:10:10 verbose #11419 > > │ 00:00:00 warning #1 common.retry_fn / { retry = 0; ex = │ 00:10:10 verbose #11420 > > │ System.Exception: test │ 00:10:10 verbose #11421 > > │ at FSI_0031.closure1(Mut0 v0, Int32 v1, Unit unitVar2) │ 00:10:10 verbose #11422 > > │ at FSI_0031.method1(Mut0 v0, Int32 v1) } │ 00:10:10 verbose #11423 > > │ 00:00:00 warning #2 common.retry_fn / { retry = 1; ex = │ 00:10:10 verbose #11424 > > │ System.Exception: test │ 00:10:10 verbose #11425 > > │ at FSI_0031.closure1(Mut0 v0, Int32 v1, Unit unitVar2) │ 00:10:10 verbose #11426 > > │ at FSI_0031.method1(Mut0 v0, Int32 v1) } │ 00:10:10 verbose #11427 > > │ __assert_eq' / actual: US0_0 2 / expected: US0_0 2 │ 00:10:10 verbose #11428 > > │ │ 00:10:10 verbose #11429 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:10 verbose #11430 > > 00:10:10 verbose #11431 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:10 verbose #11432 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:10 verbose #11433 > > │ ## common │ 00:10:10 verbose #11434 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:10 verbose #11435 > > 00:10:10 verbose #11436 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:10 verbose #11437 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:10 verbose #11438 > > │ ### random' │ 00:10:10 verbose #11439 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:10 verbose #11440 > > 00:10:10 verbose #11441 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:10 verbose #11442 > > inl random' forall t. (min : t) (max : t) : t = 00:10:10 verbose #11443 > > run_target function 00:10:10 verbose #11444 > > | Rust (Contract) => fun () => 00:10:10 verbose #11445 > > failwith "common.random' / target=Rust(Contract)" 00:10:10 verbose #11446 > > | Rust _ => fun () => 00:10:10 verbose #11447 > > open rust.rust_operators 00:10:10 verbose #11448 > > !\\((min, max), $'"rand::Rng::gen_range(&mut rand::thread_rng(), 00:10:10 verbose #11449 > > $0..$1)"') 00:10:10 verbose #11450 > > | _ => fun () => 00:10:10 verbose #11451 > > random () |> random_next (i32 min) (i32 max) |> convert 00:10:10 verbose #11452 > > 00:10:10 verbose #11453 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:10 verbose #11454 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:10 verbose #11455 > > │ ### new_disposable │ 00:10:10 verbose #11456 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:10 verbose #11457 > > 00:10:10 verbose #11458 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:10 verbose #11459 > > inl new_disposable (fn : () -> ()) : disposable _ = 00:10:10 verbose #11460 > > run_target function 00:10:10 verbose #11461 > > | Rust _ => fun () => 00:10:10 verbose #11462 > > global "type Disposable (f : unit -> unit) = interface 00:10:10 verbose #11463 > > System.IDisposable with member _.Dispose () = f ()" 00:10:10 verbose #11464 > > inl fn = join fn 00:10:10 verbose #11465 > > $'new Disposable (fun () -> Fable.Core.RustInterop.emitRustExpr !fn 00:10:10 verbose #11466 > > "$0()" )' 00:10:10 verbose #11467 > > | Fsharp _ | TypeScript _ | Python _ => fun () => 00:10:10 verbose #11468 > > inl fn = join fn 00:10:10 verbose #11469 > > $'{ new System.IDisposable with member _.Dispose () = !fn () }' 00:10:10 verbose #11470 > > | Cuda _ => fun () => 00:10:10 verbose #11471 > > $'class Disposable:' 00:10:10 verbose #11472 > > $' def __init__(self, fn):' 00:10:10 verbose #11473 > > $' self.fn = fn' 00:10:10 verbose #11474 > > $' def __exit__(self, exc_type, exc_value, traceback):' 00:10:10 verbose #11475 > > $' self.fn()' 00:10:10 verbose #11476 > > $' return False' 00:10:10 verbose #11477 > > $'Disposable(!fn)' 00:10:10 verbose #11478 > > | _ => fun () => null () 00:10:10 verbose #11479 > > 00:10:10 verbose #11480 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:10 verbose #11481 > > //// test 00:10:10 verbose #11482 > > ///! fsharp 00:10:10 verbose #11483 > > ///! cuda 00:10:10 verbose #11484 > > ///! rust 00:10:10 verbose #11485 > > ///! typescript 00:10:10 verbose #11486 > > ///! python 00:10:10 verbose #11487 > > 00:10:10 verbose #11488 > > inl new_disposable_test = mut 0i32 00:10:10 verbose #11489 > > new_disposable fun () => new_disposable_test <- *new_disposable_test + 1 00:10:10 verbose #11490 > > |> fun x => x : disposable () 00:10:10 verbose #11491 > > |> dispose 00:10:10 verbose #11492 > > *new_disposable_test |> _assert_eq 1 00:10:22 verbose #11493 > > 00:10:22 verbose #11494 > > ╭─[ 11.74s - return value ]────────────────────────────────────────────────────╮ 00:10:22 verbose #11495 > > │ .py output (Cuda): │ 00:10:22 verbose #11496 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:10:22 verbose #11497 > > │ │ 00:10:22 verbose #11498 > > │ .rs output: │ 00:10:22 verbose #11499 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:10:22 verbose #11500 > > │ │ 00:10:22 verbose #11501 > > │ .ts output: │ 00:10:22 verbose #11502 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:10:22 verbose #11503 > > │ │ 00:10:22 verbose #11504 > > │ .py output: │ 00:10:22 verbose #11505 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:10:22 verbose #11506 > > │ │ 00:10:22 verbose #11507 > > │ │ 00:10:22 verbose #11508 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:22 verbose #11509 > > 00:10:22 verbose #11510 > > ╭─[ 11.74s - stdout ]──────────────────────────────────────────────────────────╮ 00:10:22 verbose #11511 > > │ .fsx output: │ 00:10:22 verbose #11512 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:10:22 verbose #11513 > > │ │ 00:10:22 verbose #11514 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:22 verbose #11515 > > 00:10:22 verbose #11516 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:22 verbose #11517 > > //// test 00:10:22 verbose #11518 > > 00:10:22 verbose #11519 > > inl new_disposable_test = mut 0i32 00:10:22 verbose #11520 > > fun () => 00:10:22 verbose #11521 > > new_disposable fun () => new_disposable_test <- *new_disposable_test + 1 00:10:22 verbose #11522 > > |> fun x => x : disposable () 00:10:22 verbose #11523 > > |> use 00:10:22 verbose #11524 > > |> ignore 00:10:22 verbose #11525 > > |> return 00:10:22 verbose #11526 > > |> async.new_task 00:10:22 verbose #11527 > > |> async.await_task 00:10:22 verbose #11528 > > |> async.run_synchronously 00:10:22 verbose #11529 > > *new_disposable_test |> _assert_eq 1 00:10:22 verbose #11530 > > 00:10:22 verbose #11531 > > ╭─[ 171.12ms - stdout ]────────────────────────────────────────────────────────╮ 00:10:22 verbose #11532 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:10:22 verbose #11533 > > │ │ 00:10:22 verbose #11534 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:22 verbose #11535 > > 00:10:22 verbose #11536 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:22 verbose #11537 > > //// test 00:10:22 verbose #11538 > > 00:10:22 verbose #11539 > > inl new_disposable_test = mut 0i32 00:10:22 verbose #11540 > > fun () => 00:10:22 verbose #11541 > > new_disposable fun () => new_disposable_test <- *new_disposable_test + 1 00:10:22 verbose #11542 > > |> fun x => x : disposable () 00:10:22 verbose #11543 > > |> use 00:10:22 verbose #11544 > > |> ignore 00:10:22 verbose #11545 > > |> return 00:10:22 verbose #11546 > > |> async.new_async 00:10:22 verbose #11547 > > |> async.run_synchronously 00:10:22 verbose #11548 > > *new_disposable_test |> _assert_eq 1 00:10:22 verbose #11549 > > 00:10:22 verbose #11550 > > ╭─[ 112.68ms - stdout ]────────────────────────────────────────────────────────╮ 00:10:22 verbose #11551 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:10:22 verbose #11552 > > │ │ 00:10:22 verbose #11553 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:22 verbose #11554 > > 00:10:22 verbose #11555 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:22 verbose #11556 > > //// test 00:10:22 verbose #11557 > > 00:10:22 verbose #11558 > > inl new_disposable_test = mut 0i32 00:10:22 verbose #11559 > > fun () => 00:10:22 verbose #11560 > > new_disposable fun () => new_disposable_test <- *new_disposable_test + 1 00:10:22 verbose #11561 > > |> fun x => x : disposable () 00:10:22 verbose #11562 > > |> ignore 00:10:22 verbose #11563 > > |> return 00:10:22 verbose #11564 > > |> async.new_async 00:10:22 verbose #11565 > > |> async.run_synchronously 00:10:22 verbose #11566 > > *new_disposable_test |> _assert_eq 0 00:10:22 verbose #11567 > > 00:10:22 verbose #11568 > > ╭─[ 150.77ms - stdout ]────────────────────────────────────────────────────────╮ 00:10:22 verbose #11569 > > │ __assert_eq / actual: 0 / expected: 0 │ 00:10:22 verbose #11570 > > │ │ 00:10:22 verbose #11571 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:22 verbose #11572 > > 00:10:22 verbose #11573 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:22 verbose #11574 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:22 verbose #11575 > > │ ## main │ 00:10:22 verbose #11576 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:22 verbose #11577 > > 00:10:22 verbose #11578 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:22 verbose #11579 > > inl main () = 00:10:22 verbose #11580 > > init_trace_state None 00:10:22 verbose #11581 > > inl new_disposable x : _ () = new_disposable x 00:10:22 verbose #11582 > > $'let new_disposable x = !new_disposable x' : () 00:10:22 verbose #11583 > > inl retry_fn (r : i32) (x : () -> _) : optionm'.option' () = retry_fn r x |> 00:10:22 verbose #11584 > > optionm'.box 00:10:22 verbose #11585 > > $'let retry_fn x = !retry_fn x' : () 00:10:22 verbose #11586 > > inl memoize (fn : () -> ()) : () -> () = memoize fn 00:10:22 verbose #11587 > > $'let memoize x = !memoize x' : () 00:10:23 verbose #11588 > 00:01:38 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 154954 } 00:10:23 verbose #11589 > 00:01:38 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:10:23 verbose #11590 > "nbconvert", 00:10:23 verbose #11591 > "/home/runner/work/polyglot/polyglot/lib/spiral/common.dib.ipynb", 00:10:23 verbose #11592 > "--to", 00:10:23 verbose #11593 > "html", 00:10:23 verbose #11594 > "--HTMLExporter.theme=dark", 00:10:23 verbose #11595 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/common.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:10:23 verbose #11596 > 00:01:38 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/common.dib.ipynb to html 00:10:23 verbose #11597 > 00:01:38 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:10:23 verbose #11598 > 00:01:38 verbose #7 ! validate(nb) 00:10:24 verbose #11599 > 00:01:39 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:10:24 verbose #11600 > 00:01:39 verbose #9 ! return _pygments_highlight( 00:10:24 verbose #11601 > 00:01:39 verbose #10 ! [NbConvertApp] Writing 365843 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/common.dib.html 00:10:24 verbose #11602 > 00:01:39 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 896 } 00:10:24 verbose #11603 > 00:01:39 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 896 } 00:10:24 verbose #11604 > 00:01:39 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:10:24 verbose #11605 > "-c", 00:10:24 verbose #11606 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/common.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:10:24 verbose #11607 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/common.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:10:24 verbose #11608 > 00:01:40 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:10:24 verbose #11609 > 00:01:40 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:10:24 verbose #11610 > 00:01:40 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 155909 } 00:10:24 debug #11611 runtime.execute_with_options_async / { exit_code = 0; output_length = 162199 } 00:10:24 debug #12 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path common.dib --retries 3 00:10:24 debug #11612 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path resultm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:10:24 verbose #11613 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "resultm.dib", "--retries", "3"])) } 00:10:24 verbose #11614 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:10:24 verbose #11615 > "repl", 00:10:24 verbose #11616 > "--exit-after-run", 00:10:24 verbose #11617 > "--run", 00:10:24 verbose #11618 > "/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib", 00:10:24 verbose #11619 > "--output-path", 00:10:24 verbose #11620 > "/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.ipynb", 00:10:24 verbose #11621 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:10:26 verbose #11622 > > 00:10:26 verbose #11623 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:26 verbose #11624 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:26 verbose #11625 > > │ # resultm │ 00:10:26 verbose #11626 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:28 verbose #11627 > > 00:10:28 verbose #11628 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:28 verbose #11629 > > open rust 00:10:28 verbose #11630 > > open rust_operators 00:10:29 verbose #11631 > > 00:10:29 verbose #11632 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:29 verbose #11633 > > //// test 00:10:29 verbose #11634 > > 00:10:29 verbose #11635 > > open testing 00:10:29 verbose #11636 > > 00:10:29 verbose #11637 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:29 verbose #11638 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:29 verbose #11639 > > │ ## resultm │ 00:10:29 verbose #11640 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:29 verbose #11641 > > 00:10:29 verbose #11642 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:29 verbose #11643 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:29 verbose #11644 > > │ ### from_option_error │ 00:10:29 verbose #11645 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:29 verbose #11646 > > 00:10:29 verbose #11647 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:29 verbose #11648 > > inl from_option_error error opt = 00:10:29 verbose #11649 > > match opt with 00:10:29 verbose #11650 > > | Some x => Ok x 00:10:29 verbose #11651 > > | None => Error error 00:10:29 verbose #11652 > > 00:10:29 verbose #11653 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:29 verbose #11654 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:29 verbose #11655 > > │ ### from_option │ 00:10:29 verbose #11656 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:29 verbose #11657 > > 00:10:29 verbose #11658 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:29 verbose #11659 > > inl from_option opt = 00:10:29 verbose #11660 > > opt |> from_option_error "resultm.from_option / Option does not have a 00:10:29 verbose #11661 > > value." 00:10:29 verbose #11662 > > 00:10:29 verbose #11663 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:29 verbose #11664 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:29 verbose #11665 > > │ ### flatten_option │ 00:10:29 verbose #11666 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:29 verbose #11667 > > 00:10:29 verbose #11668 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:29 verbose #11669 > > inl flatten_option forall t u. (x : option (result (option t) u)) : result 00:10:29 verbose #11670 > > (option t) u = 00:10:29 verbose #11671 > > match x with 00:10:29 verbose #11672 > > | Some (Error x) => Error x 00:10:29 verbose #11673 > > | Some (Ok (Some x)) => Ok (Some x) 00:10:29 verbose #11674 > > | _ => Ok None 00:10:29 verbose #11675 > > 00:10:29 verbose #11676 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:29 verbose #11677 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:29 verbose #11678 > > │ ### flatten │ 00:10:29 verbose #11679 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:29 verbose #11680 > > 00:10:29 verbose #11681 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:29 verbose #11682 > > inl flatten forall t u. (x : result (result t u) u) : result t u = 00:10:29 verbose #11683 > > match x with 00:10:29 verbose #11684 > > | Ok x => x 00:10:29 verbose #11685 > > | Error x => Error x 00:10:29 verbose #11686 > > 00:10:29 verbose #11687 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:29 verbose #11688 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:29 verbose #11689 > > │ ### get │ 00:10:29 verbose #11690 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:29 verbose #11691 > > 00:10:29 verbose #11692 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:29 verbose #11693 > > inl get forall t e. (source : result t e) : t = 00:10:29 verbose #11694 > > match source with 00:10:29 verbose #11695 > > | Ok x => x 00:10:29 verbose #11696 > > | Error x => failwith $'$"resultm.get / Result value was Error: {!x}"' 00:10:30 verbose #11697 > > 00:10:30 verbose #11698 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:30 verbose #11699 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:30 verbose #11700 > > │ ### map │ 00:10:30 verbose #11701 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:30 verbose #11702 > > 00:10:30 verbose #11703 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:30 verbose #11704 > > inl map forall t e u. (fn : t -> u) (source : result t e) : result u e = 00:10:30 verbose #11705 > > match source with 00:10:30 verbose #11706 > > | Ok x => x |> fn |> Ok 00:10:30 verbose #11707 > > | Error x => Error x 00:10:30 verbose #11708 > > 00:10:30 verbose #11709 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:30 verbose #11710 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:30 verbose #11711 > > │ ### map_error │ 00:10:30 verbose #11712 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:30 verbose #11713 > > 00:10:30 verbose #11714 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:30 verbose #11715 > > inl map_error forall t e u. (fn : e -> u) (source : result t e) : result t u = 00:10:30 verbose #11716 > > match source with 00:10:30 verbose #11717 > > | Ok x => Ok x 00:10:30 verbose #11718 > > | Error x => x |> fn |> Error 00:10:30 verbose #11719 > > 00:10:30 verbose #11720 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:30 verbose #11721 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:30 verbose #11722 > > │ ### unwrap_err │ 00:10:30 verbose #11723 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:30 verbose #11724 > > 00:10:30 verbose #11725 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:30 verbose #11726 > > inl unwrap_err forall t u. (x : result t u) : u = 00:10:30 verbose #11727 > > match x with 00:10:30 verbose #11728 > > | Ok x => failwith $'$"resultm.unwrap_err / x: {!x}"' 00:10:30 verbose #11729 > > | Error x => x 00:10:30 verbose #11730 > > 00:10:30 verbose #11731 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:30 verbose #11732 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:30 verbose #11733 > > │ ### ok │ 00:10:30 verbose #11734 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:30 verbose #11735 > > 00:10:30 verbose #11736 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:30 verbose #11737 > > inl ok forall t. (x : result t _) : option t = 00:10:30 verbose #11738 > > match x with 00:10:30 verbose #11739 > > | Ok x => Some x 00:10:30 verbose #11740 > > | Error _ => None 00:10:30 verbose #11741 > > 00:10:30 verbose #11742 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:30 verbose #11743 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:30 verbose #11744 > > │ ## fsharp │ 00:10:30 verbose #11745 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:30 verbose #11746 > > 00:10:30 verbose #11747 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:30 verbose #11748 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:30 verbose #11749 > > │ ### result' │ 00:10:30 verbose #11750 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:30 verbose #11751 > > 00:10:30 verbose #11752 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:30 verbose #11753 > > nominal result' t u = $'Result<`t, `u>' 00:10:30 verbose #11754 > > 00:10:30 verbose #11755 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:30 verbose #11756 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:30 verbose #11757 > > │ ### unbox │ 00:10:30 verbose #11758 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:30 verbose #11759 > > 00:10:30 verbose #11760 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:30 verbose #11761 > > inl unbox forall t u. (x : result' t u) : result t u = 00:10:30 verbose #11762 > > inl ok x : result t u = Ok x 00:10:30 verbose #11763 > > inl error x : result t u = Error x 00:10:30 verbose #11764 > > real 00:10:30 verbose #11765 > > typecase t with 00:10:30 verbose #11766 > > | () => $'match !x with Ok () -> !ok () | Error x -> !error x' : result 00:10:30 verbose #11767 > > t u 00:10:30 verbose #11768 > > | _ => $'match !x with Ok x -> !ok x | Error x -> !error x' : result t u 00:10:30 verbose #11769 > > 00:10:30 verbose #11770 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:30 verbose #11771 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:30 verbose #11772 > > │ ### box │ 00:10:30 verbose #11773 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:30 verbose #11774 > > 00:10:30 verbose #11775 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:30 verbose #11776 > > inl box forall t u. (x : result t u) : result' t u = 00:10:30 verbose #11777 > > match x with 00:10:30 verbose #11778 > > | Ok x => $'Ok !x ' 00:10:30 verbose #11779 > > | Error err => $'Error !err ' 00:10:30 verbose #11780 > > 00:10:30 verbose #11781 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:30 verbose #11782 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:30 verbose #11783 > > │ ## rust │ 00:10:30 verbose #11784 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:30 verbose #11785 > > 00:10:30 verbose #11786 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:30 verbose #11787 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:30 verbose #11788 > > │ ### anyhow_result │ 00:10:30 verbose #11789 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:31 verbose #11790 > > 00:10:31 verbose #11791 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:31 verbose #11792 > > nominal anyhow_result t = 00:10:31 verbose #11793 > > `( 00:10:31 verbose #11794 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:10:31 verbose #11795 > > Fable.Core.Emit(\"anyhow::Result<$0>\")>]]\n#endif\ntype anyhow_Result<'T> = 00:10:31 verbose #11796 > > class end" 00:10:31 verbose #11797 > > $'' : $'anyhow_Result<`t>' 00:10:31 verbose #11798 > > ) 00:10:31 verbose #11799 > > 00:10:31 verbose #11800 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:31 verbose #11801 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:31 verbose #11802 > > │ ### anyhow_error │ 00:10:31 verbose #11803 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:31 verbose #11804 > > 00:10:31 verbose #11805 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:31 verbose #11806 > > nominal anyhow_error = 00:10:31 verbose #11807 > > `( 00:10:31 verbose #11808 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:10:31 verbose #11809 > > Fable.Core.Emit(\"anyhow::Error\")>]]\n#endif\ntype anyhow_Error = class end" 00:10:31 verbose #11810 > > $'' : $'anyhow_Error' 00:10:31 verbose #11811 > > ) 00:10:31 verbose #11812 > > 00:10:31 verbose #11813 > > inl anyhow_error error = 00:10:31 verbose #11814 > > !\\(error, $'"anyhow::anyhow\!($0)"') 00:10:31 verbose #11815 > > 00:10:31 verbose #11816 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:31 verbose #11817 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:31 verbose #11818 > > │ ### try' │ 00:10:31 verbose #11819 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:31 verbose #11820 > > 00:10:31 verbose #11821 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:31 verbose #11822 > > inl try' forall t u. (x : result' t u) : t = 00:10:31 verbose #11823 > > inl is_unit = 00:10:31 verbose #11824 > > real 00:10:31 verbose #11825 > > typecase t with 00:10:31 verbose #11826 > > | () => true 00:10:31 verbose #11827 > > | _ => false 00:10:31 verbose #11828 > > if is_unit 00:10:31 verbose #11829 > > then (!\\(x, $'"true; $0?"') : bool) |> fun _ => $'' 00:10:31 verbose #11830 > > else !\\(x, $'"$0?"') 00:10:31 verbose #11831 > > 00:10:31 verbose #11832 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:31 verbose #11833 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:31 verbose #11834 > > │ ### to_try │ 00:10:31 verbose #11835 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:31 verbose #11836 > > 00:10:31 verbose #11837 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:31 verbose #11838 > > inl to_try forall t u. (x : result' t u) : rust.try t = 00:10:31 verbose #11839 > > !\\(x, $'"$0"') 00:10:31 verbose #11840 > > 00:10:31 verbose #11841 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:31 verbose #11842 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:31 verbose #11843 > > │ ### unwrap' │ 00:10:31 verbose #11844 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:31 verbose #11845 > > 00:10:31 verbose #11846 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:31 verbose #11847 > > inl unwrap' forall t u. (x : result' t u) : t = 00:10:31 verbose #11848 > > !\\(x, $'"$0.unwrap()"') 00:10:31 verbose #11849 > > 00:10:31 verbose #11850 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:31 verbose #11851 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:31 verbose #11852 > > │ ### unbox' │ 00:10:31 verbose #11853 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:31 verbose #11854 > > 00:10:31 verbose #11855 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:31 verbose #11856 > > inl unbox' forall t u. (x : result' t u) : result t u = 00:10:31 verbose #11857 > > inl ok x : result t u = Ok x 00:10:31 verbose #11858 > > inl ok = join ok 00:10:31 verbose #11859 > > inl error x : result t u = Error x 00:10:31 verbose #11860 > > inl error = join error 00:10:31 verbose #11861 > > real 00:10:31 verbose #11862 > > typecase t with 00:10:31 verbose #11863 > > | () => 00:10:31 verbose #11864 > > (~!\\) 00:10:31 verbose #11865 > > `((result' t u -> result t u) * (result' t u -> result t u)) 00:10:31 verbose #11866 > > `(result t u) 00:10:31 verbose #11867 > > ((ok, error), ($'"match !x { Ok(()) => $0(()), Err(e) => $1(e) 00:10:31 verbose #11868 > > }"' : string)) 00:10:31 verbose #11869 > > | _ => 00:10:31 verbose #11870 > > (~!\\) 00:10:31 verbose #11871 > > `((result' t u -> result t u) * (result' t u -> result t u)) 00:10:31 verbose #11872 > > `(result t u) 00:10:31 verbose #11873 > > ((ok, error), ($'"match !x { Ok(x) => $0(x), Err(e) => $1(e) }"' 00:10:31 verbose #11874 > > : string)) 00:10:31 verbose #11875 > > 00:10:31 verbose #11876 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:31 verbose #11877 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:31 verbose #11878 > > │ ### map' │ 00:10:31 verbose #11879 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:31 verbose #11880 > > 00:10:31 verbose #11881 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:31 verbose #11882 > > inl map' forall t e u. (fn : t -> u) (source : result' t e) : result' u e = 00:10:31 verbose #11883 > > (!\\(source, $'"true; let _result_map_ = $0.map(|x| { //"') : bool) |> 00:10:31 verbose #11884 > > ignore 00:10:31 verbose #11885 > > (!\\(fn !\($'"x"'), $'"true; $0 })"') : bool) |> ignore 00:10:31 verbose #11886 > > !\($'"_result_map_"') 00:10:31 verbose #11887 > > 00:10:31 verbose #11888 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:31 verbose #11889 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:31 verbose #11890 > > │ ### map'' │ 00:10:31 verbose #11891 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:31 verbose #11892 > > 00:10:31 verbose #11893 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:31 verbose #11894 > > inl map'' forall t e u. (fn : t -> u) (source : result' t e) : result' u e = 00:10:31 verbose #11895 > > inl fn = join fn 00:10:31 verbose #11896 > > inl source = join source 00:10:31 verbose #11897 > > !\($'"!source.map(|x| !fn(x))"') 00:10:31 verbose #11898 > > 00:10:31 verbose #11899 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:31 verbose #11900 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:31 verbose #11901 > > │ ### map_error' │ 00:10:31 verbose #11902 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:31 verbose #11903 > > 00:10:31 verbose #11904 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:31 verbose #11905 > > inl map_error' forall t e u. (fn : e -> u) (source : result' t e) : result' t u 00:10:31 verbose #11906 > > = 00:10:31 verbose #11907 > > inl fn = join fn 00:10:31 verbose #11908 > > !\\((source, fn), $'"$0.map_err(|x| $1(x))"') 00:10:31 verbose #11909 > > 00:10:31 verbose #11910 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:31 verbose #11911 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:31 verbose #11912 > > │ ### map_error'' │ 00:10:31 verbose #11913 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:31 verbose #11914 > > 00:10:31 verbose #11915 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:31 verbose #11916 > > inl map_error'' forall t e u. (fn : e -> u) (source : result' t e) : result' t u 00:10:31 verbose #11917 > > = 00:10:31 verbose #11918 > > (!\\(source, $'"true; let _result_map_error__ = $0.map_err(|x| { //"') : 00:10:31 verbose #11919 > > bool) |> ignore 00:10:31 verbose #11920 > > (!\\(fn !\($'"x"'), $'"true; $0 })"') : bool) |> ignore 00:10:31 verbose #11921 > > !\($'"_result_map_error__"') 00:10:31 verbose #11922 > > 00:10:31 verbose #11923 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:31 verbose #11924 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:31 verbose #11925 > > │ ### option_ok_or │ 00:10:31 verbose #11926 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:31 verbose #11927 > > 00:10:31 verbose #11928 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:31 verbose #11929 > > inl option_ok_or forall t e. (e : e) (source : optionm'.option' t) : result' t e 00:10:31 verbose #11930 > > = 00:10:31 verbose #11931 > > !\\(source, $'"$0.ok_or(!e)"') 00:10:31 verbose #11932 > > 00:10:31 verbose #11933 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:31 verbose #11934 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:31 verbose #11935 > > │ ### unwrap_or_else │ 00:10:31 verbose #11936 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:31 verbose #11937 > > 00:10:31 verbose #11938 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:31 verbose #11939 > > inl unwrap_or_else forall t e u. (fn : e -> u) (source : result' t e) : u = 00:10:31 verbose #11940 > > (!\\(source, $'"true; let _result_unwrap_or_else = $0.unwrap_or_else(|x| { 00:10:31 verbose #11941 > > //"') : bool) |> ignore 00:10:31 verbose #11942 > > (!\\(fn !\($'"x"'), $'"true; $0 })"') : bool) |> ignore 00:10:31 verbose #11943 > > !\($'"_result_unwrap_or_else"') 00:10:32 verbose #11944 > > 00:10:32 verbose #11945 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:32 verbose #11946 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:32 verbose #11947 > > │ ### map_or_else │ 00:10:32 verbose #11948 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:32 verbose #11949 > > 00:10:32 verbose #11950 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:32 verbose #11951 > > inl map_or_else forall t e u v. (fn : e -> v) (fn2 : u -> v) (source : result' t 00:10:32 verbose #11952 > > e) : v = 00:10:32 verbose #11953 > > (!\\(source, $'"true; let _result_map_or_else = $0.map_or_else(|x| { //"') : 00:10:32 verbose #11954 > > bool) |> ignore 00:10:32 verbose #11955 > > (!\\(fn !\($'"x"'), $'"true; $0 }, |x| { //"') : bool) |> ignore 00:10:32 verbose #11956 > > (!\\(fn2 !\($'"x"'), $'"true; $0 })"') : bool) |> ignore 00:10:32 verbose #11957 > > !\($'"_result_map_or_else"') 00:10:32 verbose #11958 > > 00:10:32 verbose #11959 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:32 verbose #11960 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:32 verbose #11961 > > │ ### as_ref │ 00:10:32 verbose #11962 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:32 verbose #11963 > > 00:10:32 verbose #11964 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:32 verbose #11965 > > inl as_ref forall t e. (source : result' t e) : result' (rust.ref t) (rust.ref 00:10:32 verbose #11966 > > e) = 00:10:32 verbose #11967 > > !\($'"!source.as_ref()"') 00:10:32 verbose #11968 > > 00:10:32 verbose #11969 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:32 verbose #11970 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:32 verbose #11971 > > │ ### as_ref' │ 00:10:32 verbose #11972 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:32 verbose #11973 > > 00:10:32 verbose #11974 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:32 verbose #11975 > > inl as_ref' forall t e. (source : rust.ref (result' t e)) : result' (rust.ref t) 00:10:32 verbose #11976 > > (rust.ref e) = 00:10:32 verbose #11977 > > !\($'"!source.as_ref()"') 00:10:32 verbose #11978 > > 00:10:32 verbose #11979 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:32 verbose #11980 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:32 verbose #11981 > > │ ### unwrap_or' │ 00:10:32 verbose #11982 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:32 verbose #11983 > > 00:10:32 verbose #11984 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:32 verbose #11985 > > inl unwrap_or' forall t u. (default : t) (x : result' t u) : t = 00:10:32 verbose #11986 > > !\\((x, default), $'"$0.unwrap_or($1)"') 00:10:32 verbose #11987 > > 00:10:32 verbose #11988 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:32 verbose #11989 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:32 verbose #11990 > > │ ### expect │ 00:10:32 verbose #11991 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:32 verbose #11992 > > 00:10:32 verbose #11993 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:32 verbose #11994 > > inl expect forall t u. (error : rust.ref string) (x : result' t u) : t = 00:10:32 verbose #11995 > > !\($'"!x.expect(&!error)"') 00:10:32 verbose #11996 > > 00:10:32 verbose #11997 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:32 verbose #11998 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:32 verbose #11999 > > │ ### is_err │ 00:10:32 verbose #12000 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:32 verbose #12001 > > 00:10:32 verbose #12002 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:32 verbose #12003 > > inl is_err forall t u. (x : result' t u) : bool = 00:10:32 verbose #12004 > > !\($'"!x.is_err()"') 00:10:32 verbose #12005 > > 00:10:32 verbose #12006 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:32 verbose #12007 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:32 verbose #12008 > > │ ### ok' │ 00:10:32 verbose #12009 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:32 verbose #12010 > > 00:10:32 verbose #12011 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:32 verbose #12012 > > inl ok' forall t. (x : result' t _) : optionm'.option' t = 00:10:32 verbose #12013 > > !\\(x, $'"$0.ok()"') 00:10:32 verbose #12014 > > 00:10:32 verbose #12015 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:32 verbose #12016 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:32 verbose #12017 > > │ ### err │ 00:10:32 verbose #12018 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:32 verbose #12019 > > 00:10:32 verbose #12020 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:32 verbose #12021 > > inl err forall t u. (x : u) : result' t u = 00:10:32 verbose #12022 > > !\\(x, $'"Err($0)"') 00:10:32 verbose #12023 > > 00:10:32 verbose #12024 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:32 verbose #12025 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:32 verbose #12026 > > │ ### transpose │ 00:10:32 verbose #12027 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:32 verbose #12028 > > 00:10:32 verbose #12029 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:32 verbose #12030 > > inl transpose forall t u. (x : optionm'.option' (result' t u)) : result' 00:10:32 verbose #12031 > > (optionm'.option' t) u = 00:10:32 verbose #12032 > > !\\(x, $'"$0.transpose()"') 00:10:32 verbose #12033 > > 00:10:32 verbose #12034 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:32 verbose #12035 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:32 verbose #12036 > > │ ### rc_try_unwrap │ 00:10:32 verbose #12037 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:32 verbose #12038 > > 00:10:32 verbose #12039 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:32 verbose #12040 > > inl rc_try_unwrap forall t. (x : rust.rc t) : result' t (rust.rc t) = 00:10:32 verbose #12041 > > !\\(x, $'"std::rc::Rc::try_unwrap($0)"') 00:10:32 verbose #12042 > > 00:10:32 verbose #12043 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:32 verbose #12044 > > //// test 00:10:32 verbose #12045 > > ///! rust 00:10:32 verbose #12046 > > 00:10:32 verbose #12047 > > rust.new_rc true 00:10:32 verbose #12048 > > |> rc_try_unwrap 00:10:32 verbose #12049 > > |> unbox 00:10:32 verbose #12050 > > |> _assert_eq (Ok true) 00:10:40 verbose #12051 > > 00:10:40 verbose #12052 > > ╭─[ 7.40s - return value ]─────────────────────────────────────────────────────╮ 00:10:40 verbose #12053 > > │ __assert_eq / actual: US0_0(true) / expected: US0_0(true) │ 00:10:40 verbose #12054 > > │ │ 00:10:40 verbose #12055 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:40 verbose #12056 > 00:00:15 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 25153 } 00:10:40 verbose #12057 > 00:00:15 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:10:40 verbose #12058 > "nbconvert", 00:10:40 verbose #12059 > "/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.ipynb", 00:10:40 verbose #12060 > "--to", 00:10:40 verbose #12061 > "html", 00:10:40 verbose #12062 > "--HTMLExporter.theme=dark", 00:10:40 verbose #12063 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:10:41 verbose #12064 > 00:00:16 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.ipynb to html 00:10:41 verbose #12065 > 00:00:16 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:10:41 verbose #12066 > 00:00:16 verbose #7 ! validate(nb) 00:10:41 verbose #12067 > 00:00:16 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:10:41 verbose #12068 > 00:00:16 verbose #9 ! return _pygments_highlight( 00:10:41 verbose #12069 > 00:00:16 verbose #10 ! [NbConvertApp] Writing 343667 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.html 00:10:41 verbose #12070 > 00:00:16 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 } 00:10:41 verbose #12071 > 00:00:16 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 } 00:10:41 verbose #12072 > 00:00:16 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:10:41 verbose #12073 > "-c", 00:10:41 verbose #12074 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:10:41 verbose #12075 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:10:42 verbose #12076 > 00:00:17 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:10:42 verbose #12077 > 00:00:17 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:10:42 verbose #12078 > 00:00:17 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 26110 } 00:10:42 debug #12079 runtime.execute_with_options_async / { exit_code = 0; output_length = 29831 } 00:10:42 debug #13 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path resultm.dib --retries 3 00:10:42 debug #12080 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path console.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:10:42 verbose #12081 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "console.dib", "--retries", "3"])) } 00:10:42 verbose #12082 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:10:42 verbose #12083 > "repl", 00:10:42 verbose #12084 > "--exit-after-run", 00:10:42 verbose #12085 > "--run", 00:10:42 verbose #12086 > "/home/runner/work/polyglot/polyglot/lib/spiral/console.dib", 00:10:42 verbose #12087 > "--output-path", 00:10:42 verbose #12088 > "/home/runner/work/polyglot/polyglot/lib/spiral/console.dib.ipynb", 00:10:42 verbose #12089 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/console.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/console.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:10:43 verbose #12090 > > 00:10:43 verbose #12091 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:43 verbose #12092 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:43 verbose #12093 > > │ # console │ 00:10:43 verbose #12094 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:45 verbose #12095 > > 00:10:45 verbose #12096 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:45 verbose #12097 > > //// test 00:10:45 verbose #12098 > > 00:10:45 verbose #12099 > > open testing 00:10:46 verbose #12100 > > 00:10:46 verbose #12101 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:46 verbose #12102 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:46 verbose #12103 > > │ ## fsharp │ 00:10:46 verbose #12104 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:46 verbose #12105 > > 00:10:46 verbose #12106 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:46 verbose #12107 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:46 verbose #12108 > > │ ### console_color │ 00:10:46 verbose #12109 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:46 verbose #12110 > > 00:10:46 verbose #12111 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:46 verbose #12112 > > nominal console_color = $'System.ConsoleColor' 00:10:46 verbose #12113 > > 00:10:46 verbose #12114 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:46 verbose #12115 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:46 verbose #12116 > > │ ### reset_color │ 00:10:46 verbose #12117 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:46 verbose #12118 > > 00:10:46 verbose #12119 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:46 verbose #12120 > > inl reset_color () : () = 00:10:46 verbose #12121 > > run_target function 00:10:46 verbose #12122 > > | Fsharp => fun () => $'System.Console.ResetColor ()' 00:10:46 verbose #12123 > > | _ => fun () => () 00:10:46 verbose #12124 > > 00:10:46 verbose #12125 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:46 verbose #12126 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:46 verbose #12127 > > │ ### set_foreground_color │ 00:10:46 verbose #12128 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:46 verbose #12129 > > 00:10:46 verbose #12130 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:46 verbose #12131 > > inl set_foreground_color (color : console_color) : () = 00:10:46 verbose #12132 > > run_target function 00:10:46 verbose #12133 > > | Fsharp => fun () => $'System.Console.ForegroundColor <- !color ' 00:10:46 verbose #12134 > > | _ => fun () => () 00:10:46 verbose #12135 > > 00:10:46 verbose #12136 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:46 verbose #12137 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:46 verbose #12138 > > │ ## console │ 00:10:46 verbose #12139 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:46 verbose #12140 > > 00:10:46 verbose #12141 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:46 verbose #12142 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:46 verbose #12143 > > │ ### write_line │ 00:10:46 verbose #12144 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:46 verbose #12145 > > 00:10:46 verbose #12146 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:46 verbose #12147 > > inl write_line obj : () = 00:10:46 verbose #12148 > > backend_switch { 00:10:46 verbose #12149 > > Fsharp = fun () => 00:10:46 verbose #12150 > > fun () => obj |> $'System.Console.WriteLine' 00:10:46 verbose #12151 > > |> exec_unit 00:10:46 verbose #12152 > > Python = fun () => $'print(!obj)' : () 00:10:46 verbose #12153 > > } 00:10:46 verbose #12154 > > 00:10:46 verbose #12155 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:46 verbose #12156 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:46 verbose #12157 > > │ ### write │ 00:10:46 verbose #12158 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:46 verbose #12159 > > 00:10:46 verbose #12160 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:46 verbose #12161 > > inl write forall t. (x : t) : () = 00:10:46 verbose #12162 > > inl s = x |> sm'.format 00:10:46 verbose #12163 > > backend_switch { 00:10:46 verbose #12164 > > Python = fun () => $'print(!s, end="")' : () 00:10:46 verbose #12165 > > Fsharp = fun () => $'!s |> System.Console.Write' : () 00:10:46 verbose #12166 > > } 00:10:46 verbose #12167 > > 00:10:46 verbose #12168 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:46 verbose #12169 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:46 verbose #12170 > > │ ### write_ln │ 00:10:46 verbose #12171 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:46 verbose #12172 > > 00:10:46 verbose #12173 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:46 verbose #12174 > > inl write_ln l : () = 00:10:46 verbose #12175 > > write l 00:10:46 verbose #12176 > > backend_switch { 00:10:46 verbose #12177 > > Cuda = fun () => $'printf("\\n")' : () 00:10:46 verbose #12178 > > Python = fun () => $"print()" : () 00:10:46 verbose #12179 > > Fsharp = fun () => write_line () : () 00:10:46 verbose #12180 > > } 00:10:47 verbose #12181 > 00:00:05 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 5283 } 00:10:47 verbose #12182 > 00:00:05 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:10:47 verbose #12183 > "nbconvert", 00:10:47 verbose #12184 > "/home/runner/work/polyglot/polyglot/lib/spiral/console.dib.ipynb", 00:10:47 verbose #12185 > "--to", 00:10:47 verbose #12186 > "html", 00:10:47 verbose #12187 > "--HTMLExporter.theme=dark", 00:10:47 verbose #12188 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/console.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:10:47 verbose #12189 > 00:00:05 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/console.dib.ipynb to html 00:10:47 verbose #12190 > 00:00:05 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:10:47 verbose #12191 > 00:00:05 verbose #7 ! validate(nb) 00:10:48 verbose #12192 > 00:00:06 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:10:48 verbose #12193 > 00:00:06 verbose #9 ! return _pygments_highlight( 00:10:48 verbose #12194 > 00:00:06 verbose #10 ! [NbConvertApp] Writing 283391 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/console.dib.html 00:10:48 verbose #12195 > 00:00:06 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 } 00:10:48 verbose #12196 > 00:00:06 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 } 00:10:48 verbose #12197 > 00:00:06 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:10:48 verbose #12198 > "-c", 00:10:48 verbose #12199 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/console.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:10:48 verbose #12200 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/console.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:10:48 verbose #12201 > 00:00:06 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:10:48 verbose #12202 > 00:00:06 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:10:48 verbose #12203 > 00:00:06 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 6240 } 00:10:48 debug #12204 runtime.execute_with_options_async / { exit_code = 0; output_length = 9273 } 00:10:48 debug #14 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path console.dib --retries 3 00:10:48 debug #12205 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path base.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:10:48 verbose #12206 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "base.dib", "--retries", "3"])) } 00:10:48 verbose #12207 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:10:48 verbose #12208 > "repl", 00:10:48 verbose #12209 > "--exit-after-run", 00:10:48 verbose #12210 > "--run", 00:10:48 verbose #12211 > "/home/runner/work/polyglot/polyglot/lib/spiral/base.dib", 00:10:48 verbose #12212 > "--output-path", 00:10:48 verbose #12213 > "/home/runner/work/polyglot/polyglot/lib/spiral/base.dib.ipynb", 00:10:48 verbose #12214 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/base.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/base.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:10:50 verbose #12215 > > 00:10:50 verbose #12216 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:50 verbose #12217 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:50 verbose #12218 > > │ # base │ 00:10:50 verbose #12219 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:52 verbose #12220 > > 00:10:52 verbose #12221 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:52 verbose #12222 > > //// test 00:10:52 verbose #12223 > > 00:10:52 verbose #12224 > > open testing 00:10:53 verbose #12225 > > 00:10:53 verbose #12226 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:53 verbose #12227 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:53 verbose #12228 > > │ ## execution │ 00:10:53 verbose #12229 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:53 verbose #12230 > > 00:10:53 verbose #12231 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:53 verbose #12232 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:53 verbose #12233 > > │ ### emit │ 00:10:53 verbose #12234 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:53 verbose #12235 > > 00:10:53 verbose #12236 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:53 verbose #12237 > > inl emit forall t. (x : t) : t = 00:10:53 verbose #12238 > > $'!x ' 00:10:53 verbose #12239 > > 00:10:53 verbose #12240 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:53 verbose #12241 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:53 verbose #12242 > > │ ### emit_unit │ 00:10:53 verbose #12243 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:53 verbose #12244 > > 00:10:53 verbose #12245 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:53 verbose #12246 > > inl emit_unit forall t. (x : t) : () = 00:10:53 verbose #12247 > > $'!x ' 00:10:53 verbose #12248 > > 00:10:53 verbose #12249 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:53 verbose #12250 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:53 verbose #12251 > > │ ### use │ 00:10:53 verbose #12252 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:53 verbose #12253 > > 00:10:53 verbose #12254 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:53 verbose #12255 > > inl use forall t. (x : t) : t = 00:10:53 verbose #12256 > > $'use !x = !x ' : () 00:10:53 verbose #12257 > > $'!x ' 00:10:53 verbose #12258 > > 00:10:53 verbose #12259 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:53 verbose #12260 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:53 verbose #12261 > > │ ## target │ 00:10:53 verbose #12262 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:53 verbose #12263 > > 00:10:53 verbose #12264 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:53 verbose #12265 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:53 verbose #12266 > > │ ### backend_switch │ 00:10:53 verbose #12267 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:53 verbose #12268 > > 00:10:53 verbose #12269 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:53 verbose #12270 > > inl backend_switch forall t. x : t = 00:10:53 verbose #12271 > > real 00:10:53 verbose #12272 > > inl backend key : t = 00:10:53 verbose #12273 > > inl s = real_core.string_lit_to_symbol key 00:10:53 verbose #12274 > > real_core.record_type_try_find `(`x) s 00:10:53 verbose #12275 > > (forall v'. => (x s) ()) 00:10:53 verbose #12276 > > (fun () => $'' : t) 00:10:53 verbose #12277 > > !!!!BackendSwitch ( 00:10:53 verbose #12278 > > ("Fsharp", backend "Fsharp"), 00:10:53 verbose #12279 > > ("Python", backend "Python"), 00:10:53 verbose #12280 > > ("Cuda", backend "Cuda") 00:10:53 verbose #12281 > > ) 00:10:53 verbose #12282 > > 00:10:53 verbose #12283 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:53 verbose #12284 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:53 verbose #12285 > > │ ### target_runtime │ 00:10:53 verbose #12286 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:53 verbose #12287 > > 00:10:53 verbose #12288 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:53 verbose #12289 > > union target_runtime = 00:10:53 verbose #12290 > > | Native 00:10:53 verbose #12291 > > | Wasm 00:10:53 verbose #12292 > > | Contract 00:10:53 verbose #12293 > > 00:10:53 verbose #12294 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:53 verbose #12295 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:53 verbose #12296 > > │ ### target │ 00:10:53 verbose #12297 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:53 verbose #12298 > > 00:10:53 verbose #12299 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:53 verbose #12300 > > union target = 00:10:53 verbose #12301 > > | Fsharp : target_runtime 00:10:53 verbose #12302 > > | Cuda : target_runtime 00:10:53 verbose #12303 > > | Rust : target_runtime 00:10:53 verbose #12304 > > | TypeScript : target_runtime 00:10:53 verbose #12305 > > | Python : target_runtime 00:10:53 verbose #12306 > > 00:10:53 verbose #12307 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:53 verbose #12308 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:53 verbose #12309 > > │ ### run_target_args │ 00:10:53 verbose #12310 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:53 verbose #12311 > > 00:10:53 verbose #12312 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:53 verbose #12313 > > inl run_target_args forall t u. (args : () -> u) (fn : target -> (u -> t)) : t = 00:10:53 verbose #12314 > > inl args = args () |> dyn 00:10:53 verbose #12315 > > backend_switch { 00:10:53 verbose #12316 > > Fsharp = fun () => 00:10:53 verbose #12317 > > inl result = $'()' : $'unit' 00:10:53 verbose #12318 > > inl emit_result x : () = 00:10:53 verbose #12319 > > $'let _!result = !x ' 00:10:53 verbose #12320 > > $'\n#if FABLE_COMPILER || WASM || CONTRACT' 00:10:53 verbose #12321 > > $'\n#if FABLE_COMPILER_RUST && \!WASM && \!CONTRACT' 00:10:53 verbose #12322 > > inl target = Rust Native 00:10:53 verbose #12323 > > fn target args |> emit_result 00:10:53 verbose #12324 > > $'#endif\n#if FABLE_COMPILER_RUST && WASM' 00:10:53 verbose #12325 > > inl target = Rust Wasm 00:10:53 verbose #12326 > > fn target args |> emit_result 00:10:53 verbose #12327 > > $'#endif\n#if FABLE_COMPILER_RUST && CONTRACT' 00:10:53 verbose #12328 > > inl target = Rust Contract 00:10:53 verbose #12329 > > fn target args |> emit_result 00:10:53 verbose #12330 > > $'#endif\n#if FABLE_COMPILER_TYPESCRIPT' 00:10:53 verbose #12331 > > inl target = TypeScript Native 00:10:53 verbose #12332 > > fn target args |> emit_result 00:10:53 verbose #12333 > > $'#endif\n#if FABLE_COMPILER_PYTHON' 00:10:53 verbose #12334 > > inl target = Python Native 00:10:53 verbose #12335 > > fn target args |> emit_result 00:10:53 verbose #12336 > > $'#endif\n#else' 00:10:53 verbose #12337 > > inl target = Fsharp Native 00:10:53 verbose #12338 > > fn target args |> emit_result 00:10:53 verbose #12339 > > $'#endif' 00:10:53 verbose #12340 > > $'_!result ' : t 00:10:53 verbose #12341 > > Python = fun () => 00:10:53 verbose #12342 > > inl target = Cuda Native 00:10:53 verbose #12343 > > fn target args 00:10:53 verbose #12344 > > } 00:10:53 verbose #12345 > > 00:10:53 verbose #12346 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:53 verbose #12347 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:10:53 verbose #12348 > > │ ### run_target │ 00:10:53 verbose #12349 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:10:53 verbose #12350 > > 00:10:53 verbose #12351 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:53 verbose #12352 > > inl run_target forall t. (fn : target -> (() -> t)) : t = 00:10:53 verbose #12353 > > run_target_args id fn 00:10:54 verbose #12354 > > 00:10:54 verbose #12355 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:54 verbose #12356 > > //// test 00:10:54 verbose #12357 > > ///! fsharp 00:10:54 verbose #12358 > > ///! cuda 00:10:54 verbose #12359 > > ///! rust 00:10:54 verbose #12360 > > ///! typescript 00:10:54 verbose #12361 > > ///! python 00:10:54 verbose #12362 > > 00:10:54 verbose #12363 > > run_target function 00:10:54 verbose #12364 > > | Fsharp (Native) => fun () => $'1uy' 00:10:54 verbose #12365 > > | Cuda (Native) => fun () => $'1' 00:10:54 verbose #12366 > > | Rust (Native) => fun () => $'1uy' 00:10:54 verbose #12367 > > | TypeScript (Native) => fun () => $'1uy' 00:10:54 verbose #12368 > > | Python (Native) => fun () => $'1uy' 00:10:54 verbose #12369 > > | _ => fun () => $'2uy' 00:10:54 verbose #12370 > > |> _assert_eq 1u8 00:11:06 verbose #12371 > > 00:11:06 verbose #12372 > > ╭─[ 12.20s - return value ]────────────────────────────────────────────────────╮ 00:11:06 verbose #12373 > > │ .py output (Cuda): │ 00:11:06 verbose #12374 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:11:06 verbose #12375 > > │ │ 00:11:06 verbose #12376 > > │ .rs output: │ 00:11:06 verbose #12377 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:11:06 verbose #12378 > > │ │ 00:11:06 verbose #12379 > > │ .ts output: │ 00:11:06 verbose #12380 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:11:06 verbose #12381 > > │ │ 00:11:06 verbose #12382 > > │ .py output: │ 00:11:06 verbose #12383 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:11:06 verbose #12384 > > │ │ 00:11:06 verbose #12385 > > │ │ 00:11:06 verbose #12386 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:06 verbose #12387 > > 00:11:06 verbose #12388 > > ╭─[ 12.20s - stdout ]──────────────────────────────────────────────────────────╮ 00:11:06 verbose #12389 > > │ .fsx output: │ 00:11:06 verbose #12390 > > │ __assert_eq / actual: 1uy / expected: 1uy │ 00:11:06 verbose #12391 > > │ │ 00:11:06 verbose #12392 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:06 verbose #12393 > > 00:11:06 verbose #12394 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:06 verbose #12395 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:06 verbose #12396 > > │ ## function │ 00:11:06 verbose #12397 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:06 verbose #12398 > > 00:11:06 verbose #12399 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:06 verbose #12400 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:06 verbose #12401 > > │ ### eval │ 00:11:06 verbose #12402 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:06 verbose #12403 > > 00:11:06 verbose #12404 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:06 verbose #12405 > > inl eval fn = 00:11:06 verbose #12406 > > fn () 00:11:06 verbose #12407 > > 00:11:06 verbose #12408 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:06 verbose #12409 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:06 verbose #12410 > > │ ### exec_unit │ 00:11:06 verbose #12411 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:06 verbose #12412 > > 00:11:06 verbose #12413 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:06 verbose #12414 > > inl exec_unit (fn : () -> ()) : () = 00:11:06 verbose #12415 > > backend_switch { 00:11:06 verbose #12416 > > Fsharp = fun () => 00:11:06 verbose #12417 > > inl unit = $'()' : $'unit' 00:11:06 verbose #12418 > > ($'(fun () -> !fn (); !unit) ()' : $'unit') |> ignore 00:11:06 verbose #12419 > > Python = fun () => fn () 00:11:06 verbose #12420 > > } 00:11:06 verbose #12421 > > 00:11:06 verbose #12422 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:06 verbose #12423 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:06 verbose #12424 > > │ ### lazy │ 00:11:06 verbose #12425 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:06 verbose #12426 > > 00:11:06 verbose #12427 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:06 verbose #12428 > > nominal lazy t = $'Lazy<`t>' 00:11:06 verbose #12429 > > 00:11:06 verbose #12430 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:06 verbose #12431 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:06 verbose #12432 > > │ ### memoize │ 00:11:06 verbose #12433 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:06 verbose #12434 > > 00:11:06 verbose #12435 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:06 verbose #12436 > > nominal lazy t = $'Lazy<`t>' 00:11:06 verbose #12437 > > 00:11:06 verbose #12438 > > inl memoize forall t. (fn : () -> t) : () -> t = 00:11:06 verbose #12439 > > inl fn = join fn 00:11:06 verbose #12440 > > backend_switch { 00:11:06 verbose #12441 > > Fsharp = fun () => 00:11:06 verbose #12442 > > inl result : lazy t = $'lazy !fn ()' 00:11:06 verbose #12443 > > fun () => $'!result.Value' : t 00:11:06 verbose #12444 > > Python = fun () => 00:11:06 verbose #12445 > > inl result = mut None 00:11:06 verbose #12446 > > inl computed = mut false 00:11:06 verbose #12447 > > fun () => 00:11:06 verbose #12448 > > if *computed 00:11:06 verbose #12449 > > then *result 00:11:06 verbose #12450 > > else 00:11:06 verbose #12451 > > result <- fn () |> Some 00:11:06 verbose #12452 > > computed <- true 00:11:06 verbose #12453 > > *result 00:11:06 verbose #12454 > > |> optionm.value 00:11:06 verbose #12455 > > } 00:11:06 verbose #12456 > > 00:11:06 verbose #12457 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:06 verbose #12458 > > //// test 00:11:06 verbose #12459 > > ///! fsharp 00:11:06 verbose #12460 > > ///! cuda 00:11:06 verbose #12461 > > ///! rust 00:11:06 verbose #12462 > > ///! typescript 00:11:06 verbose #12463 > > ///! python 00:11:06 verbose #12464 > > 00:11:06 verbose #12465 > > inl count = mut 0i32 00:11:06 verbose #12466 > > inl add = 00:11:06 verbose #12467 > > fun () => 00:11:06 verbose #12468 > > count <- *count + 1 00:11:06 verbose #12469 > > count 00:11:06 verbose #12470 > > |> memoize 00:11:06 verbose #12471 > > 00:11:06 verbose #12472 > > add () |> ignore 00:11:06 verbose #12473 > > add () |> ignore 00:11:06 verbose #12474 > > add () |> ignore 00:11:06 verbose #12475 > > 00:11:06 verbose #12476 > > *count 00:11:06 verbose #12477 > > |> _assert_eq 1 00:11:18 verbose #12478 > > 00:11:18 verbose #12479 > > ╭─[ 11.90s - return value ]────────────────────────────────────────────────────╮ 00:11:18 verbose #12480 > > │ .py output (Cuda): │ 00:11:18 verbose #12481 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:11:18 verbose #12482 > > │ │ 00:11:18 verbose #12483 > > │ .rs output: │ 00:11:18 verbose #12484 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:11:18 verbose #12485 > > │ │ 00:11:18 verbose #12486 > > │ .ts output: │ 00:11:18 verbose #12487 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:11:18 verbose #12488 > > │ │ 00:11:18 verbose #12489 > > │ .py output: │ 00:11:18 verbose #12490 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:11:18 verbose #12491 > > │ │ 00:11:18 verbose #12492 > > │ │ 00:11:18 verbose #12493 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:18 verbose #12494 > > 00:11:18 verbose #12495 > > ╭─[ 11.90s - stdout ]──────────────────────────────────────────────────────────╮ 00:11:18 verbose #12496 > > │ .fsx output: │ 00:11:18 verbose #12497 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:11:18 verbose #12498 > > │ │ 00:11:18 verbose #12499 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:18 verbose #12500 > > 00:11:18 verbose #12501 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:18 verbose #12502 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:18 verbose #12503 > > │ ### capture │ 00:11:18 verbose #12504 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:18 verbose #12505 > > 00:11:18 verbose #12506 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:18 verbose #12507 > > inl capture forall t. (fn : () -> t) : t = 00:11:18 verbose #12508 > > inl result = dyn true 00:11:18 verbose #12509 > > $'let mutable _!result : `t option = None ' 00:11:18 verbose #12510 > > $'(' 00:11:18 verbose #12511 > > $'(fun () ->' 00:11:18 verbose #12512 > > $'(fun () ->' 00:11:18 verbose #12513 > > fn () |> emit_unit 00:11:18 verbose #12514 > > $')' 00:11:18 verbose #12515 > > $'|> fun x -> x ()' 00:11:18 verbose #12516 > > $') () )' 00:11:18 verbose #12517 > > $'|> fun x -> _!result <- Some x' 00:11:18 verbose #12518 > > $'match _!result with Some x -> x | None -> failwith "base.capture 00:11:18 verbose #12519 > > _!result=None"' 00:11:18 verbose #12520 > > 00:11:18 verbose #12521 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:18 verbose #12522 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:18 verbose #12523 > > │ ## arithmetic │ 00:11:18 verbose #12524 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:18 verbose #12525 > > 00:11:18 verbose #12526 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:18 verbose #12527 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:18 verbose #12528 > > │ ### (+.) │ 00:11:18 verbose #12529 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:18 verbose #12530 > > 00:11:18 verbose #12531 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:18 verbose #12532 > > inl (+.) forall t. (a : t) (b : t) : t = 00:11:18 verbose #12533 > > $'!a + !b ' 00:11:18 verbose #12534 > > 00:11:18 verbose #12535 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:18 verbose #12536 > > //// test 00:11:18 verbose #12537 > > ///! fsharp 00:11:18 verbose #12538 > > ///! cuda 00:11:18 verbose #12539 > > ///! rust 00:11:18 verbose #12540 > > ///! typescript 00:11:18 verbose #12541 > > ///! python 00:11:18 verbose #12542 > > 00:11:18 verbose #12543 > > ($'3' : i32) +. ($'-6' : i32) 00:11:18 verbose #12544 > > |> _assert_eq -3i32 00:11:30 verbose #12545 > > 00:11:30 verbose #12546 > > ╭─[ 11.66s - return value ]────────────────────────────────────────────────────╮ 00:11:30 verbose #12547 > > │ .py output (Cuda): │ 00:11:30 verbose #12548 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:11:30 verbose #12549 > > │ │ 00:11:30 verbose #12550 > > │ .rs output: │ 00:11:30 verbose #12551 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:11:30 verbose #12552 > > │ │ 00:11:30 verbose #12553 > > │ .ts output: │ 00:11:30 verbose #12554 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:11:30 verbose #12555 > > │ │ 00:11:30 verbose #12556 > > │ .py output: │ 00:11:30 verbose #12557 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:11:30 verbose #12558 > > │ │ 00:11:30 verbose #12559 > > │ │ 00:11:30 verbose #12560 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:30 verbose #12561 > > 00:11:30 verbose #12562 > > ╭─[ 11.66s - stdout ]──────────────────────────────────────────────────────────╮ 00:11:30 verbose #12563 > > │ .fsx output: │ 00:11:30 verbose #12564 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:11:30 verbose #12565 > > │ │ 00:11:30 verbose #12566 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:30 verbose #12567 > > 00:11:30 verbose #12568 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:30 verbose #12569 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:30 verbose #12570 > > │ ### (-.) │ 00:11:30 verbose #12571 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:30 verbose #12572 > > 00:11:30 verbose #12573 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:30 verbose #12574 > > inl (-.) forall t. (a : t) (b : t) : t = 00:11:30 verbose #12575 > > $'!a - !b ' 00:11:30 verbose #12576 > > 00:11:30 verbose #12577 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:30 verbose #12578 > > //// test 00:11:30 verbose #12579 > > ///! fsharp 00:11:30 verbose #12580 > > ///! cuda 00:11:30 verbose #12581 > > ///! rust 00:11:30 verbose #12582 > > ///! typescript 00:11:30 verbose #12583 > > ///! python 00:11:30 verbose #12584 > > 00:11:30 verbose #12585 > > ($'3' : i32) -. ($'6' : i32) 00:11:30 verbose #12586 > > |> _assert_eq -3i32 00:11:40 verbose #12587 > > 00:11:40 verbose #12588 > > ╭─[ 9.91s - return value ]─────────────────────────────────────────────────────╮ 00:11:40 verbose #12589 > > │ .py output (Cuda): │ 00:11:40 verbose #12590 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:11:40 verbose #12591 > > │ │ 00:11:40 verbose #12592 > > │ .rs output: │ 00:11:40 verbose #12593 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:11:40 verbose #12594 > > │ │ 00:11:40 verbose #12595 > > │ .ts output: │ 00:11:40 verbose #12596 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:11:40 verbose #12597 > > │ │ 00:11:40 verbose #12598 > > │ .py output: │ 00:11:40 verbose #12599 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:11:40 verbose #12600 > > │ │ 00:11:40 verbose #12601 > > │ │ 00:11:40 verbose #12602 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:40 verbose #12603 > > 00:11:40 verbose #12604 > > ╭─[ 9.91s - stdout ]───────────────────────────────────────────────────────────╮ 00:11:40 verbose #12605 > > │ .fsx output: │ 00:11:40 verbose #12606 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:11:40 verbose #12607 > > │ │ 00:11:40 verbose #12608 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:40 verbose #12609 > > 00:11:40 verbose #12610 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:40 verbose #12611 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:40 verbose #12612 > > │ ### (*.) │ 00:11:40 verbose #12613 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:40 verbose #12614 > > 00:11:40 verbose #12615 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:40 verbose #12616 > > inl (*.) forall t. (a : t) (b : t) : t = 00:11:40 verbose #12617 > > $'!a * !b ' 00:11:40 verbose #12618 > > 00:11:40 verbose #12619 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:40 verbose #12620 > > //// test 00:11:40 verbose #12621 > > ///! fsharp 00:11:40 verbose #12622 > > ///! cuda 00:11:40 verbose #12623 > > ///! rust 00:11:40 verbose #12624 > > ///! typescript 00:11:40 verbose #12625 > > ///! python 00:11:40 verbose #12626 > > 00:11:40 verbose #12627 > > ($'3' : i32) *. ($'-1' : i32) 00:11:40 verbose #12628 > > |> _assert_eq -3i32 00:11:50 verbose #12629 > > 00:11:50 verbose #12630 > > ╭─[ 10.07s - return value ]────────────────────────────────────────────────────╮ 00:11:50 verbose #12631 > > │ .py output (Cuda): │ 00:11:50 verbose #12632 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:11:50 verbose #12633 > > │ │ 00:11:50 verbose #12634 > > │ .rs output: │ 00:11:50 verbose #12635 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:11:50 verbose #12636 > > │ │ 00:11:50 verbose #12637 > > │ .ts output: │ 00:11:50 verbose #12638 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:11:50 verbose #12639 > > │ │ 00:11:50 verbose #12640 > > │ .py output: │ 00:11:50 verbose #12641 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:11:50 verbose #12642 > > │ │ 00:11:50 verbose #12643 > > │ │ 00:11:50 verbose #12644 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:50 verbose #12645 > > 00:11:50 verbose #12646 > > ╭─[ 10.07s - stdout ]──────────────────────────────────────────────────────────╮ 00:11:50 verbose #12647 > > │ .fsx output: │ 00:11:50 verbose #12648 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:11:50 verbose #12649 > > │ │ 00:11:50 verbose #12650 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:50 verbose #12651 > > 00:11:50 verbose #12652 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:50 verbose #12653 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:11:50 verbose #12654 > > │ ### (/.) │ 00:11:50 verbose #12655 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:11:50 verbose #12656 > > 00:11:50 verbose #12657 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:50 verbose #12658 > > inl (/.) forall t. (a : t) (b : t) : t = 00:11:50 verbose #12659 > > $'!a / !b ' 00:11:50 verbose #12660 > > 00:11:50 verbose #12661 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:50 verbose #12662 > > //// test 00:11:50 verbose #12663 > > ///! fsharp 00:11:50 verbose #12664 > > ///! cuda 00:11:50 verbose #12665 > > ///! rust 00:11:50 verbose #12666 > > ///! typescript 00:11:50 verbose #12667 > > ///! python 00:11:50 verbose #12668 > > 00:11:50 verbose #12669 > > ($'-3' : i32) /. ($'1' : i32) 00:11:50 verbose #12670 > > |> _assert_eq -3i32 00:12:01 verbose #12671 > > 00:12:01 verbose #12672 > > ╭─[ 10.69s - return value ]────────────────────────────────────────────────────╮ 00:12:01 verbose #12673 > > │ .py output (Cuda): │ 00:12:01 verbose #12674 > > │ __assert_eq / actual: -3.0 / expected: -3 │ 00:12:01 verbose #12675 > > │ │ 00:12:01 verbose #12676 > > │ .rs output: │ 00:12:01 verbose #12677 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:12:01 verbose #12678 > > │ │ 00:12:01 verbose #12679 > > │ .ts output: │ 00:12:01 verbose #12680 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:12:01 verbose #12681 > > │ │ 00:12:01 verbose #12682 > > │ .py output: │ 00:12:01 verbose #12683 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:12:01 verbose #12684 > > │ │ 00:12:01 verbose #12685 > > │ │ 00:12:01 verbose #12686 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:01 verbose #12687 > > 00:12:01 verbose #12688 > > ╭─[ 10.69s - stdout ]──────────────────────────────────────────────────────────╮ 00:12:01 verbose #12689 > > │ .fsx output: │ 00:12:01 verbose #12690 > > │ __assert_eq / actual: -3 / expected: -3 │ 00:12:01 verbose #12691 > > │ │ 00:12:01 verbose #12692 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:01 verbose #12693 > > 00:12:01 verbose #12694 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:01 verbose #12695 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:01 verbose #12696 > > │ ## comparison │ 00:12:01 verbose #12697 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:01 verbose #12698 > > 00:12:01 verbose #12699 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:01 verbose #12700 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:01 verbose #12701 > > │ ### (=.) │ 00:12:01 verbose #12702 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:01 verbose #12703 > > 00:12:01 verbose #12704 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:01 verbose #12705 > > inl (=.) forall t. (a : t) (b : t) : bool = 00:12:01 verbose #12706 > > backend_switch { 00:12:01 verbose #12707 > > Fsharp = fun () => $'!a = !b ' : bool 00:12:01 verbose #12708 > > Python = fun () => $'!a == !b ' : bool 00:12:01 verbose #12709 > > } 00:12:01 verbose #12710 > > 00:12:01 verbose #12711 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:01 verbose #12712 > > //// test 00:12:01 verbose #12713 > > ///! fsharp 00:12:01 verbose #12714 > > ///! cuda 00:12:01 verbose #12715 > > ///! rust 00:12:01 verbose #12716 > > ///! typescript 00:12:01 verbose #12717 > > ///! python 00:12:01 verbose #12718 > > 00:12:01 verbose #12719 > > ($'-3' : i32) =. ($'-3' : i32) 00:12:01 verbose #12720 > > |> _assert_eq true 00:12:12 verbose #12721 > > 00:12:12 verbose #12722 > > ╭─[ 11.10s - return value ]────────────────────────────────────────────────────╮ 00:12:12 verbose #12723 > > │ .py output (Cuda): │ 00:12:12 verbose #12724 > > │ __assert_eq / actual: True / expected: True │ 00:12:12 verbose #12725 > > │ │ 00:12:12 verbose #12726 > > │ .rs output: │ 00:12:12 verbose #12727 > > │ __assert_eq / actual: true / expected: true │ 00:12:12 verbose #12728 > > │ │ 00:12:12 verbose #12729 > > │ .ts output: │ 00:12:12 verbose #12730 > > │ __assert_eq / actual: true / expected: true │ 00:12:12 verbose #12731 > > │ │ 00:12:12 verbose #12732 > > │ .py output: │ 00:12:12 verbose #12733 > > │ __assert_eq / actual: true / expected: true │ 00:12:12 verbose #12734 > > │ │ 00:12:12 verbose #12735 > > │ │ 00:12:12 verbose #12736 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:12 verbose #12737 > > 00:12:12 verbose #12738 > > ╭─[ 11.10s - stdout ]──────────────────────────────────────────────────────────╮ 00:12:12 verbose #12739 > > │ .fsx output: │ 00:12:12 verbose #12740 > > │ __assert_eq / actual: true / expected: true │ 00:12:12 verbose #12741 > > │ │ 00:12:12 verbose #12742 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:12 verbose #12743 > > 00:12:12 verbose #12744 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:12 verbose #12745 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:12 verbose #12746 > > │ ### (<>.) │ 00:12:12 verbose #12747 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:12 verbose #12748 > > 00:12:12 verbose #12749 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:12 verbose #12750 > > inl (<>.) forall t. (a : t) (b : t) : bool = 00:12:12 verbose #12751 > > backend_switch { 00:12:12 verbose #12752 > > Fsharp = fun () => $'!a <> !b ' : bool 00:12:12 verbose #12753 > > Python = fun () => $'!a \!= !b ' : bool 00:12:12 verbose #12754 > > } 00:12:12 verbose #12755 > > 00:12:12 verbose #12756 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:12 verbose #12757 > > //// test 00:12:12 verbose #12758 > > ///! fsharp 00:12:12 verbose #12759 > > ///! cuda 00:12:12 verbose #12760 > > ///! rust 00:12:12 verbose #12761 > > ///! typescript 00:12:12 verbose #12762 > > ///! python 00:12:12 verbose #12763 > > 00:12:12 verbose #12764 > > ($'-3' : i32) <>. ($'3' : i32) 00:12:12 verbose #12765 > > |> _assert_eq true 00:12:23 verbose #12766 > > 00:12:23 verbose #12767 > > ╭─[ 10.65s - return value ]────────────────────────────────────────────────────╮ 00:12:23 verbose #12768 > > │ .py output (Cuda): │ 00:12:23 verbose #12769 > > │ __assert_eq / actual: True / expected: True │ 00:12:23 verbose #12770 > > │ │ 00:12:23 verbose #12771 > > │ .rs output: │ 00:12:23 verbose #12772 > > │ __assert_eq / actual: true / expected: true │ 00:12:23 verbose #12773 > > │ │ 00:12:23 verbose #12774 > > │ .ts output: │ 00:12:23 verbose #12775 > > │ __assert_eq / actual: true / expected: true │ 00:12:23 verbose #12776 > > │ │ 00:12:23 verbose #12777 > > │ .py output: │ 00:12:23 verbose #12778 > > │ __assert_eq / actual: true / expected: true │ 00:12:23 verbose #12779 > > │ │ 00:12:23 verbose #12780 > > │ │ 00:12:23 verbose #12781 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:23 verbose #12782 > > 00:12:23 verbose #12783 > > ╭─[ 10.65s - stdout ]──────────────────────────────────────────────────────────╮ 00:12:23 verbose #12784 > > │ .fsx output: │ 00:12:23 verbose #12785 > > │ __assert_eq / actual: true / expected: true │ 00:12:23 verbose #12786 > > │ │ 00:12:23 verbose #12787 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:23 verbose #12788 > > 00:12:23 verbose #12789 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:23 verbose #12790 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:23 verbose #12791 > > │ ## (<>..) │ 00:12:23 verbose #12792 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:23 verbose #12793 > > 00:12:23 verbose #12794 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:23 verbose #12795 > > inl (<>..) a b = 00:12:23 verbose #12796 > > fun () => a = b 00:12:23 verbose #12797 > > |> dyn 00:12:23 verbose #12798 > > |> eval 00:12:23 verbose #12799 > > |> not 00:12:23 verbose #12800 > > 00:12:23 verbose #12801 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:23 verbose #12802 > > //// test 00:12:23 verbose #12803 > > ///! fsharp 00:12:23 verbose #12804 > > ///! cuda 00:12:23 verbose #12805 > > ///! rust 00:12:23 verbose #12806 > > ///! typescript 00:12:23 verbose #12807 > > ///! python 00:12:23 verbose #12808 > > 00:12:23 verbose #12809 > > ($'-3' : i32) <>.. ($'3' : i32) 00:12:23 verbose #12810 > > |> _assert_eq true 00:12:34 verbose #12811 > > 00:12:34 verbose #12812 > > ╭─[ 10.66s - return value ]────────────────────────────────────────────────────╮ 00:12:34 verbose #12813 > > │ .py output (Cuda): │ 00:12:34 verbose #12814 > > │ __assert_eq / actual: True / expected: True │ 00:12:34 verbose #12815 > > │ │ 00:12:34 verbose #12816 > > │ .rs output: │ 00:12:34 verbose #12817 > > │ __assert_eq / actual: true / expected: true │ 00:12:34 verbose #12818 > > │ │ 00:12:34 verbose #12819 > > │ .ts output: │ 00:12:34 verbose #12820 > > │ __assert_eq / actual: true / expected: true │ 00:12:34 verbose #12821 > > │ │ 00:12:34 verbose #12822 > > │ .py output: │ 00:12:34 verbose #12823 > > │ __assert_eq / actual: true / expected: true │ 00:12:34 verbose #12824 > > │ │ 00:12:34 verbose #12825 > > │ │ 00:12:34 verbose #12826 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:34 verbose #12827 > > 00:12:34 verbose #12828 > > ╭─[ 10.66s - stdout ]──────────────────────────────────────────────────────────╮ 00:12:34 verbose #12829 > > │ .fsx output: │ 00:12:34 verbose #12830 > > │ __assert_eq / actual: true / expected: true │ 00:12:34 verbose #12831 > > │ │ 00:12:34 verbose #12832 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:34 verbose #12833 > > 00:12:34 verbose #12834 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:34 verbose #12835 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:34 verbose #12836 > > │ ## composition │ 00:12:34 verbose #12837 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:34 verbose #12838 > > 00:12:34 verbose #12839 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:34 verbose #12840 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:34 verbose #12841 > > │ ### append │ 00:12:34 verbose #12842 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:34 verbose #12843 > > 00:12:34 verbose #12844 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:34 verbose #12845 > > prototype append t : t -> t -> t 00:12:34 verbose #12846 > > 00:12:34 verbose #12847 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:34 verbose #12848 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:34 verbose #12849 > > │ ### (++) │ 00:12:34 verbose #12850 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:34 verbose #12851 > > 00:12:34 verbose #12852 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:34 verbose #12853 > > inl (++) a b = 00:12:34 verbose #12854 > > b |> append a 00:12:34 verbose #12855 > > 00:12:34 verbose #12856 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:34 verbose #12857 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:34 verbose #12858 > > │ ## application │ 00:12:34 verbose #12859 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:34 verbose #12860 > > 00:12:34 verbose #12861 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:34 verbose #12862 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:34 verbose #12863 > > │ ### (||>) │ 00:12:34 verbose #12864 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:34 verbose #12865 > > 00:12:34 verbose #12866 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:34 verbose #12867 > > inl (||>) (arg1, arg2) fn = 00:12:34 verbose #12868 > > arg2 |> fn arg1 00:12:34 verbose #12869 > > 00:12:34 verbose #12870 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:34 verbose #12871 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:34 verbose #12872 > > │ ### fix_condition │ 00:12:34 verbose #12873 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:34 verbose #12874 > > 00:12:34 verbose #12875 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:34 verbose #12876 > > inl fix_condition x a b = 00:12:34 verbose #12877 > > if x () 00:12:34 verbose #12878 > > then a () |> fun x => $'(*' : () 00:12:34 verbose #12879 > > else 00:12:34 verbose #12880 > > $'*) else' : () 00:12:34 verbose #12881 > > b () |> fun x => $'(*' : () 00:12:34 verbose #12882 > > |> fun x => $'*)' : () 00:12:34 verbose #12883 > > 00:12:34 verbose #12884 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:34 verbose #12885 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:34 verbose #12886 > > │ ## type │ 00:12:34 verbose #12887 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:34 verbose #12888 > > 00:12:34 verbose #12889 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:34 verbose #12890 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:34 verbose #12891 > > │ ### infer │ 00:12:34 verbose #12892 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:34 verbose #12893 > > 00:12:34 verbose #12894 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:34 verbose #12895 > > nominal infer = $'_' 00:12:34 verbose #12896 > > 00:12:34 verbose #12897 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:34 verbose #12898 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:34 verbose #12899 > > │ ### infer' │ 00:12:34 verbose #12900 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:34 verbose #12901 > > 00:12:34 verbose #12902 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:34 verbose #12903 > > nominal infer' t = $'_' 00:12:34 verbose #12904 > > 00:12:34 verbose #12905 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:34 verbose #12906 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:34 verbose #12907 > > │ ### any │ 00:12:34 verbose #12908 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:34 verbose #12909 > > 00:12:34 verbose #12910 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:34 verbose #12911 > > nominal any = $'obj' 00:12:34 verbose #12912 > > 00:12:34 verbose #12913 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:34 verbose #12914 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:34 verbose #12915 > > │ ### unit │ 00:12:34 verbose #12916 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:34 verbose #12917 > > 00:12:34 verbose #12918 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:34 verbose #12919 > > nominal unit = $'unit' 00:12:34 verbose #12920 > > 00:12:34 verbose #12921 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:34 verbose #12922 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:34 verbose #12923 > > │ ### null │ 00:12:34 verbose #12924 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:34 verbose #12925 > > 00:12:34 verbose #12926 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:34 verbose #12927 > > inl null forall t. () : t = 00:12:34 verbose #12928 > > backend_switch { 00:12:34 verbose #12929 > > Fsharp = fun () => $'null |> unbox<`t>' : t 00:12:34 verbose #12930 > > Python = fun () => $'None' : t 00:12:34 verbose #12931 > > } 00:12:34 verbose #12932 > > 00:12:34 verbose #12933 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:34 verbose #12934 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:34 verbose #12935 > > │ ### defaultof │ 00:12:34 verbose #12936 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:34 verbose #12937 > > 00:12:34 verbose #12938 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:34 verbose #12939 > > inl defaultof forall t. () : t = 00:12:34 verbose #12940 > > $'Unchecked.defaultof<`t>' 00:12:34 verbose #12941 > > 00:12:34 verbose #12942 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:34 verbose #12943 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:34 verbose #12944 > > │ ### choice2' │ 00:12:34 verbose #12945 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:34 verbose #12946 > > 00:12:34 verbose #12947 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:34 verbose #12948 > > nominal choice2' a b = $'Choice<`a, `b>' 00:12:34 verbose #12949 > > 00:12:34 verbose #12950 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:34 verbose #12951 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:34 verbose #12952 > > │ ### choice2_unbox │ 00:12:34 verbose #12953 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:34 verbose #12954 > > 00:12:34 verbose #12955 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:34 verbose #12956 > > inl choice2_unbox forall t1 t2. (choice : choice2' t1 t2) : choice2 t1 t2 = 00:12:34 verbose #12957 > > run_target function 00:12:34 verbose #12958 > > | Fsharp (Native) => fun () => 00:12:34 verbose #12959 > > inl c1of2 (x : t1) : _ _ t2 = C1of2 x 00:12:34 verbose #12960 > > inl c2of2 (x : t2) : _ t1 _ = C2of2 x 00:12:34 verbose #12961 > > $'match !choice with Choice1Of2 x -> !c1of2 x | Choice2Of2 x -> 00:12:34 verbose #12962 > > !c2of2 x' 00:12:34 verbose #12963 > > | _ => fun () => null () 00:12:35 verbose #12964 > > 00:12:35 verbose #12965 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:35 verbose #12966 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:35 verbose #12967 > > │ ## pair │ 00:12:35 verbose #12968 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:35 verbose #12969 > > 00:12:35 verbose #12970 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:35 verbose #12971 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:35 verbose #12972 > > │ ### pair │ 00:12:35 verbose #12973 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:35 verbose #12974 > > 00:12:35 verbose #12975 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:35 verbose #12976 > > nominal pair a b = $'(`a * `b)' 00:12:35 verbose #12977 > > 00:12:35 verbose #12978 > > inl pair x y = 00:12:35 verbose #12979 > > x, y 00:12:35 verbose #12980 > > 00:12:35 verbose #12981 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:35 verbose #12982 > > //// test 00:12:35 verbose #12983 > > ///! fsharp 00:12:35 verbose #12984 > > ///! cuda 00:12:35 verbose #12985 > > ///! rust 00:12:35 verbose #12986 > > ///! typescript 00:12:35 verbose #12987 > > ///! python 00:12:35 verbose #12988 > > 00:12:35 verbose #12989 > > pair 1i32 2i32 00:12:35 verbose #12990 > > |> _assert_eq (1, 2) 00:12:46 verbose #12991 > > 00:12:46 verbose #12992 > > ╭─[ 10.92s - return value ]────────────────────────────────────────────────────╮ 00:12:46 verbose #12993 > > │ .py output (Cuda): │ 00:12:46 verbose #12994 > > │ __assert_eq / actual: (1, 2) / expected: (1, 2) │ 00:12:46 verbose #12995 > > │ │ 00:12:46 verbose #12996 > > │ .rs output: │ 00:12:46 verbose #12997 > > │ __assert_eq / actual: (1, 2) / expected: (1, 2) │ 00:12:46 verbose #12998 > > │ │ 00:12:46 verbose #12999 > > │ .ts output: │ 00:12:46 verbose #13000 > > │ __assert_eq / actual: 1,2 / expected: 1,2 │ 00:12:46 verbose #13001 > > │ │ 00:12:46 verbose #13002 > > │ .py output: │ 00:12:46 verbose #13003 > > │ __assert_eq / actual: (1, 2) / expected: (1, 2) │ 00:12:46 verbose #13004 > > │ │ 00:12:46 verbose #13005 > > │ │ 00:12:46 verbose #13006 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:46 verbose #13007 > > 00:12:46 verbose #13008 > > ╭─[ 10.92s - stdout ]──────────────────────────────────────────────────────────╮ 00:12:46 verbose #13009 > > │ .fsx output: │ 00:12:46 verbose #13010 > > │ __assert_eq / actual: struct (1, 2) / expected: struct (1, 2) │ 00:12:46 verbose #13011 > > │ │ 00:12:46 verbose #13012 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:46 verbose #13013 > > 00:12:46 verbose #13014 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:46 verbose #13015 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:46 verbose #13016 > > │ ### new_pair │ 00:12:46 verbose #13017 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:46 verbose #13018 > > 00:12:46 verbose #13019 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:46 verbose #13020 > > inl new_pair forall a b. (a : a) (b : b) : pair a b = 00:12:46 verbose #13021 > > $'!a, !b ' 00:12:46 verbose #13022 > > 00:12:46 verbose #13023 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:46 verbose #13024 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:46 verbose #13025 > > │ ### from_pair │ 00:12:46 verbose #13026 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:46 verbose #13027 > > 00:12:46 verbose #13028 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:46 verbose #13029 > > inl from_pair forall a b. (pair : pair a b) : a * b = 00:12:46 verbose #13030 > > backend_switch { 00:12:46 verbose #13031 > > Fsharp = fun () => 00:12:46 verbose #13032 > > $'let (a, b) = !pair ' 00:12:46 verbose #13033 > > ($'a' : a), ($'b' : b) 00:12:46 verbose #13034 > > Python = fun () => 00:12:46 verbose #13035 > > $'a, b = !pair ' 00:12:46 verbose #13036 > > ($'a' : a), ($'b' : b) 00:12:46 verbose #13037 > > } 00:12:46 verbose #13038 > > 00:12:46 verbose #13039 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:46 verbose #13040 > > //// test 00:12:46 verbose #13041 > > ///! fsharp 00:12:46 verbose #13042 > > ///! cuda 00:12:46 verbose #13043 > > ///! rust 00:12:46 verbose #13044 > > ///! typescript 00:12:46 verbose #13045 > > ///! python 00:12:46 verbose #13046 > > 00:12:46 verbose #13047 > > new_pair "a" (new_pair 1i32 "b") 00:12:46 verbose #13048 > > |> from_pair 00:12:46 verbose #13049 > > |> _assert_eq' ("a", (new_pair 1i32 "b")) 00:12:56 verbose #13050 > > 00:12:56 verbose #13051 > > ╭─[ 10.44s - return value ]────────────────────────────────────────────────────╮ 00:12:56 verbose #13052 > > │ .py output (Cuda): │ 00:12:56 verbose #13053 > > │ __assert_eq' / actual: ('a', (1, 'b')) / expected: ('a', (1, 'b')) │ 00:12:56 verbose #13054 > > │ │ 00:12:56 verbose #13055 > > │ .rs output: │ 00:12:56 verbose #13056 > > │ __assert_eq' / actual: ("a", (1, "b")) / expected: ("a", (1, "b")) │ 00:12:56 verbose #13057 > > │ │ 00:12:56 verbose #13058 > > │ .ts output: │ 00:12:56 verbose #13059 > > │ __assert_eq' / actual: a,1,b / expected: a,1,b │ 00:12:56 verbose #13060 > > │ │ 00:12:56 verbose #13061 > > │ .py output: │ 00:12:56 verbose #13062 > > │ __assert_eq' / actual: ('a', (1, 'b')) / expected: ('a', (1, 'b')) │ 00:12:56 verbose #13063 > > │ │ 00:12:56 verbose #13064 > > │ │ 00:12:56 verbose #13065 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:56 verbose #13066 > > 00:12:56 verbose #13067 > > ╭─[ 10.44s - stdout ]──────────────────────────────────────────────────────────╮ 00:12:56 verbose #13068 > > │ .fsx output: │ 00:12:56 verbose #13069 > > │ __assert_eq' / actual: struct ("a", (1, "b")) / expected: struct ("a", (1, │ 00:12:56 verbose #13070 > > │ "b")) │ 00:12:56 verbose #13071 > > │ │ 00:12:56 verbose #13072 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:56 verbose #13073 > > 00:12:56 verbose #13074 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:56 verbose #13075 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:56 verbose #13076 > > │ ## ref │ 00:12:56 verbose #13077 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:56 verbose #13078 > > 00:12:56 verbose #13079 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:56 verbose #13080 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:56 verbose #13081 > > │ ### ref │ 00:12:56 verbose #13082 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:56 verbose #13083 > > 00:12:56 verbose #13084 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:56 verbose #13085 > > nominal ref t = $'`t ref' 00:12:56 verbose #13086 > > 00:12:56 verbose #13087 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:56 verbose #13088 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:56 verbose #13089 > > │ ### new_ref │ 00:12:56 verbose #13090 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:56 verbose #13091 > > 00:12:56 verbose #13092 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:56 verbose #13093 > > inl new_ref forall t. (x : t) : ref t = 00:12:56 verbose #13094 > > $'ref !x ' 00:12:56 verbose #13095 > > 00:12:56 verbose #13096 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:56 verbose #13097 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:56 verbose #13098 > > │ ### ref_value │ 00:12:56 verbose #13099 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:56 verbose #13100 > > 00:12:56 verbose #13101 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:56 verbose #13102 > > inl ref_value forall t. (x : ref t) : t = 00:12:56 verbose #13103 > > $'!x.Value' 00:12:56 verbose #13104 > > 00:12:56 verbose #13105 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:56 verbose #13106 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:56 verbose #13107 > > │ ### ref_set_value │ 00:12:56 verbose #13108 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:56 verbose #13109 > > 00:12:56 verbose #13110 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:56 verbose #13111 > > inl ref_set_value forall t. (value : t) (ref : ref t) : ref t = 00:12:56 verbose #13112 > > $'!ref.Value <- !value ' 00:12:56 verbose #13113 > > ref 00:12:57 verbose #13114 > > 00:12:57 verbose #13115 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:57 verbose #13116 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:57 verbose #13117 > > │ ## convert │ 00:12:57 verbose #13118 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:57 verbose #13119 > > 00:12:57 verbose #13120 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:57 verbose #13121 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:57 verbose #13122 > > │ ### convert │ 00:12:57 verbose #13123 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:57 verbose #13124 > > 00:12:57 verbose #13125 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:57 verbose #13126 > > inl convert forall t u. (x : t) : u = 00:12:57 verbose #13127 > > backend_switch { 00:12:57 verbose #13128 > > Fsharp = fun () => $'!x |> `u ' : u 00:12:57 verbose #13129 > > Python = fun () => $'!x ' : u 00:12:57 verbose #13130 > > } 00:12:57 verbose #13131 > > 00:12:57 verbose #13132 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:57 verbose #13133 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:57 verbose #13134 > > │ ### unbox │ 00:12:57 verbose #13135 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:57 verbose #13136 > > 00:12:57 verbose #13137 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:57 verbose #13138 > > inl unbox forall t u. (x : t) : u = 00:12:57 verbose #13139 > > backend_switch { 00:12:57 verbose #13140 > > Fsharp = fun () => $'!x |> unbox<`u>' : u 00:12:57 verbose #13141 > > Python = fun () => $'!x ' : u 00:12:57 verbose #13142 > > } 00:12:57 verbose #13143 > > 00:12:57 verbose #13144 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:57 verbose #13145 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:57 verbose #13146 > > │ ### u8 │ 00:12:57 verbose #13147 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:57 verbose #13148 > > 00:12:57 verbose #13149 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:57 verbose #13150 > > inl u8 forall t. (x : t) : u8 = 00:12:57 verbose #13151 > > x |> $'uint8' 00:12:57 verbose #13152 > > 00:12:57 verbose #13153 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:57 verbose #13154 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:57 verbose #13155 > > │ ### u16 │ 00:12:57 verbose #13156 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:57 verbose #13157 > > 00:12:57 verbose #13158 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:57 verbose #13159 > > inl u16 forall t. (x : t) : u16 = 00:12:57 verbose #13160 > > x |> $'uint16' 00:12:57 verbose #13161 > > 00:12:57 verbose #13162 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:57 verbose #13163 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:57 verbose #13164 > > │ ### u64 │ 00:12:57 verbose #13165 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:57 verbose #13166 > > 00:12:57 verbose #13167 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:57 verbose #13168 > > inl u64 forall t. (x : t) : u64 = 00:12:57 verbose #13169 > > x |> $'uint64' 00:12:57 verbose #13170 > > 00:12:57 verbose #13171 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:57 verbose #13172 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:57 verbose #13173 > > │ ### i32 │ 00:12:57 verbose #13174 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:57 verbose #13175 > > 00:12:57 verbose #13176 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:57 verbose #13177 > > inl i32 forall t. (x : t) : i32 = 00:12:57 verbose #13178 > > x |> $'int32' 00:12:57 verbose #13179 > > 00:12:57 verbose #13180 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:57 verbose #13181 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:57 verbose #13182 > > │ ### i64 │ 00:12:57 verbose #13183 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:57 verbose #13184 > > 00:12:57 verbose #13185 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:57 verbose #13186 > > inl i64 forall t. (x : t) : i64 = 00:12:57 verbose #13187 > > x |> $'int64' 00:12:57 verbose #13188 > > 00:12:57 verbose #13189 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:57 verbose #13190 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:57 verbose #13191 > > │ ### f32 │ 00:12:57 verbose #13192 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:57 verbose #13193 > > 00:12:57 verbose #13194 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:57 verbose #13195 > > inl f32 forall t. (x : t) : f32 = 00:12:57 verbose #13196 > > x |> $'float32' 00:12:57 verbose #13197 > > 00:12:57 verbose #13198 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:57 verbose #13199 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:57 verbose #13200 > > │ ### f64 │ 00:12:57 verbose #13201 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:57 verbose #13202 > > 00:12:57 verbose #13203 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:57 verbose #13204 > > inl f64 forall t. (x : t) : f64 = 00:12:57 verbose #13205 > > x |> $'float' 00:12:57 verbose #13206 > > 00:12:57 verbose #13207 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:57 verbose #13208 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:57 verbose #13209 > > │ ### unativeint │ 00:12:57 verbose #13210 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:57 verbose #13211 > > 00:12:57 verbose #13212 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:57 verbose #13213 > > nominal unativeint = $'unativeint' 00:12:57 verbose #13214 > > 00:12:57 verbose #13215 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:57 verbose #13216 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:57 verbose #13217 > > │ ### convert_i32 │ 00:12:57 verbose #13218 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:57 verbose #13219 > > 00:12:57 verbose #13220 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:57 verbose #13221 > > inl convert_i32 forall t. (x : t) : i32 = 00:12:57 verbose #13222 > > x |> $'System.Convert.ToInt32' 00:12:57 verbose #13223 > > 00:12:57 verbose #13224 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:57 verbose #13225 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:57 verbose #13226 > > │ ### convert_i32_base │ 00:12:57 verbose #13227 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:57 verbose #13228 > > 00:12:57 verbose #13229 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:57 verbose #13230 > > inl convert_i32_base forall t. (base : i32) (x : t) : i32 = 00:12:57 verbose #13231 > > $'System.Convert.ToInt32 (!x, !base)' 00:12:58 verbose #13232 > > 00:12:58 verbose #13233 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:58 verbose #13234 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:58 verbose #13235 > > │ ## error │ 00:12:58 verbose #13236 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:58 verbose #13237 > > 00:12:58 verbose #13238 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:58 verbose #13239 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:58 verbose #13240 > > │ ### exn │ 00:12:58 verbose #13241 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:58 verbose #13242 > > 00:12:58 verbose #13243 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:58 verbose #13244 > > nominal exn = $"backend_switch `({ Fsharp : $'exn'; Python : $'BaseException' 00:12:58 verbose #13245 > > })" 00:12:58 verbose #13246 > > 00:12:58 verbose #13247 > > inl exn x = 00:12:58 verbose #13248 > > x |> $'`exn ' 00:12:58 verbose #13249 > > 00:12:58 verbose #13250 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:58 verbose #13251 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:12:58 verbose #13252 > > │ ### try │ 00:12:58 verbose #13253 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:12:58 verbose #13254 > > 00:12:58 verbose #13255 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:58 verbose #13256 > > inl try forall t. (fn : () -> t) (ex_fn : exn -> option t) : option t = 00:12:58 verbose #13257 > > backend_switch { 00:12:58 verbose #13258 > > Fsharp = fun () => 00:12:58 verbose #13259 > > inl some x : option t = Some x 00:12:58 verbose #13260 > > inl some = dyn some 00:12:58 verbose #13261 > > inl fn = dyn fn 00:12:58 verbose #13262 > > inl ex_fn = dyn ex_fn 00:12:58 verbose #13263 > > $'let result = ref !(None : option t)' 00:12:58 verbose #13264 > > $'try' 00:12:58 verbose #13265 > > $' result.Value <- !fn () |> !some ' 00:12:58 verbose #13266 > > $'with ex ->' 00:12:58 verbose #13267 > > $' result.Value <- !ex_fn ex ' 00:12:58 verbose #13268 > > $'result.Value' : option t 00:12:58 verbose #13269 > > Python = fun () => 00:12:58 verbose #13270 > > $'result = !(None : option t)' 00:12:58 verbose #13271 > > inl fn = dyn fn 00:12:58 verbose #13272 > > inl ex_fn = dyn ex_fn 00:12:58 verbose #13273 > > $'try:' 00:12:58 verbose #13274 > > $' result = !fn()\n \'\'\'' 00:12:58 verbose #13275 > > $'\'\'\'' 00:12:58 verbose #13276 > > $'except Exception as e:' 00:12:58 verbose #13277 > > $' result = !ex_fn(e)' 00:12:58 verbose #13278 > > $'result' : option t 00:12:58 verbose #13279 > > } 00:12:58 verbose #13280 > > 00:12:58 verbose #13281 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:58 verbose #13282 > > //// test 00:12:58 verbose #13283 > > ///! fsharp 00:12:58 verbose #13284 > > ////! cuda // cudaErrorInsufficientDriver: CUDA driver version is insufficient 00:12:58 verbose #13285 > > for CUDA runtime version 00:12:58 verbose #13286 > > ///! rust 00:12:58 verbose #13287 > > ///! typescript 00:12:58 verbose #13288 > > ///! python 00:12:58 verbose #13289 > > 00:12:58 verbose #13290 > > try 00:12:58 verbose #13291 > > fun () => a ;[[ 0i32 ]] |> am'.index 1i32 |> sm'.format 00:12:58 verbose #13292 > > (fun ex => $'!ex ' |> sm'.format_exception |> Some) 00:12:58 verbose #13293 > > |> optionm.value 00:12:58 verbose #13294 > > |> _assert_eq (run_target function 00:12:58 verbose #13295 > > | Fsharp => fun () => "System.IndexOutOfRangeException: Index was outside 00:12:58 verbose #13296 > > the bounds of the array." 00:12:58 verbose #13297 > > | Cuda => fun () => "array index out of range" 00:12:58 verbose #13298 > > | Rust => fun () => "Exception { message: \"index out of bounds: the len is 00:12:58 verbose #13299 > > 1 but the index is 1\" }" 00:12:58 verbose #13300 > > | TypeScript => fun () => "Error: Index was outside the bounds of the 00:12:58 verbose #13301 > > array.\\nParameter name: index" 00:12:58 verbose #13302 > > | Python => fun () => "array index out of range" 00:12:58 verbose #13303 > > ) 00:13:09 verbose #13304 > > 00:13:09 verbose #13305 > > ╭─[ 10.98s - return value ]────────────────────────────────────────────────────╮ 00:13:09 verbose #13306 > > │ .rs output: │ 00:13:09 verbose #13307 > > │ __assert_eq / actual: "Exception { message: "index out of bounds: the len is │ 00:13:09 verbose #13308 > > │ 1 but the index is 1" }" / expected: "Exception { message: "index out of │ 00:13:09 verbose #13309 > > │ bounds: the len is 1 but the index is 1" }" │ 00:13:09 verbose #13310 > > │ │ 00:13:09 verbose #13311 > > │ .ts output: │ 00:13:09 verbose #13312 > > │ __assert_eq / actual: Error: Index was outside the bounds of the │ 00:13:09 verbose #13313 > > │ array.\nParameter name: index / expected: Error: Index was outside the │ 00:13:09 verbose #13314 > > │ bounds of the array.\nParameter name: index │ 00:13:09 verbose #13315 > > │ │ 00:13:09 verbose #13316 > > │ .py output: │ 00:13:09 verbose #13317 > > │ __assert_eq / actual: array index out of range / expected: array index out │ 00:13:09 verbose #13318 > > │ of range │ 00:13:09 verbose #13319 > > │ │ 00:13:09 verbose #13320 > > │ │ 00:13:09 verbose #13321 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:09 verbose #13322 > > 00:13:09 verbose #13323 > > ╭─[ 10.98s - stdout ]──────────────────────────────────────────────────────────╮ 00:13:09 verbose #13324 > > │ .fsx output: │ 00:13:09 verbose #13325 > > │ __assert_eq / actual: "System.IndexOutOfRangeException: Index was outside │ 00:13:09 verbose #13326 > > │ the bounds of the array." / expected: "System.IndexOutOfRangeException: │ 00:13:09 verbose #13327 > > │ Index was outside the bounds of the array." │ 00:13:09 verbose #13328 > > │ │ 00:13:09 verbose #13329 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:09 verbose #13330 > > 00:13:09 verbose #13331 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:09 verbose #13332 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:09 verbose #13333 > > │ ### try_unit │ 00:13:09 verbose #13334 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:09 verbose #13335 > > 00:13:09 verbose #13336 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:09 verbose #13337 > > inl try_unit forall t. (fn : () -> ()) (ex_fn : exn -> ()) : t = 00:13:09 verbose #13338 > > $'try' 00:13:09 verbose #13339 > > fn () 00:13:09 verbose #13340 > > |> ignore 00:13:09 verbose #13341 > > $'with ex ->' 00:13:09 verbose #13342 > > ex_fn $'ex' 00:13:09 verbose #13343 > > |> ignore 00:13:09 verbose #13344 > > $'(*' 00:13:09 verbose #13345 > > $'*)' 00:13:09 verbose #13346 > > 00:13:09 verbose #13347 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:09 verbose #13348 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:09 verbose #13349 > > │ ### try_finally │ 00:13:09 verbose #13350 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:09 verbose #13351 > > 00:13:09 verbose #13352 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:09 verbose #13353 > > inl try_finally forall t. (fn : () -> ()) (finally : () -> ()) : t = 00:13:09 verbose #13354 > > $'try' 00:13:09 verbose #13355 > > fn () 00:13:09 verbose #13356 > > |> ignore 00:13:09 verbose #13357 > > $'finally' 00:13:09 verbose #13358 > > finally () 00:13:09 verbose #13359 > > |> ignore 00:13:09 verbose #13360 > > $'(*' 00:13:09 verbose #13361 > > $'*)' 00:13:10 verbose #13362 > 00:02:21 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 69703 } 00:13:10 verbose #13363 > 00:02:21 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:13:10 verbose #13364 > "nbconvert", 00:13:10 verbose #13365 > "/home/runner/work/polyglot/polyglot/lib/spiral/base.dib.ipynb", 00:13:10 verbose #13366 > "--to", 00:13:10 verbose #13367 > "html", 00:13:10 verbose #13368 > "--HTMLExporter.theme=dark", 00:13:10 verbose #13369 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/base.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:13:10 verbose #13370 > 00:02:21 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/base.dib.ipynb to html 00:13:10 verbose #13371 > 00:02:21 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:13:10 verbose #13372 > 00:02:21 verbose #7 ! validate(nb) 00:13:11 verbose #13373 > 00:02:22 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:13:11 verbose #13374 > 00:02:22 verbose #9 ! return _pygments_highlight( 00:13:11 verbose #13375 > 00:02:22 verbose #10 ! [NbConvertApp] Writing 410422 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/base.dib.html 00:13:11 verbose #13376 > 00:02:22 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 } 00:13:11 verbose #13377 > 00:02:22 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 } 00:13:11 verbose #13378 > 00:02:22 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:13:11 verbose #13379 > "-c", 00:13:11 verbose #13380 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/base.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:13:11 verbose #13381 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/base.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:13:11 verbose #13382 > 00:02:23 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:13:11 verbose #13383 > 00:02:23 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:13:11 verbose #13384 > 00:02:23 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 70654 } 00:13:12 debug #13385 runtime.execute_with_options_async / { exit_code = 0; output_length = 75774 } 00:13:11 debug #15 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path base.dib --retries 3 00:13:12 debug #13386 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path date_time.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:13:12 verbose #13387 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "date_time.dib", "--retries", "3"])) } 00:13:12 verbose #13388 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:13:12 verbose #13389 > "repl", 00:13:12 verbose #13390 > "--exit-after-run", 00:13:12 verbose #13391 > "--run", 00:13:12 verbose #13392 > "/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib", 00:13:12 verbose #13393 > "--output-path", 00:13:12 verbose #13394 > "/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.ipynb", 00:13:12 verbose #13395 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:13:13 verbose #13396 > > 00:13:13 verbose #13397 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:13 verbose #13398 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:13 verbose #13399 > > │ # date_time │ 00:13:13 verbose #13400 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:15 verbose #13401 > > 00:13:15 verbose #13402 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:15 verbose #13403 > > open rust.rust_operators 00:13:15 verbose #13404 > > open sm'_operators 00:13:16 verbose #13405 > > 00:13:16 verbose #13406 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:16 verbose #13407 > > //// test 00:13:16 verbose #13408 > > 00:13:16 verbose #13409 > > open testing 00:13:16 verbose #13410 > > 00:13:16 verbose #13411 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:16 verbose #13412 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:16 verbose #13413 > > │ ## date_time │ 00:13:16 verbose #13414 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:16 verbose #13415 > > 00:13:16 verbose #13416 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:16 verbose #13417 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:16 verbose #13418 > > │ ### timestamp │ 00:13:16 verbose #13419 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:16 verbose #13420 > > 00:13:16 verbose #13421 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:16 verbose #13422 > > nominal timestamp = i64 00:13:16 verbose #13423 > > 00:13:16 verbose #13424 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:16 verbose #13425 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:16 verbose #13426 > > │ ### timestamp_guid │ 00:13:16 verbose #13427 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:16 verbose #13428 > > 00:13:16 verbose #13429 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:16 verbose #13430 > > type timestamp_guid = guid.guid 00:13:16 verbose #13431 > > 00:13:16 verbose #13432 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:16 verbose #13433 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:16 verbose #13434 > > │ ### date_time_guid │ 00:13:16 verbose #13435 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:16 verbose #13436 > > 00:13:16 verbose #13437 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:16 verbose #13438 > > type date_time_guid = guid.guid 00:13:16 verbose #13439 > > 00:13:16 verbose #13440 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:16 verbose #13441 > > //// test 00:13:16 verbose #13442 > > 00:13:16 verbose #13443 > > inl test_guid () = 00:13:16 verbose #13444 > > guid.new_guid "FEDCBA98-7654-3210-FEDC-BA9876543210" 00:13:16 verbose #13445 > > 00:13:16 verbose #13446 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:16 verbose #13447 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:16 verbose #13448 > > │ ## fsharp │ 00:13:16 verbose #13449 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:16 verbose #13450 > > 00:13:16 verbose #13451 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:16 verbose #13452 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:16 verbose #13453 > > │ ### date_time │ 00:13:16 verbose #13454 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:16 verbose #13455 > > 00:13:16 verbose #13456 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:16 verbose #13457 > > nominal date_time_python = 00:13:16 verbose #13458 > > `( 00:13:16 verbose #13459 > > backend_switch { 00:13:16 verbose #13460 > > Python = fun () => 00:13:16 verbose #13461 > > global "import datetime" 00:13:16 verbose #13462 > > } 00:13:16 verbose #13463 > > $'' : $'datetime.datetime' 00:13:16 verbose #13464 > > ) 00:13:16 verbose #13465 > > type date_time_switch = 00:13:16 verbose #13466 > > { 00:13:16 verbose #13467 > > Fsharp : $'System.DateTime' 00:13:16 verbose #13468 > > Python : date_time_python 00:13:16 verbose #13469 > > } 00:13:16 verbose #13470 > > nominal date_time = $'backend_switch `(date_time_switch)' 00:13:17 verbose #13471 > > 00:13:17 verbose #13472 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:17 verbose #13473 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:17 verbose #13474 > > │ ### date_time_milliseconds │ 00:13:17 verbose #13475 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:17 verbose #13476 > > 00:13:17 verbose #13477 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:17 verbose #13478 > > inl date_time_milliseconds 00:13:17 verbose #13479 > > (year : int) (month : int) (day : int) (hour : int) (minute : int) (second : 00:13:17 verbose #13480 > > int) (millisecond : int) 00:13:17 verbose #13481 > > : date_time 00:13:17 verbose #13482 > > = 00:13:17 verbose #13483 > > backend_switch { 00:13:17 verbose #13484 > > Fsharp = fun () => 00:13:17 verbose #13485 > > $'System.DateTime (!year, !month, !day, !hour, !minute, !second, 00:13:17 verbose #13486 > > !millisecond)' : date_time 00:13:17 verbose #13487 > > Python = fun () => 00:13:17 verbose #13488 > > $'datetime.datetime(!year, !month, !day, !hour, !minute, !second, 00:13:17 verbose #13489 > > !millisecond)' : date_time 00:13:17 verbose #13490 > > } 00:13:17 verbose #13491 > > 00:13:17 verbose #13492 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:17 verbose #13493 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:17 verbose #13494 > > │ ### date_time_utc │ 00:13:17 verbose #13495 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:17 verbose #13496 > > 00:13:17 verbose #13497 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:17 verbose #13498 > > inl date_time_utc 00:13:17 verbose #13499 > > (year : int) (month : int) (day : int) (hour : int) (minute : int) (second : 00:13:17 verbose #13500 > > int) 00:13:17 verbose #13501 > > : date_time 00:13:17 verbose #13502 > > = 00:13:17 verbose #13503 > > backend_switch { 00:13:17 verbose #13504 > > Fsharp = fun () => 00:13:17 verbose #13505 > > $'System.DateTime (!year, !month, !day, !hour, !minute, !second, 00:13:17 verbose #13506 > > System.DateTimeKind.Utc)' : date_time 00:13:17 verbose #13507 > > Python = fun () => 00:13:17 verbose #13508 > > $'datetime.datetime(!year, !month, !day, !hour, !minute, !second, 00:13:17 verbose #13509 > > tzinfo=datetime.timezone.utc)' : date_time 00:13:17 verbose #13510 > > } 00:13:17 verbose #13511 > > 00:13:17 verbose #13512 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:17 verbose #13513 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:17 verbose #13514 > > │ ### ticks │ 00:13:17 verbose #13515 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:17 verbose #13516 > > 00:13:17 verbose #13517 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:17 verbose #13518 > > inl ticks (date_time : date_time) : timestamp = 00:13:17 verbose #13519 > > backend_switch { 00:13:17 verbose #13520 > > Fsharp = fun () => date_time |> $'_.Ticks' : timestamp 00:13:17 verbose #13521 > > Python = fun () => $'!date_time.timestamp()' : timestamp 00:13:17 verbose #13522 > > } 00:13:17 verbose #13523 > > 00:13:17 verbose #13524 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:17 verbose #13525 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:17 verbose #13526 > > │ ### format │ 00:13:17 verbose #13527 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:17 verbose #13528 > > 00:13:17 verbose #13529 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:17 verbose #13530 > > inl format (format : string) (date_time : date_time) : string = 00:13:17 verbose #13531 > > backend_switch { 00:13:17 verbose #13532 > > Fsharp = fun () => $'!date_time.ToString' format : string 00:13:17 verbose #13533 > > Python = fun () => $'!date_time.strftime(!format)' : string 00:13:17 verbose #13534 > > } 00:13:17 verbose #13535 > > 00:13:17 verbose #13536 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:17 verbose #13537 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:17 verbose #13538 > > │ ### format_iso8601 │ 00:13:17 verbose #13539 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:17 verbose #13540 > > 00:13:17 verbose #13541 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:17 verbose #13542 > > inl format_iso8601 (date_time : date_time) : string = 00:13:17 verbose #13543 > > backend_switch { 00:13:17 verbose #13544 > > Fsharp = fun () => date_time |> format "yyyy-MM-ddTHH-mm-ss.fff" : 00:13:17 verbose #13545 > > string 00:13:17 verbose #13546 > > Python = fun () => date_time |> format "%Y-%m-%dT%H-%M-%S.%f" : string 00:13:17 verbose #13547 > > } 00:13:17 verbose #13548 > > 00:13:17 verbose #13549 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:17 verbose #13550 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:17 verbose #13551 > > │ ### min_value │ 00:13:17 verbose #13552 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:17 verbose #13553 > > 00:13:17 verbose #13554 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:17 verbose #13555 > > inl min_value () : date_time = 00:13:17 verbose #13556 > > backend_switch { 00:13:17 verbose #13557 > > Fsharp = fun () => $'System.DateTime.MinValue' : date_time 00:13:17 verbose #13558 > > Python = fun () => $'datetime.datetime.min' : date_time 00:13:17 verbose #13559 > > } 00:13:17 verbose #13560 > > 00:13:17 verbose #13561 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:17 verbose #13562 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:17 verbose #13563 > > │ ### max_value │ 00:13:17 verbose #13564 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:17 verbose #13565 > > 00:13:17 verbose #13566 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:17 verbose #13567 > > inl max_value () : date_time = 00:13:17 verbose #13568 > > backend_switch { 00:13:17 verbose #13569 > > Fsharp = fun () => $'System.DateTime.MaxValue' : date_time 00:13:17 verbose #13570 > > Python = fun () => $'datetime.datetime.max' : date_time 00:13:17 verbose #13571 > > } 00:13:17 verbose #13572 > > 00:13:17 verbose #13573 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:17 verbose #13574 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:17 verbose #13575 > > │ ### unix_epoch │ 00:13:17 verbose #13576 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:17 verbose #13577 > > 00:13:17 verbose #13578 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:17 verbose #13579 > > inl unix_epoch () : date_time = 00:13:17 verbose #13580 > > backend_switch { 00:13:17 verbose #13581 > > Fsharp = fun () => $'System.DateTime.UnixEpoch' : date_time 00:13:17 verbose #13582 > > Python = fun () => $'datetime.datetime(1970, 1, 1)' : date_time 00:13:17 verbose #13583 > > } 00:13:17 verbose #13584 > > 00:13:17 verbose #13585 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:17 verbose #13586 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:17 verbose #13587 > > │ ### to_universal_time │ 00:13:17 verbose #13588 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:17 verbose #13589 > > 00:13:17 verbose #13590 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:17 verbose #13591 > > inl to_universal_time (date_time : date_time) : date_time = 00:13:17 verbose #13592 > > backend_switch { 00:13:17 verbose #13593 > > Fsharp = fun () => date_time |> $'_.ToUniversalTime()' : date_time 00:13:17 verbose #13594 > > Python = fun () => $'!date_time.astimezone(datetime.timezone.utc)' : 00:13:17 verbose #13595 > > date_time 00:13:17 verbose #13596 > > } 00:13:17 verbose #13597 > > 00:13:17 verbose #13598 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:17 verbose #13599 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:17 verbose #13600 > > │ ### date_time_kind │ 00:13:17 verbose #13601 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:17 verbose #13602 > > 00:13:17 verbose #13603 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:17 verbose #13604 > > union date_time_kind = 00:13:17 verbose #13605 > > | Unspecified 00:13:17 verbose #13606 > > | Utc 00:13:17 verbose #13607 > > | Local 00:13:18 verbose #13608 > > 00:13:18 verbose #13609 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:18 verbose #13610 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:18 verbose #13611 > > │ ### specify_date_kind │ 00:13:18 verbose #13612 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:18 verbose #13613 > > 00:13:18 verbose #13614 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:18 verbose #13615 > > inl specify_date_kind (kind : date_time_kind) (date_time : date_time) : 00:13:18 verbose #13616 > > date_time = 00:13:18 verbose #13617 > > inl kind : $'System.DateTimeKind' = 00:13:18 verbose #13618 > > match kind with 00:13:18 verbose #13619 > > | Unspecified => $'System.DateTimeKind.Unspecified' 00:13:18 verbose #13620 > > | Utc => $'System.DateTimeKind.Utc' 00:13:18 verbose #13621 > > | Local => $'System.DateTimeKind.Local' 00:13:18 verbose #13622 > > $'System.DateTime.SpecifyKind (!date_time, !kind)' 00:13:18 verbose #13623 > > 00:13:18 verbose #13624 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:18 verbose #13625 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:18 verbose #13626 > > │ ### time_span │ 00:13:18 verbose #13627 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:18 verbose #13628 > > 00:13:18 verbose #13629 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:18 verbose #13630 > > nominal time_span = $"backend_switch `({ Fsharp : $"System.TimeSpan"; Python : 00:13:18 verbose #13631 > > $"datetime.timedelta" })" 00:13:18 verbose #13632 > > 00:13:18 verbose #13633 > > inl time_span x : time_span = 00:13:18 verbose #13634 > > backend_switch { 00:13:18 verbose #13635 > > Fsharp = fun () => x |> $'`time_span ' : time_span 00:13:18 verbose #13636 > > Python = fun () => $'datetime.timedelta(!x)' : time_span 00:13:18 verbose #13637 > > } 00:13:18 verbose #13638 > > 00:13:18 verbose #13639 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:18 verbose #13640 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:18 verbose #13641 > > │ ### new_time_span │ 00:13:18 verbose #13642 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:18 verbose #13643 > > 00:13:18 verbose #13644 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:18 verbose #13645 > > inl new_time_span (a : date_time) (b : date_time) : time_span = 00:13:18 verbose #13646 > > $'!b - !a ' 00:13:18 verbose #13647 > > 00:13:18 verbose #13648 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:18 verbose #13649 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:18 verbose #13650 > > │ ### time_span_format │ 00:13:18 verbose #13651 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:18 verbose #13652 > > 00:13:18 verbose #13653 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:18 verbose #13654 > > inl time_span_format (format : string) (time_span : time_span) : string = 00:13:18 verbose #13655 > > run_target function 00:13:18 verbose #13656 > > | (TypeScript _ | Python _) => fun () => 00:13:18 verbose #13657 > > $'!time_span.ToString ("c", 00:13:18 verbose #13658 > > System.Globalization.CultureInfo.InvariantCulture)' 00:13:18 verbose #13659 > > | _ => fun () => 00:13:18 verbose #13660 > > $'!time_span.ToString !format ' 00:13:18 verbose #13661 > > 00:13:18 verbose #13662 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:18 verbose #13663 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:18 verbose #13664 > > │ ### hours │ 00:13:18 verbose #13665 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:18 verbose #13666 > > 00:13:18 verbose #13667 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:18 verbose #13668 > > inl hours (time_span : time_span) : i32 = 00:13:18 verbose #13669 > > backend_switch { 00:13:18 verbose #13670 > > Fsharp = fun () => time_span |> $'_.Hours' : i32 00:13:18 verbose #13671 > > Python = fun () => $'!time_span.days * 24 + !time_span.seconds // 3600' 00:13:18 verbose #13672 > > : i32 00:13:18 verbose #13673 > > } 00:13:18 verbose #13674 > > 00:13:18 verbose #13675 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:18 verbose #13676 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:18 verbose #13677 > > │ ### milliseconds │ 00:13:18 verbose #13678 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:18 verbose #13679 > > 00:13:18 verbose #13680 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:18 verbose #13681 > > inl milliseconds (time_span : time_span) : i32 = 00:13:18 verbose #13682 > > backend_switch { 00:13:18 verbose #13683 > > Fsharp = fun () => time_span |> $'_.Milliseconds' : i32 00:13:18 verbose #13684 > > Python = fun () => $'!time_span.microseconds // 1000' : i32 00:13:18 verbose #13685 > > } 00:13:18 verbose #13686 > > 00:13:18 verbose #13687 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:18 verbose #13688 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:18 verbose #13689 > > │ ### minutes │ 00:13:18 verbose #13690 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:18 verbose #13691 > > 00:13:18 verbose #13692 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:18 verbose #13693 > > inl minutes (time_span : time_span) : i32 = 00:13:18 verbose #13694 > > backend_switch { 00:13:18 verbose #13695 > > Fsharp = fun () => time_span |> $'_.Minutes' : i32 00:13:18 verbose #13696 > > Python = fun () => $'!time_span.seconds // 60' : i32 00:13:18 verbose #13697 > > } 00:13:18 verbose #13698 > > 00:13:18 verbose #13699 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:18 verbose #13700 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:18 verbose #13701 > > │ ### seconds │ 00:13:18 verbose #13702 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:18 verbose #13703 > > 00:13:18 verbose #13704 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:18 verbose #13705 > > inl seconds (time_span : time_span) : i32 = 00:13:18 verbose #13706 > > backend_switch { 00:13:18 verbose #13707 > > Fsharp = fun () => time_span |> $'_.Seconds' : i32 00:13:18 verbose #13708 > > Python = fun () => $'!time_span.seconds % 60' : i32 00:13:18 verbose #13709 > > } 00:13:18 verbose #13710 > > 00:13:18 verbose #13711 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:18 verbose #13712 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:18 verbose #13713 > > │ ### total_seconds │ 00:13:18 verbose #13714 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:18 verbose #13715 > > 00:13:18 verbose #13716 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:18 verbose #13717 > > inl total_seconds (time_span : time_span) : f64 = 00:13:18 verbose #13718 > > backend_switch { 00:13:18 verbose #13719 > > Fsharp = fun () => time_span |> $'_.TotalSeconds' : f64 00:13:18 verbose #13720 > > Python = fun () => $'!time_span.total_seconds()' : f64 00:13:18 verbose #13721 > > } 00:13:18 verbose #13722 > > 00:13:18 verbose #13723 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:18 verbose #13724 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:18 verbose #13725 > > │ ### time_zone_info │ 00:13:18 verbose #13726 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:18 verbose #13727 > > 00:13:18 verbose #13728 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:18 verbose #13729 > > nominal time_zone_info = $'System.TimeZoneInfo' 00:13:18 verbose #13730 > > 00:13:18 verbose #13731 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:18 verbose #13732 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:18 verbose #13733 > > │ ### add_days │ 00:13:18 verbose #13734 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:18 verbose #13735 > > 00:13:18 verbose #13736 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:18 verbose #13737 > > inl add_days (days : i32) (date_time : date_time) : date_time = 00:13:18 verbose #13738 > > $'!date_time.AddDays' days 00:13:19 verbose #13739 > > 00:13:19 verbose #13740 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:19 verbose #13741 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:19 verbose #13742 > > │ ### now │ 00:13:19 verbose #13743 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:19 verbose #13744 > > 00:13:19 verbose #13745 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:19 verbose #13746 > > inl now () : date_time = 00:13:19 verbose #13747 > > backend_switch { 00:13:19 verbose #13748 > > Fsharp = fun () => $'System.DateTime.Now' : date_time 00:13:19 verbose #13749 > > Python = fun () => 00:13:19 verbose #13750 > > backend_switch { 00:13:19 verbose #13751 > > Python = fun () => 00:13:19 verbose #13752 > > global "import datetime" 00:13:19 verbose #13753 > > } 00:13:19 verbose #13754 > > $'datetime.datetime.now()' : date_time 00:13:19 verbose #13755 > > } 00:13:19 verbose #13756 > > 00:13:19 verbose #13757 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:19 verbose #13758 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:19 verbose #13759 > > │ ### utc_now │ 00:13:19 verbose #13760 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:19 verbose #13761 > > 00:13:19 verbose #13762 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:19 verbose #13763 > > inl utc_now () : date_time = 00:13:19 verbose #13764 > > backend_switch { 00:13:19 verbose #13765 > > Fsharp = fun () => $'System.DateTime.UtcNow' : date_time 00:13:19 verbose #13766 > > Python = fun () => 00:13:19 verbose #13767 > > backend_switch { 00:13:19 verbose #13768 > > Python = fun () => 00:13:19 verbose #13769 > > global "import datetime" 00:13:19 verbose #13770 > > } 00:13:19 verbose #13771 > > $'datetime.datetime.utcnow()' : date_time 00:13:19 verbose #13772 > > } 00:13:19 verbose #13773 > > 00:13:19 verbose #13774 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:19 verbose #13775 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:19 verbose #13776 > > │ ### stopwatch │ 00:13:19 verbose #13777 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:19 verbose #13778 > > 00:13:19 verbose #13779 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:19 verbose #13780 > > nominal stopwatch_python = 00:13:19 verbose #13781 > > `( 00:13:19 verbose #13782 > > global "import timeit" 00:13:19 verbose #13783 > > $'' : $'timeit.default_timer' 00:13:19 verbose #13784 > > ) 00:13:19 verbose #13785 > > type stopwatch_switch = 00:13:19 verbose #13786 > > { 00:13:19 verbose #13787 > > Fsharp : $'System.Diagnostics.Stopwatch' 00:13:19 verbose #13788 > > Python : stopwatch_python 00:13:19 verbose #13789 > > } 00:13:19 verbose #13790 > > nominal stopwatch = $'backend_switch `(stopwatch_switch)' 00:13:19 verbose #13791 > > 00:13:19 verbose #13792 > > inl stopwatch () : stopwatch = 00:13:19 verbose #13793 > > backend_switch { 00:13:19 verbose #13794 > > Fsharp = fun () => $'`stopwatch ' () : stopwatch 00:13:19 verbose #13795 > > Python = fun () => $'`stopwatch ' : stopwatch 00:13:19 verbose #13796 > > } 00:13:19 verbose #13797 > > 00:13:19 verbose #13798 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:19 verbose #13799 > > inl stopwatch_elapsed_milliseconds (stopwatch : stopwatch) : i64 = 00:13:19 verbose #13800 > > $'!stopwatch.ElapsedMilliseconds' 00:13:19 verbose #13801 > > 00:13:19 verbose #13802 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:19 verbose #13803 > > inl stopwatch_start (stopwatch : stopwatch) : () = 00:13:19 verbose #13804 > > $'!stopwatch.Start' () 00:13:19 verbose #13805 > > 00:13:19 verbose #13806 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:19 verbose #13807 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:19 verbose #13808 > > │ ## rust │ 00:13:19 verbose #13809 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:19 verbose #13810 > > 00:13:19 verbose #13811 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:19 verbose #13812 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:19 verbose #13813 > > │ ### duration │ 00:13:19 verbose #13814 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:19 verbose #13815 > > 00:13:19 verbose #13816 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:19 verbose #13817 > > nominal duration = 00:13:19 verbose #13818 > > `( 00:13:19 verbose #13819 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:13:19 verbose #13820 > > Fable.Core.Emit(\"std::time::Duration\")>]]\n#endif\ntype std_time_Duration = 00:13:19 verbose #13821 > > class end" 00:13:19 verbose #13822 > > $'' : $'std_time_Duration' 00:13:19 verbose #13823 > > ) 00:13:19 verbose #13824 > > 00:13:19 verbose #13825 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:19 verbose #13826 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:19 verbose #13827 > > │ ### date_time' │ 00:13:19 verbose #13828 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:19 verbose #13829 > > 00:13:19 verbose #13830 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:19 verbose #13831 > > nominal date_time' t = 00:13:19 verbose #13832 > > `( 00:13:19 verbose #13833 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:13:19 verbose #13834 > > Fable.Core.Emit(\"chrono::DateTime<$0>\")>]]\n#endif\ntype chrono_DateTime<'T> = 00:13:19 verbose #13835 > > class end" 00:13:19 verbose #13836 > > $'' : $'chrono_DateTime<`t>' 00:13:19 verbose #13837 > > ) 00:13:19 verbose #13838 > > 00:13:19 verbose #13839 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:19 verbose #13840 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:19 verbose #13841 > > │ ### local │ 00:13:19 verbose #13842 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:19 verbose #13843 > > 00:13:19 verbose #13844 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:19 verbose #13845 > > nominal local = 00:13:19 verbose #13846 > > `( 00:13:19 verbose #13847 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:13:19 verbose #13848 > > Fable.Core.Emit(\"chrono::Local\")>]]\n#endif\ntype chrono_Local = class end" 00:13:19 verbose #13849 > > $'' : $'chrono_Local' 00:13:19 verbose #13850 > > ) 00:13:19 verbose #13851 > > 00:13:19 verbose #13852 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:19 verbose #13853 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:19 verbose #13854 > > │ ### naive_date_time │ 00:13:19 verbose #13855 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:19 verbose #13856 > > 00:13:19 verbose #13857 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:19 verbose #13858 > > nominal naive_date_time = 00:13:19 verbose #13859 > > `( 00:13:19 verbose #13860 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:13:19 verbose #13861 > > Fable.Core.Emit(\"chrono::NaiveDateTime\")>]]\n#endif\ntype chrono_NaiveDateTime 00:13:19 verbose #13862 > > = class end" 00:13:19 verbose #13863 > > $'' : $'chrono_NaiveDateTime' 00:13:19 verbose #13864 > > ) 00:13:19 verbose #13865 > > 00:13:19 verbose #13866 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:19 verbose #13867 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:19 verbose #13868 > > │ ## utc │ 00:13:19 verbose #13869 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:19 verbose #13870 > > 00:13:19 verbose #13871 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:19 verbose #13872 > > nominal utc = 00:13:19 verbose #13873 > > `( 00:13:19 verbose #13874 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:13:19 verbose #13875 > > Fable.Core.Emit(\"chrono::Utc\")>]]\n#endif\ntype chrono_Utc = class end" 00:13:19 verbose #13876 > > $'' : $'chrono_Utc' 00:13:19 verbose #13877 > > ) 00:13:19 verbose #13878 > > 00:13:19 verbose #13879 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:19 verbose #13880 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:19 verbose #13881 > > │ ### naive_utc │ 00:13:19 verbose #13882 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:19 verbose #13883 > > 00:13:19 verbose #13884 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:19 verbose #13885 > > inl naive_utc (date_time : date_time' utc) : naive_date_time = 00:13:19 verbose #13886 > > !\\(date_time, $'"$0.naive_utc()"') 00:13:20 verbose #13887 > > 00:13:20 verbose #13888 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:20 verbose #13889 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:20 verbose #13890 > > │ ### to_local │ 00:13:20 verbose #13891 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:20 verbose #13892 > > 00:13:20 verbose #13893 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:20 verbose #13894 > > inl to_local (date_time : date_time' utc) : date_time' local = 00:13:20 verbose #13895 > > inl naive_date_time = date_time |> naive_utc 00:13:20 verbose #13896 > > !\\(naive_date_time, 00:13:20 verbose #13897 > > $'"chrono::offset::TimeZone::from_utc_datetime(&chrono::Local, &$0)"') 00:13:20 verbose #13898 > > 00:13:20 verbose #13899 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:20 verbose #13900 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:20 verbose #13901 > > │ ### from_timestamp_micros │ 00:13:20 verbose #13902 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:20 verbose #13903 > > 00:13:20 verbose #13904 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:20 verbose #13905 > > inl from_timestamp_micros forall t {number; int}. (timestamp : t) : option 00:13:20 verbose #13906 > > (date_time' utc) = 00:13:20 verbose #13907 > > inl result : optionm'.option' (date_time' utc) = 00:13:20 verbose #13908 > > !\\(timestamp, $'"chrono::DateTime::from_timestamp_micros($0)"') 00:13:20 verbose #13909 > > result |> optionm'.unbox 00:13:20 verbose #13910 > > 00:13:20 verbose #13911 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:20 verbose #13912 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:20 verbose #13913 > > │ ### format' │ 00:13:20 verbose #13914 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:20 verbose #13915 > > 00:13:20 verbose #13916 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:20 verbose #13917 > > inl format' (format : string) (date_time : date_time' utc) : sm'.std_string = 00:13:20 verbose #13918 > > !\\((date_time, #format), $'"$0.format($1).to_string()"') 00:13:20 verbose #13919 > > 00:13:20 verbose #13920 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:20 verbose #13921 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:20 verbose #13922 > > │ ### format'' │ 00:13:20 verbose #13923 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:20 verbose #13924 > > 00:13:20 verbose #13925 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:20 verbose #13926 > > inl format'' (format : string) (date_time : date_time' _) : sm'.std_string = 00:13:20 verbose #13927 > > !\\((date_time, #format), $'"$0.format($1).to_string()"') 00:13:20 verbose #13928 > > 00:13:20 verbose #13929 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:20 verbose #13930 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:20 verbose #13931 > > │ ### format_timestamp │ 00:13:20 verbose #13932 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:20 verbose #13933 > > 00:13:20 verbose #13934 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:20 verbose #13935 > > inl format_timestamp forall t {number; int}. (timestamp : t) = 00:13:20 verbose #13936 > > inl timestamp = join timestamp 00:13:20 verbose #13937 > > (timestamp / 1000) 00:13:20 verbose #13938 > > |> from_timestamp_micros 00:13:20 verbose #13939 > > |> optionm.map fun x => 00:13:20 verbose #13940 > > x 00:13:20 verbose #13941 > > |> to_local 00:13:20 verbose #13942 > > |> format'' "%Y-%m-%d %H:%M:%S" 00:13:20 verbose #13943 > > |> sm'.from_std_string 00:13:20 verbose #13944 > > |> resultm.from_option 00:13:20 verbose #13945 > > 00:13:20 verbose #13946 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:20 verbose #13947 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:20 verbose #13948 > > │ ### duration_from_millis │ 00:13:20 verbose #13949 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:20 verbose #13950 > > 00:13:20 verbose #13951 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:20 verbose #13952 > > inl duration_from_millis (ms : u64) : duration = 00:13:20 verbose #13953 > > inl ms = join ms 00:13:20 verbose #13954 > > !\($'"std::time::Duration::from_millis(!ms)"') 00:13:20 verbose #13955 > > 00:13:20 verbose #13956 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:20 verbose #13957 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:20 verbose #13958 > > │ ## date_time │ 00:13:20 verbose #13959 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:20 verbose #13960 > > 00:13:20 verbose #13961 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:20 verbose #13962 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:20 verbose #13963 > > │ ### time_zone_local │ 00:13:20 verbose #13964 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:20 verbose #13965 > > 00:13:20 verbose #13966 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:20 verbose #13967 > > inl time_zone_local () : time_zone_info = 00:13:20 verbose #13968 > > run_target function 00:13:20 verbose #13969 > > | Rust (Native) => fun () => 00:13:20 verbose #13970 > > open rust.rust_operators 00:13:20 verbose #13971 > > !\($'"0i64.into()"') 00:13:20 verbose #13972 > > | Fsharp _ => fun () => 00:13:20 verbose #13973 > > $'System.TimeZoneInfo.Local' 00:13:20 verbose #13974 > > | _ => fun () => null () 00:13:20 verbose #13975 > > 00:13:20 verbose #13976 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:20 verbose #13977 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:20 verbose #13978 > > │ ### get_utc_offset │ 00:13:20 verbose #13979 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:20 verbose #13980 > > 00:13:20 verbose #13981 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:20 verbose #13982 > > inl get_utc_offset (time_zone_info : time_zone_info) (date_time : date_time) : 00:13:20 verbose #13983 > > time_span = 00:13:20 verbose #13984 > > run_target function 00:13:20 verbose #13985 > > | Rust _ => fun () => time_span () 00:13:20 verbose #13986 > > | Fsharp _ => fun () => date_time |> $'_.GetUtcOffset' (time_zone_local 00:13:20 verbose #13987 > > ()) 00:13:20 verbose #13988 > > | target => fun () => failwith $'$"date_time.get_utc_offset / target: 00:13:20 verbose #13989 > > {!target}"' 00:13:20 verbose #13990 > > 00:13:20 verbose #13991 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:20 verbose #13992 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:20 verbose #13993 > > │ ### date_time_guid_from_date_time │ 00:13:20 verbose #13994 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:20 verbose #13995 > > 00:13:20 verbose #13996 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:20 verbose #13997 > > let date_time_guid_from_date_time (guid : guid.guid) (date_time : date_time) = 00:13:20 verbose #13998 > > inl create prefix time_zone : date_time_guid = 00:13:20 verbose #13999 > > inl guid = guid |> sm'.obj_to_string 00:13:20 verbose #14000 > > $'`date_time_guid $"{!prefix}{!time_zone}{!guid.[[!prefix.Length + 00:13:20 verbose #14001 > > !time_zone.Length..]]}"' 00:13:20 verbose #14002 > > run_target function 00:13:20 verbose #14003 > > | Rust (Contract) => fun () => null () 00:13:20 verbose #14004 > > | Rust (Native | Wasm) => fun () => 00:13:20 verbose #14005 > > inl epoch = 00:13:20 verbose #14006 > > date_time_utc 1970 1 1 0 0 0 00:13:20 verbose #14007 > > |> to_universal_time 00:13:20 verbose #14008 > > inl date_time = 00:13:20 verbose #14009 > > date_time 00:13:20 verbose #14010 > > |> specify_date_kind Local 00:13:20 verbose #14011 > > |> to_universal_time 00:13:20 verbose #14012 > > inl unixticks = 00:13:20 verbose #14013 > > match date_time |> ticks, epoch |> ticks with 00:13:20 verbose #14014 > > | timestamp date_time, timestamp epoch => date_time - epoch 00:13:20 verbose #14015 > > inl prefix = 00:13:20 verbose #14016 > > unixticks / 10 00:13:20 verbose #14017 > > |> from_timestamp_micros 00:13:20 verbose #14018 > > |> optionm.map ( 00:13:20 verbose #14019 > > to_local 00:13:20 verbose #14020 > > >> format'' "%Y%m%d-%H%M-%S%f" 00:13:20 verbose #14021 > > >> sm'.from_std_string 00:13:20 verbose #14022 > > >> fun s => $'$"{!s.[[0..17]]}-{!s.[[18..21]]}-{!s.[[22]]}"' 00:13:20 verbose #14023 > > ) 00:13:20 verbose #14024 > > |> optionm'.default_value "" 00:13:20 verbose #14025 > > inl time_zone = date_time |> get_utc_offset (time_zone_local ()) 00:13:20 verbose #14026 > > inl time_zone_signal = if hours time_zone > 0 then 1u8 else 0 00:13:20 verbose #14027 > > inl time_zone_value = time_zone |> time_span_format (join "hh:mm") 00:13:20 verbose #14028 > > inl time_zone = 00:13:20 verbose #14029 > > $'$"{!time_zone_signal}{!time_zone_value.[[0..1]]}{!time_zone_value.[[3..4]]}"' 00:13:20 verbose #14030 > > : string 00:13:20 verbose #14031 > > create prefix time_zone 00:13:20 verbose #14032 > > | target => fun () => 00:13:20 verbose #14033 > > inl prefix = date_time |> format (join "yyyyMMdd-HHmm-ssff-ffff-f") 00:13:20 verbose #14034 > > inl time_zone = date_time |> get_utc_offset (time_zone_local ()) 00:13:20 verbose #14035 > > inl time_zone_signal = if hours time_zone > 0 then 1u8 else 0 00:13:20 verbose #14036 > > inl time_zone_value = time_zone |> time_span_format (join "hhmm") 00:13:20 verbose #14037 > > inl time_zone = $'$"{!time_zone_signal}{!time_zone_value}"' : string 00:13:20 verbose #14038 > > create prefix time_zone 00:13:20 verbose #14039 > > 00:13:20 verbose #14040 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:20 verbose #14041 > > //// test 00:13:20 verbose #14042 > > 00:13:20 verbose #14043 > > now () |> to_universal_time |> date_time_guid_from_date_time (test_guid ()) |> 00:13:20 verbose #14044 > > sm'.obj_to_string 00:13:20 verbose #14045 > > |> console.write_line 00:13:22 verbose #14046 > > 00:13:22 verbose #14047 > > ╭─[ 1.19s - stdout ]───────────────────────────────────────────────────────────╮ 00:13:22 verbose #14048 > > │ 20240906-1456-5655-5555-500000543210 │ 00:13:22 verbose #14049 > > │ │ 00:13:22 verbose #14050 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:22 verbose #14051 > > 00:13:22 verbose #14052 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:22 verbose #14053 > > //// test 00:13:22 verbose #14054 > > ///! rust -d chrono 00:13:22 verbose #14055 > > 00:13:22 verbose #14056 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x 00:13:22 verbose #14057 > > - 6i32) (am'.End id) 00:13:22 verbose #14058 > > now () 00:13:22 verbose #14059 > > |> to_universal_time 00:13:22 verbose #14060 > > |> date_time_guid_from_date_time (test_guid ()) 00:13:22 verbose #14061 > > |> sm'.obj_to_string 00:13:22 verbose #14062 > > |> fun s => s |> _assert_eq' $'$"{!s.[[0..29]]}{!suffix}"' 00:13:29 verbose #14063 > > 00:13:29 verbose #14064 > > ╭─[ 7.79s - return value ]─────────────────────────────────────────────────────╮ 00:13:29 verbose #14065 > > │ __assert_eq' / actual: "20240906-1457-0430-3629-000000543210" / expected: │ 00:13:29 verbose #14066 > > │ "20240906-1457-0430-3629-000000543210" │ 00:13:29 verbose #14067 > > │ │ 00:13:29 verbose #14068 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:29 verbose #14069 > > 00:13:29 verbose #14070 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:29 verbose #14071 > > //// test 00:13:29 verbose #14072 > > ///! fsharp 00:13:29 verbose #14073 > > ///! rust -d chrono 00:13:29 verbose #14074 > > 00:13:29 verbose #14075 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x 00:13:29 verbose #14076 > > - 6i32) (am'.End id) 00:13:29 verbose #14077 > > min_value () 00:13:29 verbose #14078 > > |> specify_date_kind Local 00:13:29 verbose #14079 > > |> date_time_guid_from_date_time (test_guid ()) 00:13:29 verbose #14080 > > |> sm'.obj_to_string 00:13:29 verbose #14081 > > |> fun s => s |> _assert_eq' 00:13:29 verbose #14082 > > $'$"00010101-0000-0000-0000-0{!s.[[25..29]]}{!suffix}"' 00:13:37 verbose #14083 > > 00:13:37 verbose #14084 > > ╭─[ 7.68s - return value ]─────────────────────────────────────────────────────╮ 00:13:37 verbose #14085 > > │ .rs output (rust -d chrono): │ 00:13:37 verbose #14086 > > │ __assert_eq' / actual: "00010101-0000-0000-0000-000000543210" / expected: │ 00:13:37 verbose #14087 > > │ "00010101-0000-0000-0000-000000543210" │ 00:13:37 verbose #14088 > > │ │ 00:13:37 verbose #14089 > > │ │ 00:13:37 verbose #14090 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:37 verbose #14091 > > 00:13:37 verbose #14092 > > ╭─[ 7.68s - stdout ]───────────────────────────────────────────────────────────╮ 00:13:37 verbose #14093 > > │ .fsx output: │ 00:13:37 verbose #14094 > > │ __assert_eq' / actual: "00010101-0000-0000-0000-000000543210" / expected: │ 00:13:37 verbose #14095 > > │ "00010101-0000-0000-0000-000000543210" │ 00:13:37 verbose #14096 > > │ │ 00:13:37 verbose #14097 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:37 verbose #14098 > > 00:13:37 verbose #14099 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:37 verbose #14100 > > //// test 00:13:37 verbose #14101 > > ///! fsharp 00:13:37 verbose #14102 > > 00:13:37 verbose #14103 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x 00:13:37 verbose #14104 > > - 6i32) (am'.End id) 00:13:37 verbose #14105 > > max_value () 00:13:37 verbose #14106 > > |> specify_date_kind Utc 00:13:37 verbose #14107 > > |> add_days -1 00:13:37 verbose #14108 > > |> date_time_guid_from_date_time (test_guid ()) 00:13:37 verbose #14109 > > |> sm'.obj_to_string 00:13:37 verbose #14110 > > |> fun s => s |> _assert_eq 00:13:37 verbose #14111 > > $'$"99991230-2359-5999-9999-9{!s.[[25..29]]}{!suffix}"' 00:13:37 verbose #14112 > > 00:13:37 verbose #14113 > > ╭─[ 242.38ms - stdout ]────────────────────────────────────────────────────────╮ 00:13:37 verbose #14114 > > │ __assert_eq / actual: "99991230-2359-5999-9999-900000543210" / expected: │ 00:13:37 verbose #14115 > > │ "99991230-2359-5999-9999-900000543210" │ 00:13:37 verbose #14116 > > │ │ 00:13:37 verbose #14117 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:37 verbose #14118 > > 00:13:37 verbose #14119 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:37 verbose #14120 > > //// test 00:13:37 verbose #14121 > > ///! rust -d chrono 00:13:37 verbose #14122 > > 00:13:37 verbose #14123 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x 00:13:37 verbose #14124 > > - 6i32) (am'.End id) 00:13:37 verbose #14125 > > max_value () 00:13:37 verbose #14126 > > |> specify_date_kind Utc 00:13:37 verbose #14127 > > |> add_days -1 00:13:37 verbose #14128 > > |> date_time_guid_from_date_time (test_guid ()) 00:13:37 verbose #14129 > > |> sm'.obj_to_string 00:13:37 verbose #14130 > > |> fun s => s |> _assert_eq 00:13:37 verbose #14131 > > $'$"99991230-2359-5999-9999-0{!s.[[25..29]]}{!suffix}"' 00:13:46 verbose #14132 > > 00:13:46 verbose #14133 > > ╭─[ 8.31s - return value ]─────────────────────────────────────────────────────╮ 00:13:46 verbose #14134 > > │ __assert_eq / actual: "99991230-2359-5999-9999-000000543210" / expected: │ 00:13:46 verbose #14135 > > │ "99991230-2359-5999-9999-000000543210" │ 00:13:46 verbose #14136 > > │ │ 00:13:46 verbose #14137 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:46 verbose #14138 > > 00:13:46 verbose #14139 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:46 verbose #14140 > > //// test 00:13:46 verbose #14141 > > 00:13:46 verbose #14142 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x 00:13:46 verbose #14143 > > - 6i32) (am'.End id) 00:13:46 verbose #14144 > > unix_epoch () 00:13:46 verbose #14145 > > |> specify_date_kind Utc 00:13:46 verbose #14146 > > |> add_days 1 00:13:46 verbose #14147 > > |> date_time_guid_from_date_time (test_guid ()) 00:13:46 verbose #14148 > > |> sm'.obj_to_string 00:13:46 verbose #14149 > > |> fun s => s |> _assert_eq 00:13:46 verbose #14150 > > $'$"19700102-0000-0000-0000-0{!s.[[25..29]]}{!suffix}"' 00:13:46 verbose #14151 > > 00:13:46 verbose #14152 > > ╭─[ 234.39ms - stdout ]────────────────────────────────────────────────────────╮ 00:13:46 verbose #14153 > > │ __assert_eq / actual: "19700102-0000-0000-0000-000000543210" / expected: │ 00:13:46 verbose #14154 > > │ "19700102-0000-0000-0000-000000543210" │ 00:13:46 verbose #14155 > > │ │ 00:13:46 verbose #14156 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:46 verbose #14157 > > 00:13:46 verbose #14158 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:46 verbose #14159 > > //// test 00:13:46 verbose #14160 > > ///! rust -d chrono 00:13:46 verbose #14161 > > 00:13:46 verbose #14162 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x 00:13:46 verbose #14163 > > - 6i32) (am'.End id) 00:13:46 verbose #14164 > > unix_epoch () 00:13:46 verbose #14165 > > |> specify_date_kind Utc 00:13:46 verbose #14166 > > |> add_days 1 00:13:46 verbose #14167 > > |> date_time_guid_from_date_time (test_guid ()) 00:13:46 verbose #14168 > > |> sm'.obj_to_string 00:13:46 verbose #14169 > > |> fun s => s |> _assert_eq 00:13:46 verbose #14170 > > $'$"19700102-0000-0000-0000-0{!s.[[25..29]]}{!suffix}"' 00:13:54 verbose #14171 > > 00:13:54 verbose #14172 > > ╭─[ 7.72s - return value ]─────────────────────────────────────────────────────╮ 00:13:54 verbose #14173 > > │ __assert_eq / actual: "19700102-0000-0000-0000-000000543210" / expected: │ 00:13:54 verbose #14174 > > │ "19700102-0000-0000-0000-000000543210" │ 00:13:54 verbose #14175 > > │ │ 00:13:54 verbose #14176 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:54 verbose #14177 > > 00:13:54 verbose #14178 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:54 verbose #14179 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:54 verbose #14180 > > │ ### date_time_from_guid │ 00:13:54 verbose #14181 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:54 verbose #14182 > > 00:13:54 verbose #14183 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:54 verbose #14184 > > inl date_time_from_guid (date_time_guid : date_time_guid) = 00:13:54 verbose #14185 > > inl date_time_guid = date_time_guid |> sm'.obj_to_string 00:13:54 verbose #14186 > > inl sm_replace = sm'.replace "-" "" 00:13:54 verbose #14187 > > run_target_args (fun () => sm_replace) function 00:13:54 verbose #14188 > > | (Rust _ | TypeScript _) => fun sm_replace => 00:13:54 verbose #14189 > > $'System.DateTime.Parse (!date_time_guid.[[..24]] |> !sm_replace)' : 00:13:54 verbose #14190 > > date_time 00:13:54 verbose #14191 > > | _ => fun sm_replace => $'System.DateTime.ParseExact 00:13:54 verbose #14192 > > (!date_time_guid.[[..24]] |> !sm_replace, "yyyyMMddHHmmssfffffff", null)' : 00:13:54 verbose #14193 > > date_time 00:13:54 verbose #14194 > > 00:13:54 verbose #14195 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:54 verbose #14196 > > //// test 00:13:54 verbose #14197 > > 00:13:54 verbose #14198 > > date_time_from_guid (guid.new_guid "00010101-0000-0000-0000-0a9876543210") 00:13:54 verbose #14199 > > |> _assert_eq' (min_value ()) 00:13:54 verbose #14200 > > 00:13:54 verbose #14201 > > ╭─[ 116.57ms - stdout ]────────────────────────────────────────────────────────╮ 00:13:54 verbose #14202 > > │ __assert_eq' / actual: 01/01/0001 00:00:00 / expected: 01/01/0001 00:00:00 │ 00:13:54 verbose #14203 > > │ │ 00:13:54 verbose #14204 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:54 verbose #14205 > > 00:13:54 verbose #14206 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:54 verbose #14207 > > //// test 00:13:54 verbose #14208 > > 00:13:54 verbose #14209 > > date_time_from_guid (guid.new_guid $'$"99991231-2359-5999-9999-9{(!test_guid () 00:13:54 verbose #14210 > > |> string).[[^10..]]}"') 00:13:54 verbose #14211 > > |> _assert_eq' (max_value ()) 00:13:54 verbose #14212 > > 00:13:54 verbose #14213 > > ╭─[ 127.53ms - stdout ]────────────────────────────────────────────────────────╮ 00:13:54 verbose #14214 > > │ __assert_eq' / actual: 12/31/9999 23:59:59 / expected: 12/31/9999 23:59:59 │ 00:13:54 verbose #14215 > > │ │ 00:13:54 verbose #14216 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:54 verbose #14217 > > 00:13:54 verbose #14218 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:54 verbose #14219 > > //// test 00:13:54 verbose #14220 > > 00:13:54 verbose #14221 > > date_time_from_guid (guid.new_guid $'$"19700101-0000-0000-0000-0{(!test_guid () 00:13:54 verbose #14222 > > |> string).[[^10..]]}"') 00:13:54 verbose #14223 > > |> _assert_eq' $'System.DateTime.UnixEpoch' 00:13:54 verbose #14224 > > 00:13:54 verbose #14225 > > ╭─[ 113.12ms - stdout ]────────────────────────────────────────────────────────╮ 00:13:54 verbose #14226 > > │ __assert_eq' / actual: 01/01/1970 00:00:00 / expected: 01/01/1970 00:00:00 │ 00:13:54 verbose #14227 > > │ │ 00:13:54 verbose #14228 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:54 verbose #14229 > > 00:13:54 verbose #14230 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:54 verbose #14231 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:54 verbose #14232 > > │ ### timestamp_guid_from_timestamp │ 00:13:54 verbose #14233 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:54 verbose #14234 > > 00:13:54 verbose #14235 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:54 verbose #14236 > > inl timestamp_guid_from_timestamp (guid : guid.guid) (timestamp : timestamp) : 00:13:54 verbose #14237 > > timestamp_guid = 00:13:54 verbose #14238 > > inl guid = guid |> sm'.obj_to_string 00:13:54 verbose #14239 > > inl timestamp = timestamp |> sm'.obj_to_string |> sm'.pad_left 18i32 '0' 00:13:54 verbose #14240 > > $'`timestamp_guid 00:13:54 verbose #14241 > > $"{!timestamp.[[0..7]]}-{!timestamp.[[8..11]]}-{!timestamp.[[12..15]]}-{!timesta 00:13:54 verbose #14242 > > mp.[[16..17]]}{!guid.[[21..]]}"' 00:13:54 verbose #14243 > > 00:13:54 verbose #14244 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:54 verbose #14245 > > //// test 00:13:54 verbose #14246 > > 00:13:54 verbose #14247 > > timestamp_guid_from_timestamp (test_guid ()) (timestamp 0i64) 00:13:54 verbose #14248 > > |> _assert_eq' (guid.new_guid "00000000-0000-0000-00dc-ba9876543210") 00:13:54 verbose #14249 > > 00:13:54 verbose #14250 > > ╭─[ 122.44ms - stdout ]────────────────────────────────────────────────────────╮ 00:13:54 verbose #14251 > > │ __assert_eq' / actual: 00000000-0000-0000-00dc-ba9876543210 / expected: │ 00:13:54 verbose #14252 > > │ 00000000-0000-0000-00dc-ba9876543210 │ 00:13:54 verbose #14253 > > │ │ 00:13:54 verbose #14254 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:54 verbose #14255 > > 00:13:54 verbose #14256 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:54 verbose #14257 > > //// test 00:13:54 verbose #14258 > > 00:13:54 verbose #14259 > > timestamp_guid_from_timestamp (test_guid ()) (timestamp 999999999999999999i64) 00:13:54 verbose #14260 > > |> _assert_eq' (guid.new_guid $'$"99999999-9999-9999-99dc-b{(!test_guid () |> 00:13:54 verbose #14261 > > string).[[^10..]]}"') 00:13:54 verbose #14262 > > 00:13:54 verbose #14263 > > ╭─[ 155.73ms - stdout ]────────────────────────────────────────────────────────╮ 00:13:54 verbose #14264 > > │ __assert_eq' / actual: 99999999-9999-9999-99dc-ba9876543210 / expected: │ 00:13:54 verbose #14265 > > │ 99999999-9999-9999-99dc-ba9876543210 │ 00:13:54 verbose #14266 > > │ │ 00:13:54 verbose #14267 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:54 verbose #14268 > > 00:13:54 verbose #14269 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:54 verbose #14270 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:54 verbose #14271 > > │ ### timestamp_from_guid │ 00:13:54 verbose #14272 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:54 verbose #14273 > > 00:13:54 verbose #14274 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:54 verbose #14275 > > inl timestamp_from_guid (guid : date_time_guid) : timestamp = 00:13:54 verbose #14276 > > inl guid = guid |> sm'.obj_to_string 00:13:54 verbose #14277 > > $'`i64 00:13:54 verbose #14278 > > $"{!guid.[[0..7]]}{!guid.[[9..12]]}{!guid.[[14..17]]}{!guid.[[19..20]]}"' 00:13:55 verbose #14279 > > 00:13:55 verbose #14280 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:55 verbose #14281 > > //// test 00:13:55 verbose #14282 > > 00:13:55 verbose #14283 > > timestamp_from_guid (guid.new_guid "00000000-0000-0000-00dc-ba9876543210") 00:13:55 verbose #14284 > > |> _assert_eq (timestamp 0) 00:13:55 verbose #14285 > > 00:13:55 verbose #14286 > > ╭─[ 113.03ms - stdout ]────────────────────────────────────────────────────────╮ 00:13:55 verbose #14287 > > │ __assert_eq / actual: 0L / expected: 0L │ 00:13:55 verbose #14288 > > │ │ 00:13:55 verbose #14289 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:55 verbose #14290 > > 00:13:55 verbose #14291 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:55 verbose #14292 > > //// test 00:13:55 verbose #14293 > > 00:13:55 verbose #14294 > > timestamp_from_guid (guid.new_guid $'$"99999999-9999-9999-99{(!test_guid () |> 00:13:55 verbose #14295 > > string).[[^14..]]}"') 00:13:55 verbose #14296 > > |> _assert_eq (timestamp 999999999999999999) 00:13:55 verbose #14297 > > 00:13:55 verbose #14298 > > ╭─[ 114.96ms - stdout ]────────────────────────────────────────────────────────╮ 00:13:55 verbose #14299 > > │ __assert_eq / actual: 999999999999999999L / expected: 999999999999999999L │ 00:13:55 verbose #14300 > > │ │ 00:13:55 verbose #14301 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:55 verbose #14302 > > 00:13:55 verbose #14303 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:55 verbose #14304 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:55 verbose #14305 > > │ ### new_guid_from_date_time │ 00:13:55 verbose #14306 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:55 verbose #14307 > > 00:13:55 verbose #14308 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:55 verbose #14309 > > inl new_guid_from_date_time (date_time : date_time) = 00:13:55 verbose #14310 > > inl guid = guid.new_raw_guid () 00:13:55 verbose #14311 > > date_time_guid_from_date_time guid date_time 00:13:55 verbose #14312 > > 00:13:55 verbose #14313 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:55 verbose #14314 > > //// test 00:13:55 verbose #14315 > > 00:13:55 verbose #14316 > > utc_now () 00:13:55 verbose #14317 > > |> new_guid_from_date_time 00:13:55 verbose #14318 > > |> date_time_from_guid 00:13:55 verbose #14319 > > |> fun date_time => new_time_span date_time (utc_now ()) |> total_seconds |> i32 00:13:55 verbose #14320 > > |> _assert_eq 0 00:13:55 verbose #14321 > > 00:13:55 verbose #14322 > > ╭─[ 188.90ms - stdout ]────────────────────────────────────────────────────────╮ 00:13:55 verbose #14323 > > │ __assert_eq / actual: 0 / expected: 0 │ 00:13:55 verbose #14324 > > │ │ 00:13:55 verbose #14325 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:55 verbose #14326 > > 00:13:55 verbose #14327 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:55 verbose #14328 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:55 verbose #14329 > > │ ### new_guid_from_timestamp │ 00:13:55 verbose #14330 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:55 verbose #14331 > > 00:13:55 verbose #14332 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:55 verbose #14333 > > inl new_guid_from_timestamp (timestamp : timestamp) = 00:13:55 verbose #14334 > > inl guid = guid.new_raw_guid () 00:13:55 verbose #14335 > > timestamp_guid_from_timestamp guid timestamp 00:13:55 verbose #14336 > > 00:13:55 verbose #14337 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:55 verbose #14338 > > //// test 00:13:55 verbose #14339 > > 00:13:55 verbose #14340 > > utc_now () 00:13:55 verbose #14341 > > |> ticks 00:13:55 verbose #14342 > > |> new_guid_from_timestamp 00:13:55 verbose #14343 > > |> timestamp_from_guid 00:13:55 verbose #14344 > > |> fun (timestamp timestamp) => (timestamp - (utc_now () |> ticks |> fun 00:13:55 verbose #14345 > > (timestamp x) => x)) / 100000i64 00:13:55 verbose #14346 > > |> _assert_eq 0i64 00:13:55 verbose #14347 > > 00:13:55 verbose #14348 > > ╭─[ 140.99ms - stdout ]────────────────────────────────────────────────────────╮ 00:13:55 verbose #14349 > > │ __assert_eq / actual: 0L / expected: 0L │ 00:13:55 verbose #14350 > > │ │ 00:13:55 verbose #14351 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:55 verbose #14352 > > 00:13:55 verbose #14353 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:55 verbose #14354 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:55 verbose #14355 > > │ ## main │ 00:13:55 verbose #14356 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:13:55 verbose #14357 > > 00:13:55 verbose #14358 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:55 verbose #14359 > > inl main () = 00:13:55 verbose #14360 > > $'let date_time_guid_from_date_time x = !date_time_guid_from_date_time x' : 00:13:55 verbose #14361 > > () 00:13:55 verbose #14362 > > $'let date_time_from_guid x = !date_time_from_guid x' : () 00:13:55 verbose #14363 > > $'let timestamp_guid_from_timestamp x = !timestamp_guid_from_timestamp x' : 00:13:55 verbose #14364 > > () 00:13:55 verbose #14365 > > $'let timestamp_from_guid x = !timestamp_from_guid x' : () 00:13:55 verbose #14366 > > $'let new_guid_from_date_time x = !new_guid_from_date_time x' : () 00:13:55 verbose #14367 > > $'let new_guid_from_timestamp x = !new_guid_from_timestamp x' : () 00:13:55 verbose #14368 > > $'let format x = !format x' : () 00:13:55 verbose #14369 > > $'let format_iso8601 x = !format_iso8601 x' : () 00:13:56 verbose #14370 > 00:00:44 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 53359 } 00:13:56 verbose #14371 > 00:00:44 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:13:56 verbose #14372 > "nbconvert", 00:13:56 verbose #14373 > "/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.ipynb", 00:13:56 verbose #14374 > "--to", 00:13:56 verbose #14375 > "html", 00:13:56 verbose #14376 > "--HTMLExporter.theme=dark", 00:13:56 verbose #14377 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:13:56 verbose #14378 > 00:00:44 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.ipynb to html 00:13:56 verbose #14379 > 00:00:44 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:13:56 verbose #14380 > 00:00:44 verbose #7 ! validate(nb) 00:13:57 verbose #14381 > 00:00:45 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:13:57 verbose #14382 > 00:00:45 verbose #9 ! return _pygments_highlight( 00:13:57 verbose #14383 > 00:00:45 verbose #10 ! [NbConvertApp] Writing 411815 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.html 00:13:57 verbose #14384 > 00:00:45 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 } 00:13:57 verbose #14385 > 00:00:45 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 } 00:13:57 verbose #14386 > 00:00:45 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:13:57 verbose #14387 > "-c", 00:13:57 verbose #14388 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:13:57 verbose #14389 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:13:58 verbose #14390 > 00:00:46 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:13:58 verbose #14391 > 00:00:46 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:13:58 verbose #14392 > 00:00:46 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 54320 } 00:13:58 debug #14393 runtime.execute_with_options_async / { exit_code = 0; output_length = 59139 } 00:13:58 debug #16 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path date_time.dib --retries 3 00:13:58 debug #14394 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path math.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:13:58 verbose #14395 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "math.dib", "--retries", "3"])) } 00:13:58 verbose #14396 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:13:58 verbose #14397 > "repl", 00:13:58 verbose #14398 > "--exit-after-run", 00:13:58 verbose #14399 > "--run", 00:13:58 verbose #14400 > "/home/runner/work/polyglot/polyglot/lib/spiral/math.dib", 00:13:58 verbose #14401 > "--output-path", 00:13:58 verbose #14402 > "/home/runner/work/polyglot/polyglot/lib/spiral/math.dib.ipynb", 00:13:58 verbose #14403 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/math.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/math.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:13:59 verbose #14404 > > 00:13:59 verbose #14405 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:59 verbose #14406 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:13:59 verbose #14407 > > │ # math │ 00:13:59 verbose #14408 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:01 verbose #14409 > > 00:14:01 verbose #14410 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:01 verbose #14411 > > //// test 00:14:01 verbose #14412 > > 00:14:01 verbose #14413 > > open testing 00:14:02 verbose #14414 > > 00:14:02 verbose #14415 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:02 verbose #14416 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:02 verbose #14417 > > │ ## math │ 00:14:02 verbose #14418 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:02 verbose #14419 > > 00:14:02 verbose #14420 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:02 verbose #14421 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:02 verbose #14422 > > │ ### e │ 00:14:02 verbose #14423 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:02 verbose #14424 > > 00:14:02 verbose #14425 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:02 verbose #14426 > > inl e () = 00:14:02 verbose #14427 > > exp 1f64 00:14:02 verbose #14428 > > 00:14:02 verbose #14429 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:02 verbose #14430 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:02 verbose #14431 > > │ ## square │ 00:14:02 verbose #14432 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:02 verbose #14433 > > 00:14:02 verbose #14434 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:02 verbose #14435 > > inl square x = 00:14:02 verbose #14436 > > x ** 2 00:14:02 verbose #14437 > > 00:14:02 verbose #14438 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:02 verbose #14439 > > //// test 00:14:02 verbose #14440 > > 00:14:02 verbose #14441 > > 5f64 00:14:02 verbose #14442 > > |> sqrt 00:14:02 verbose #14443 > > |> square 00:14:02 verbose #14444 > > |> _assert_approx_eq None 5 00:14:03 verbose #14445 > > 00:14:03 verbose #14446 > > ╭─[ 703.82ms - stdout ]────────────────────────────────────────────────────────╮ 00:14:03 verbose #14447 > > │ __assert_approx_eq / actual: 5.0 / expected: 5.0 │ 00:14:03 verbose #14448 > > │ │ 00:14:03 verbose #14449 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:03 verbose #14450 > > 00:14:03 verbose #14451 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:03 verbose #14452 > > //// test 00:14:03 verbose #14453 > > 00:14:03 verbose #14454 > > e () |> square 00:14:03 verbose #14455 > > |> _assert_approx_eq None 7.3890560989306495 00:14:03 verbose #14456 > > 00:14:03 verbose #14457 > > ╭─[ 94.56ms - stdout ]─────────────────────────────────────────────────────────╮ 00:14:03 verbose #14458 > > │ __assert_approx_eq / actual: 7.389056099 / expected: 7.389056099 │ 00:14:03 verbose #14459 > > │ │ 00:14:03 verbose #14460 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:03 verbose #14461 > > 00:14:03 verbose #14462 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:03 verbose #14463 > > //// test 00:14:03 verbose #14464 > > 00:14:03 verbose #14465 > > 2 * 2 / 0.4f64 |> sqrt 00:14:03 verbose #14466 > > |> _assert_approx_eq None 3.1622776601683795 00:14:03 verbose #14467 > > 00:14:03 verbose #14468 > > ╭─[ 92.74ms - stdout ]─────────────────────────────────────────────────────────╮ 00:14:03 verbose #14469 > > │ __assert_approx_eq / actual: 3.16227766 / expected: 3.16227766 │ 00:14:03 verbose #14470 > > │ │ 00:14:03 verbose #14471 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:03 verbose #14472 > > 00:14:03 verbose #14473 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:03 verbose #14474 > > //// test 00:14:03 verbose #14475 > > 00:14:03 verbose #14476 > > 2f64 / 3 00:14:03 verbose #14477 > > |> _assert_approx_eq None 0.6666666666666666 00:14:03 verbose #14478 > > 00:14:03 verbose #14479 > > ╭─[ 99.20ms - stdout ]─────────────────────────────────────────────────────────╮ 00:14:03 verbose #14480 > > │ __assert_approx_eq / actual: 0.6666666667 / expected: 0.6666666667 │ 00:14:03 verbose #14481 > > │ │ 00:14:03 verbose #14482 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:03 verbose #14483 > > 00:14:03 verbose #14484 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:03 verbose #14485 > > //// test 00:14:03 verbose #14486 > > 00:14:03 verbose #14487 > > 2f64 |> log 00:14:03 verbose #14488 > > |> _assert_approx_eq None 0.6931471805599453 00:14:03 verbose #14489 > > 00:14:03 verbose #14490 > > ╭─[ 95.83ms - stdout ]─────────────────────────────────────────────────────────╮ 00:14:03 verbose #14491 > > │ __assert_approx_eq / actual: 0.6931471806 / expected: 0.6931471806 │ 00:14:03 verbose #14492 > > │ │ 00:14:03 verbose #14493 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:03 verbose #14494 > > 00:14:03 verbose #14495 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:03 verbose #14496 > > //// test 00:14:03 verbose #14497 > > 00:14:03 verbose #14498 > > pi 00:14:03 verbose #14499 > > |> _assert_approx_eq None 3.141592653589793f64 00:14:04 verbose #14500 > > 00:14:04 verbose #14501 > > ╭─[ 92.17ms - stdout ]─────────────────────────────────────────────────────────╮ 00:14:04 verbose #14502 > > │ __assert_approx_eq / actual: 3.141592654 / expected: 3.141592654 │ 00:14:04 verbose #14503 > > │ │ 00:14:04 verbose #14504 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:04 verbose #14505 > > 00:14:04 verbose #14506 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:04 verbose #14507 > > //// test 00:14:04 verbose #14508 > > 00:14:04 verbose #14509 > > pi |> cos 00:14:04 verbose #14510 > > |> _assert_eq -1f64 00:14:04 verbose #14511 > > 00:14:04 verbose #14512 > > ╭─[ 91.87ms - stdout ]─────────────────────────────────────────────────────────╮ 00:14:04 verbose #14513 > > │ __assert_eq / actual: -1.0 / expected: -1.0 │ 00:14:04 verbose #14514 > > │ │ 00:14:04 verbose #14515 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:04 verbose #14516 > > 00:14:04 verbose #14517 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:04 verbose #14518 > > //// test 00:14:04 verbose #14519 > > 00:14:04 verbose #14520 > > pi 00:14:04 verbose #14521 > > |> cos 00:14:04 verbose #14522 > > |> fun n => n / 2f64 00:14:04 verbose #14523 > > |> _assert_approx_eq None -0.5 00:14:04 verbose #14524 > > 00:14:04 verbose #14525 > > ╭─[ 96.95ms - stdout ]─────────────────────────────────────────────────────────╮ 00:14:04 verbose #14526 > > │ __assert_approx_eq / actual: -0.5 / expected: -0.5 │ 00:14:04 verbose #14527 > > │ │ 00:14:04 verbose #14528 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:04 verbose #14529 > > 00:14:04 verbose #14530 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:04 verbose #14531 > > //// test 00:14:04 verbose #14532 > > 00:14:04 verbose #14533 > > pi / 2 |> cos 00:14:04 verbose #14534 > > |> _assert_approx_eq None 0.00000000000000006123233995736766f64 00:14:04 verbose #14535 > > 00:14:04 verbose #14536 > > ╭─[ 93.44ms - stdout ]─────────────────────────────────────────────────────────╮ 00:14:04 verbose #14537 > > │ __assert_approx_eq / actual: 6.123233996e-17 / expected: 6.123233996e-17 │ 00:14:04 verbose #14538 > > │ │ 00:14:04 verbose #14539 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:04 verbose #14540 > > 00:14:04 verbose #14541 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:04 verbose #14542 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:04 verbose #14543 > > │ ## fsharp │ 00:14:04 verbose #14544 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:04 verbose #14545 > > 00:14:04 verbose #14546 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:04 verbose #14547 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:04 verbose #14548 > > │ ### atan2 │ 00:14:04 verbose #14549 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:04 verbose #14550 > > 00:14:04 verbose #14551 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:04 verbose #14552 > > inl atan2 (y : f64) (x : f64) : f64 = 00:14:04 verbose #14553 > > $'System.Math.Atan2 (!y, !x)' 00:14:04 verbose #14554 > > 00:14:04 verbose #14555 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:04 verbose #14556 > > //// test 00:14:04 verbose #14557 > > 00:14:04 verbose #14558 > > 0 |> atan2 1 00:14:04 verbose #14559 > > |> _assert_eq 1.5707963267948966 00:14:04 verbose #14560 > > 00:14:04 verbose #14561 > > ╭─[ 180.51ms - stdout ]────────────────────────────────────────────────────────╮ 00:14:04 verbose #14562 > > │ __assert_eq / actual: 1.570796327 / expected: 1.570796327 │ 00:14:04 verbose #14563 > > │ │ 00:14:04 verbose #14564 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:04 verbose #14565 > > 00:14:04 verbose #14566 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:04 verbose #14567 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:04 verbose #14568 > > │ ## floor │ 00:14:04 verbose #14569 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:04 verbose #14570 > > 00:14:04 verbose #14571 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:04 verbose #14572 > > inl floor forall t {float}. (n : t) : t = 00:14:04 verbose #14573 > > n |> $'floor' 00:14:04 verbose #14574 > > 00:14:04 verbose #14575 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:04 verbose #14576 > > //// test 00:14:04 verbose #14577 > > 00:14:04 verbose #14578 > > 0.6 |> floor 00:14:04 verbose #14579 > > |> _assert_eq 0f64 00:14:04 verbose #14580 > > 00:14:04 verbose #14581 > > ╭─[ 123.94ms - stdout ]────────────────────────────────────────────────────────╮ 00:14:04 verbose #14582 > > │ __assert_eq / actual: 0.0 / expected: 0.0 │ 00:14:04 verbose #14583 > > │ │ 00:14:04 verbose #14584 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:04 verbose #14585 > > 00:14:04 verbose #14586 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:04 verbose #14587 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:04 verbose #14588 > > │ ## ceil │ 00:14:04 verbose #14589 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:04 verbose #14590 > > 00:14:04 verbose #14591 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:04 verbose #14592 > > inl ceil forall t {float}. (n : t) : t = 00:14:04 verbose #14593 > > n |> $'ceil' 00:14:04 verbose #14594 > > 00:14:04 verbose #14595 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:04 verbose #14596 > > //// test 00:14:04 verbose #14597 > > 00:14:04 verbose #14598 > > 0.6 |> ceil 00:14:04 verbose #14599 > > |> _assert_eq 1f64 00:14:04 verbose #14600 > > 00:14:04 verbose #14601 > > ╭─[ 95.85ms - stdout ]─────────────────────────────────────────────────────────╮ 00:14:04 verbose #14602 > > │ __assert_eq / actual: 1.0 / expected: 1.0 │ 00:14:04 verbose #14603 > > │ │ 00:14:04 verbose #14604 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:04 verbose #14605 > > 00:14:04 verbose #14606 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:04 verbose #14607 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:04 verbose #14608 > > │ ## round │ 00:14:04 verbose #14609 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:04 verbose #14610 > > 00:14:04 verbose #14611 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:04 verbose #14612 > > inl round forall t {float}. (n : t) : t = 00:14:04 verbose #14613 > > n |> $'round' 00:14:05 verbose #14614 > > 00:14:05 verbose #14615 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:05 verbose #14616 > > //// test 00:14:05 verbose #14617 > > 00:14:05 verbose #14618 > > 0.5 |> round 00:14:05 verbose #14619 > > |> _assert_eq 0f64 00:14:05 verbose #14620 > > 00:14:05 verbose #14621 > > 1.5 |> round 00:14:05 verbose #14622 > > |> _assert_eq 2f64 00:14:05 verbose #14623 > > 00:14:05 verbose #14624 > > 2.5 |> round 00:14:05 verbose #14625 > > |> _assert_eq 2f64 00:14:05 verbose #14626 > > 00:14:05 verbose #14627 > > 3.5 |> round 00:14:05 verbose #14628 > > |> _assert_eq 4f64 00:14:05 verbose #14629 > > 00:14:05 verbose #14630 > > ╭─[ 122.51ms - stdout ]────────────────────────────────────────────────────────╮ 00:14:05 verbose #14631 > > │ __assert_eq / actual: 0.0 / expected: 0.0 │ 00:14:05 verbose #14632 > > │ __assert_eq / actual: 2.0 / expected: 2.0 │ 00:14:05 verbose #14633 > > │ __assert_eq / actual: 2.0 / expected: 2.0 │ 00:14:05 verbose #14634 > > │ __assert_eq / actual: 4.0 / expected: 4.0 │ 00:14:05 verbose #14635 > > │ │ 00:14:05 verbose #14636 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:05 verbose #14637 > > 00:14:05 verbose #14638 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:05 verbose #14639 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:05 verbose #14640 > > │ ## log_base │ 00:14:05 verbose #14641 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:05 verbose #14642 > > 00:14:05 verbose #14643 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:05 verbose #14644 > > inl log_base (new_base : f64) (a : f64) : f64 = 00:14:05 verbose #14645 > > $'System.Math.Log (!a, !new_base)' 00:14:05 verbose #14646 > > 00:14:05 verbose #14647 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:05 verbose #14648 > > //// test 00:14:05 verbose #14649 > > 00:14:05 verbose #14650 > > 100 |> log_base 10 00:14:05 verbose #14651 > > |> _assert_eq 2 00:14:05 verbose #14652 > > 00:14:05 verbose #14653 > > ╭─[ 105.32ms - stdout ]────────────────────────────────────────────────────────╮ 00:14:05 verbose #14654 > > │ __assert_eq / actual: 2.0 / expected: 2.0 │ 00:14:05 verbose #14655 > > │ │ 00:14:05 verbose #14656 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:05 verbose #14657 > > 00:14:05 verbose #14658 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:05 verbose #14659 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:05 verbose #14660 > > │ ## round │ 00:14:05 verbose #14661 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:05 verbose #14662 > > 00:14:05 verbose #14663 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:05 verbose #14664 > > inl round forall t {float}. (x : t) : t = 00:14:05 verbose #14665 > > x |> $'round' 00:14:05 verbose #14666 > > 00:14:05 verbose #14667 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:05 verbose #14668 > > //// test 00:14:05 verbose #14669 > > 00:14:05 verbose #14670 > > 0.5 |> round 00:14:05 verbose #14671 > > |> _assert_eq 0f64 00:14:05 verbose #14672 > > 00:14:05 verbose #14673 > > ╭─[ 100.13ms - stdout ]────────────────────────────────────────────────────────╮ 00:14:05 verbose #14674 > > │ __assert_eq / actual: 0.0 / expected: 0.0 │ 00:14:05 verbose #14675 > > │ │ 00:14:05 verbose #14676 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:05 verbose #14677 > > 00:14:05 verbose #14678 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:05 verbose #14679 > > //// test 00:14:05 verbose #14680 > > 00:14:05 verbose #14681 > > 0.6 |> round 00:14:05 verbose #14682 > > |> _assert_eq 1f64 00:14:05 verbose #14683 > > 00:14:05 verbose #14684 > > ╭─[ 98.64ms - stdout ]─────────────────────────────────────────────────────────╮ 00:14:05 verbose #14685 > > │ __assert_eq / actual: 1.0 / expected: 1.0 │ 00:14:05 verbose #14686 > > │ │ 00:14:05 verbose #14687 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:05 verbose #14688 > 00:00:07 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 15089 } 00:14:05 verbose #14689 > 00:00:07 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:14:05 verbose #14690 > "nbconvert", 00:14:05 verbose #14691 > "/home/runner/work/polyglot/polyglot/lib/spiral/math.dib.ipynb", 00:14:05 verbose #14692 > "--to", 00:14:05 verbose #14693 > "html", 00:14:05 verbose #14694 > "--HTMLExporter.theme=dark", 00:14:05 verbose #14695 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/math.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:14:06 verbose #14696 > 00:00:08 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/math.dib.ipynb to html 00:14:06 verbose #14697 > 00:00:08 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:14:06 verbose #14698 > 00:00:08 verbose #7 ! validate(nb) 00:14:06 verbose #14699 > 00:00:08 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:14:06 verbose #14700 > 00:00:08 verbose #9 ! return _pygments_highlight( 00:14:06 verbose #14701 > 00:00:08 verbose #10 ! [NbConvertApp] Writing 304823 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/math.dib.html 00:14:07 verbose #14702 > 00:00:08 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 } 00:14:07 verbose #14703 > 00:00:08 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 } 00:14:07 verbose #14704 > 00:00:08 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:14:07 verbose #14705 > "-c", 00:14:07 verbose #14706 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:14:07 verbose #14707 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:14:07 verbose #14708 > 00:00:09 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:14:07 verbose #14709 > 00:00:09 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:14:07 verbose #14710 > 00:00:09 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 16040 } 00:14:07 debug #14711 runtime.execute_with_options_async / { exit_code = 0; output_length = 19434 } 00:14:07 debug #17 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path math.dib --retries 3 00:14:07 debug #14712 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path mapm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:14:07 verbose #14713 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "mapm.dib", "--retries", "3"])) } 00:14:07 verbose #14714 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:14:07 verbose #14715 > "repl", 00:14:07 verbose #14716 > "--exit-after-run", 00:14:07 verbose #14717 > "--run", 00:14:07 verbose #14718 > "/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib", 00:14:07 verbose #14719 > "--output-path", 00:14:07 verbose #14720 > "/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.ipynb", 00:14:07 verbose #14721 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:14:08 verbose #14722 > > 00:14:08 verbose #14723 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:08 verbose #14724 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:08 verbose #14725 > > │ # mapm │ 00:14:08 verbose #14726 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:11 verbose #14727 > > 00:14:11 verbose #14728 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:11 verbose #14729 > > open rust.rust_operators 00:14:11 verbose #14730 > > 00:14:11 verbose #14731 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:11 verbose #14732 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:11 verbose #14733 > > │ ## rust │ 00:14:11 verbose #14734 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:11 verbose #14735 > > 00:14:11 verbose #14736 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:11 verbose #14737 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:11 verbose #14738 > > │ ### hash_map │ 00:14:11 verbose #14739 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:11 verbose #14740 > > 00:14:11 verbose #14741 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:11 verbose #14742 > > nominal hash_map k v = 00:14:11 verbose #14743 > > `( 00:14:11 verbose #14744 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:14:11 verbose #14745 > > Fable.Core.Emit(\"std::collections::HashMap<$0, $1>\")>]]\n#endif\ntype 00:14:11 verbose #14746 > > std_collections_HashMap<'K, 'V> = class end" 00:14:11 verbose #14747 > > $'' : $'std_collections_HashMap<`k, `v>' 00:14:11 verbose #14748 > > ) 00:14:11 verbose #14749 > > 00:14:11 verbose #14750 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:11 verbose #14751 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:11 verbose #14752 > > │ ### b_tree_map │ 00:14:11 verbose #14753 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:11 verbose #14754 > > 00:14:11 verbose #14755 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:11 verbose #14756 > > nominal b_tree_map k v = 00:14:11 verbose #14757 > > `( 00:14:11 verbose #14758 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:14:11 verbose #14759 > > Fable.Core.Emit(\"std::collections::BTreeMap<$0, $1>\")>]]\n#endif\ntype 00:14:11 verbose #14760 > > std_collections_BTreeMap<'K, 'V> = class end" 00:14:11 verbose #14761 > > $'' : $'std_collections_BTreeMap<`k, `v>' 00:14:11 verbose #14762 > > ) 00:14:11 verbose #14763 > > 00:14:11 verbose #14764 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:11 verbose #14765 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:11 verbose #14766 > > │ ### new_hash_map │ 00:14:11 verbose #14767 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:11 verbose #14768 > > 00:14:11 verbose #14769 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:11 verbose #14770 > > inl new_hash_map () : hash_map _ _ = 00:14:11 verbose #14771 > > !\($'"std::collections::HashMap::new()"') 00:14:11 verbose #14772 > > 00:14:11 verbose #14773 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:11 verbose #14774 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:11 verbose #14775 > > │ ### new_b_tree_map │ 00:14:11 verbose #14776 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:11 verbose #14777 > > 00:14:11 verbose #14778 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:11 verbose #14779 > > inl new_b_tree_map () : b_tree_map _ _ = 00:14:11 verbose #14780 > > !\($'"std::collections::BTreeMap::new()"') 00:14:12 verbose #14781 > > 00:14:12 verbose #14782 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:12 verbose #14783 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:12 verbose #14784 > > │ ### get │ 00:14:12 verbose #14785 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:12 verbose #14786 > > 00:14:12 verbose #14787 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:12 verbose #14788 > > inl get forall k v. (key : k) (map : hash_map k v) : optionm'.option' v = 00:14:12 verbose #14789 > > inl key = join key 00:14:12 verbose #14790 > > !\\(map, $'"std::collections::HashMap::get(&$0, &!key).map(|x| 00:14:12 verbose #14791 > > x).cloned()"') 00:14:12 verbose #14792 > > 00:14:12 verbose #14793 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:12 verbose #14794 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:12 verbose #14795 > > │ ### insert │ 00:14:12 verbose #14796 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:12 verbose #14797 > > 00:14:12 verbose #14798 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:12 verbose #14799 > > inl insert forall k v. (key : k) (value : v) (map : hash_map k v) : 00:14:12 verbose #14800 > > optionm'.option' v = 00:14:12 verbose #14801 > > inl key = join key 00:14:12 verbose #14802 > > !\($'"let mut !map = !map"') 00:14:12 verbose #14803 > > !\($'"std::collections::HashMap::insert(&mut !map, !key, !value)"') 00:14:12 verbose #14804 > > 00:14:12 verbose #14805 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:12 verbose #14806 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:12 verbose #14807 > > │ ### map' │ 00:14:12 verbose #14808 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:12 verbose #14809 > > 00:14:12 verbose #14810 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:12 verbose #14811 > > inl map' forall k v w. (fn : v -> w) (map : hash_map k v) : hash_map k w = 00:14:12 verbose #14812 > > !\\((map, fn), $'"$0.into_iter().map(|(k, v)| (k, $1(v))).collect()"') 00:14:12 verbose #14813 > > 00:14:12 verbose #14814 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:12 verbose #14815 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:12 verbose #14816 > > │ ### hash_map_count │ 00:14:12 verbose #14817 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:12 verbose #14818 > > 00:14:12 verbose #14819 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:12 verbose #14820 > > inl hash_map_count forall k v. (map : hash_map k v) : i32 = 00:14:12 verbose #14821 > > !\\(map, $'"$0.count()"') 00:14:12 verbose #14822 > > 00:14:12 verbose #14823 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:12 verbose #14824 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:12 verbose #14825 > > │ ### from_vec │ 00:14:12 verbose #14826 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:12 verbose #14827 > > 00:14:12 verbose #14828 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:12 verbose #14829 > > inl from_vec forall k v. (vec : am'.vec (k * v)) : hash_map k v = 00:14:12 verbose #14830 > > !\($'"std::collections::HashMap::from_iter(!vec)"') 00:14:12 verbose #14831 > > 00:14:12 verbose #14832 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:12 verbose #14833 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:12 verbose #14834 > > │ ### from_vec_pairs │ 00:14:12 verbose #14835 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:12 verbose #14836 > > 00:14:12 verbose #14837 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:12 verbose #14838 > > inl from_vec_pairs forall k v. (vec : am'.vec (pair k v)) : hash_map k v = 00:14:12 verbose #14839 > > !\($'"std::collections::HashMap::from_iter(!vec.iter().map(|x| 00:14:12 verbose #14840 > > x.as_ref()).map(|&(ref k, ref v)| (k.clone(), v.clone())))"') 00:14:13 verbose #14841 > > 00:14:13 verbose #14842 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:13 verbose #14843 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:13 verbose #14844 > > │ ### b_tree_map_from_vec_pairs │ 00:14:13 verbose #14845 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:13 verbose #14846 > > 00:14:13 verbose #14847 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:13 verbose #14848 > > inl b_tree_map_from_vec_pairs forall k v. (vec : am'.vec (pair k v)) : 00:14:13 verbose #14849 > > b_tree_map k v = 00:14:13 verbose #14850 > > !\($'"std::collections::BTreeMap::from_iter(!vec.iter().map(|x| 00:14:13 verbose #14851 > > x.as_ref()).map(|&(ref k, ref v)| (k.clone(), v.clone())))"') 00:14:13 verbose #14852 > > 00:14:13 verbose #14853 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:13 verbose #14854 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:13 verbose #14855 > > │ ### from_array │ 00:14:13 verbose #14856 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:13 verbose #14857 > > 00:14:13 verbose #14858 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:13 verbose #14859 > > inl from_array forall k v. (array : array_base (k * v)) : hash_map k v = 00:14:13 verbose #14860 > > array |> am'.to_vec |> from_vec 00:14:13 verbose #14861 > > 00:14:13 verbose #14862 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:13 verbose #14863 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:13 verbose #14864 > > │ ### from_list │ 00:14:13 verbose #14865 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:13 verbose #14866 > > 00:14:13 verbose #14867 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:13 verbose #14868 > > inl from_list forall k v. (list : list (k * v)) : hash_map k v = 00:14:13 verbose #14869 > > inl (a list) : _ i32 _ = list |> listm.toArray 00:14:13 verbose #14870 > > list |> am'.to_vec |> from_vec 00:14:13 verbose #14871 > > 00:14:13 verbose #14872 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:13 verbose #14873 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:13 verbose #14874 > > │ ### to_vec │ 00:14:13 verbose #14875 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:13 verbose #14876 > > 00:14:13 verbose #14877 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:13 verbose #14878 > > inl to_vec forall k v. (map : hash_map k v) : am'.vec (k * v) = 00:14:13 verbose #14879 > > !\\(map, $'"$0.into_iter().map(|(k, v)| (k, v)).collect::<Vec<_>>()"') 00:14:13 verbose #14880 > > 00:14:13 verbose #14881 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:13 verbose #14882 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:13 verbose #14883 > > │ ## fsharp │ 00:14:13 verbose #14884 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:13 verbose #14885 > > 00:14:13 verbose #14886 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:13 verbose #14887 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:13 verbose #14888 > > │ ### map │ 00:14:13 verbose #14889 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:13 verbose #14890 > > 00:14:13 verbose #14891 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:13 verbose #14892 > > nominal map k v = $'Map<`k, `v>' 00:14:13 verbose #14893 > > 00:14:13 verbose #14894 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:13 verbose #14895 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:13 verbose #14896 > > │ ### item │ 00:14:13 verbose #14897 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:13 verbose #14898 > > 00:14:13 verbose #14899 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:13 verbose #14900 > > inl item forall k v. (k : k) (map : map k v) : v = 00:14:13 verbose #14901 > > $'!map.[[!k]]' 00:14:13 verbose #14902 > > 00:14:13 verbose #14903 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:13 verbose #14904 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:13 verbose #14905 > > │ ### of_array │ 00:14:13 verbose #14906 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:13 verbose #14907 > > 00:14:13 verbose #14908 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:13 verbose #14909 > > inl of_array forall k v. (array : a _ (k * v)) : map k v = 00:14:13 verbose #14910 > > $'!array |> Array.map (fun (struct (a, b)) -> a, b) |> Map.ofArray' 00:14:13 verbose #14911 > 00:00:06 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 12286 } 00:14:13 verbose #14912 > 00:00:06 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:14:13 verbose #14913 > "nbconvert", 00:14:13 verbose #14914 > "/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.ipynb", 00:14:13 verbose #14915 > "--to", 00:14:13 verbose #14916 > "html", 00:14:13 verbose #14917 > "--HTMLExporter.theme=dark", 00:14:13 verbose #14918 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:14:14 verbose #14919 > 00:00:07 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.ipynb to html 00:14:14 verbose #14920 > 00:00:07 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:14:14 verbose #14921 > 00:00:07 verbose #7 ! validate(nb) 00:14:14 verbose #14922 > 00:00:07 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:14:14 verbose #14923 > 00:00:07 verbose #9 ! return _pygments_highlight( 00:14:15 verbose #14924 > 00:00:07 verbose #10 ! [NbConvertApp] Writing 301372 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.html 00:14:15 verbose #14925 > 00:00:07 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 } 00:14:15 verbose #14926 > 00:00:07 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 } 00:14:15 verbose #14927 > 00:00:07 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:14:15 verbose #14928 > "-c", 00:14:15 verbose #14929 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:14:15 verbose #14930 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:14:15 verbose #14931 > 00:00:08 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:14:15 verbose #14932 > 00:00:08 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:14:15 verbose #14933 > 00:00:08 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 13237 } 00:14:15 debug #14934 runtime.execute_with_options_async / { exit_code = 0; output_length = 16441 } 00:14:15 debug #18 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path mapm.dib --retries 3 00:14:15 debug #14935 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path optionm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:14:15 verbose #14936 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "optionm'.dib", "--retries", "3"])) } 00:14:15 verbose #14937 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:14:15 verbose #14938 > "repl", 00:14:15 verbose #14939 > "--exit-after-run", 00:14:15 verbose #14940 > "--run", 00:14:15 verbose #14941 > "/home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib", 00:14:15 verbose #14942 > "--output-path", 00:14:15 verbose #14943 > "/home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib.ipynb", 00:14:15 verbose #14944 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:14:16 verbose #14945 > > 00:14:16 verbose #14946 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:16 verbose #14947 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:16 verbose #14948 > > │ # optionm' │ 00:14:16 verbose #14949 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:19 verbose #14950 > > 00:14:19 verbose #14951 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:19 verbose #14952 > > open rust 00:14:19 verbose #14953 > > open rust_operators 00:14:19 verbose #14954 > > 00:14:19 verbose #14955 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:19 verbose #14956 > > //// test 00:14:19 verbose #14957 > > 00:14:19 verbose #14958 > > open testing 00:14:19 verbose #14959 > > 00:14:19 verbose #14960 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:19 verbose #14961 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:19 verbose #14962 > > │ ## optionm' │ 00:14:19 verbose #14963 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:19 verbose #14964 > > 00:14:19 verbose #14965 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:19 verbose #14966 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:19 verbose #14967 > > │ ### default_value │ 00:14:19 verbose #14968 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:19 verbose #14969 > > 00:14:19 verbose #14970 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:19 verbose #14971 > > inl default_value d = 00:14:19 verbose #14972 > > optionm.defaultWith d 00:14:20 verbose #14973 > > 00:14:20 verbose #14974 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:20 verbose #14975 > > //// test 00:14:20 verbose #14976 > > 00:14:20 verbose #14977 > > None 00:14:20 verbose #14978 > > |> default_value 3i32 00:14:20 verbose #14979 > > |> _assert_eq 3i32 00:14:20 verbose #14980 > > 00:14:20 verbose #14981 > > ╭─[ 687.79ms - stdout ]────────────────────────────────────────────────────────╮ 00:14:20 verbose #14982 > > │ __assert_eq / actual: 3 / expected: 3 │ 00:14:20 verbose #14983 > > │ │ 00:14:20 verbose #14984 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:20 verbose #14985 > > 00:14:20 verbose #14986 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:20 verbose #14987 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:20 verbose #14988 > > │ ### (/??) │ 00:14:20 verbose #14989 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:20 verbose #14990 > > 00:14:20 verbose #14991 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:20 verbose #14992 > > inl (/??) a b = 00:14:20 verbose #14993 > > a |> default_value b 00:14:20 verbose #14994 > > 00:14:20 verbose #14995 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:20 verbose #14996 > > //// test 00:14:20 verbose #14997 > > 00:14:20 verbose #14998 > > None /?? 3i32 00:14:20 verbose #14999 > > |> _assert_eq 3i32 00:14:20 verbose #15000 > > 00:14:20 verbose #15001 > > ╭─[ 93.94ms - stdout ]─────────────────────────────────────────────────────────╮ 00:14:20 verbose #15002 > > │ __assert_eq / actual: 3 / expected: 3 │ 00:14:20 verbose #15003 > > │ │ 00:14:20 verbose #15004 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:20 verbose #15005 > > 00:14:20 verbose #15006 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:20 verbose #15007 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:20 verbose #15008 > > │ ### default_with │ 00:14:20 verbose #15009 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:20 verbose #15010 > > 00:14:20 verbose #15011 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:20 verbose #15012 > > inl default_with fn = function 00:14:20 verbose #15013 > > | Some x => x 00:14:20 verbose #15014 > > | None => fn () 00:14:20 verbose #15015 > > 00:14:20 verbose #15016 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:20 verbose #15017 > > //// test 00:14:20 verbose #15018 > > 00:14:20 verbose #15019 > > None 00:14:20 verbose #15020 > > |> default_with fun () => 3i32 00:14:20 verbose #15021 > > |> _assert_eq 3i32 00:14:21 verbose #15022 > > 00:14:21 verbose #15023 > > ╭─[ 96.05ms - stdout ]─────────────────────────────────────────────────────────╮ 00:14:21 verbose #15024 > > │ __assert_eq / actual: 3 / expected: 3 │ 00:14:21 verbose #15025 > > │ │ 00:14:21 verbose #15026 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:21 verbose #15027 > > 00:14:21 verbose #15028 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:21 verbose #15029 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:21 verbose #15030 > > │ ### choose │ 00:14:21 verbose #15031 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:21 verbose #15032 > > 00:14:21 verbose #15033 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:21 verbose #15034 > > inl choose fn a b = 00:14:21 verbose #15035 > > match a, b with 00:14:21 verbose #15036 > > | Some x, Some y => fn x y |> Some 00:14:21 verbose #15037 > > | _ => None 00:14:21 verbose #15038 > > 00:14:21 verbose #15039 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:21 verbose #15040 > > //// test 00:14:21 verbose #15041 > > 00:14:21 verbose #15042 > > (Some 2i32, Some 3) 00:14:21 verbose #15043 > > ||> choose (+) 00:14:21 verbose #15044 > > |> _assert_eq (Some 5) 00:14:21 verbose #15045 > > 00:14:21 verbose #15046 > > ╭─[ 405.56ms - stdout ]────────────────────────────────────────────────────────╮ 00:14:21 verbose #15047 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5 │ 00:14:21 verbose #15048 > > │ │ 00:14:21 verbose #15049 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:21 verbose #15050 > > 00:14:21 verbose #15051 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:21 verbose #15052 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:21 verbose #15053 > > │ ### iter │ 00:14:21 verbose #15054 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:21 verbose #15055 > > 00:14:21 verbose #15056 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:21 verbose #15057 > > inl iter fn = function 00:14:21 verbose #15058 > > | Some x => fn x 00:14:21 verbose #15059 > > | None => () 00:14:21 verbose #15060 > > 00:14:21 verbose #15061 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:21 verbose #15062 > > //// test 00:14:21 verbose #15063 > > 00:14:21 verbose #15064 > > inl n = mut 1i32 00:14:21 verbose #15065 > > inl fn = 00:14:21 verbose #15066 > > fun n' => 00:14:21 verbose #15067 > > n <- *n + n' 00:14:21 verbose #15068 > > Some 1i32 |> iter fn 00:14:21 verbose #15069 > > None |> iter fn 00:14:21 verbose #15070 > > *n 00:14:21 verbose #15071 > > |> _assert_eq 2i32 00:14:21 verbose #15072 > > 00:14:21 verbose #15073 > > ╭─[ 198.39ms - stdout ]────────────────────────────────────────────────────────╮ 00:14:21 verbose #15074 > > │ __assert_eq / actual: 2 / expected: 2 │ 00:14:21 verbose #15075 > > │ │ 00:14:21 verbose #15076 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:21 verbose #15077 > > 00:14:21 verbose #15078 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:21 verbose #15079 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:21 verbose #15080 > > │ ### flatten │ 00:14:21 verbose #15081 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:21 verbose #15082 > > 00:14:21 verbose #15083 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:21 verbose #15084 > > inl flatten x = 00:14:21 verbose #15085 > > match x with 00:14:21 verbose #15086 > > | Some (Some x) => Some x 00:14:21 verbose #15087 > > | _ => None 00:14:21 verbose #15088 > > 00:14:21 verbose #15089 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:21 verbose #15090 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:21 verbose #15091 > > │ ## fsharp │ 00:14:21 verbose #15092 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:21 verbose #15093 > > 00:14:21 verbose #15094 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:21 verbose #15095 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:21 verbose #15096 > > │ ### option' │ 00:14:21 verbose #15097 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:21 verbose #15098 > > 00:14:21 verbose #15099 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:21 verbose #15100 > > nominal option' t = $"backend_switch `({ Fsharp : $"`t option"; Python : t })" 00:14:22 verbose #15101 > > 00:14:22 verbose #15102 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:22 verbose #15103 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:22 verbose #15104 > > │ ### none' │ 00:14:22 verbose #15105 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:22 verbose #15106 > > 00:14:22 verbose #15107 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:22 verbose #15108 > > inl none' forall t. () : option' t = 00:14:22 verbose #15109 > > $'None' 00:14:22 verbose #15110 > > 00:14:22 verbose #15111 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:22 verbose #15112 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:22 verbose #15113 > > │ ### some' │ 00:14:22 verbose #15114 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:22 verbose #15115 > > 00:14:22 verbose #15116 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:22 verbose #15117 > > inl some' forall t. (x : t) : option' t = 00:14:22 verbose #15118 > > backend_switch { 00:14:22 verbose #15119 > > Fsharp = fun () => $'Some !x ' : option' t 00:14:22 verbose #15120 > > Python = fun () => $'!x # some\' ' : option' t 00:14:22 verbose #15121 > > } 00:14:22 verbose #15122 > > 00:14:22 verbose #15123 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:22 verbose #15124 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:22 verbose #15125 > > │ ### default_value' │ 00:14:22 verbose #15126 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:22 verbose #15127 > > 00:14:22 verbose #15128 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:22 verbose #15129 > > inl default_value' forall t. (value : t) (x : option' t) : t = 00:14:22 verbose #15130 > > backend_switch { 00:14:22 verbose #15131 > > Fsharp = fun () => $'!x |> Option.defaultValue !value ' : t 00:14:22 verbose #15132 > > Python = fun () => $'!x or !value ' : t 00:14:22 verbose #15133 > > } 00:14:22 verbose #15134 > > 00:14:22 verbose #15135 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:22 verbose #15136 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:22 verbose #15137 > > │ ### box │ 00:14:22 verbose #15138 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:22 verbose #15139 > > 00:14:22 verbose #15140 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:22 verbose #15141 > > inl box forall t. (x : option t) : option' t = 00:14:22 verbose #15142 > > // x 00:14:22 verbose #15143 > > // |> optionm.map some' 00:14:22 verbose #15144 > > // |> default_with none' 00:14:22 verbose #15145 > > match x with 00:14:22 verbose #15146 > > | Some x => some' x 00:14:22 verbose #15147 > > | None => none' () 00:14:22 verbose #15148 > > 00:14:22 verbose #15149 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:22 verbose #15150 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:22 verbose #15151 > > │ ### map │ 00:14:22 verbose #15152 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:22 verbose #15153 > > 00:14:22 verbose #15154 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:22 verbose #15155 > > inl map forall t u. (fn : t -> u) (x : option' t) : option' u = 00:14:22 verbose #15156 > > backend_switch { 00:14:22 verbose #15157 > > Fsharp = fun () => 00:14:22 verbose #15158 > > inl result : option' u = none' () 00:14:22 verbose #15159 > > $'let _!result = ref !result ' 00:14:22 verbose #15160 > > inl set_result (result : ref (option' u)) (x : option' u) : ref 00:14:22 verbose #15161 > > (option' u) = 00:14:22 verbose #15162 > > result |> ref_set_value x 00:14:22 verbose #15163 > > inl set_result = set_result $'_!result ' |> dyn 00:14:22 verbose #15164 > > fun () => 00:14:22 verbose #15165 > > $'match !x with' 00:14:22 verbose #15166 > > $'| Some x -> (' 00:14:22 verbose #15167 > > $'(fun () ->' 00:14:22 verbose #15168 > > $'(fun () ->' 00:14:22 verbose #15169 > > inl x = dyn $'x' 00:14:22 verbose #15170 > > x |> fn |> emit_unit 00:14:22 verbose #15171 > > $')' 00:14:22 verbose #15172 > > $'|> fun x -> x () |> Some' 00:14:22 verbose #15173 > > $') () ) | None -> None' 00:14:22 verbose #15174 > > $'|> !set_result |> ignore' 00:14:22 verbose #15175 > > |> exec_unit 00:14:22 verbose #15176 > > $'_!result.Value ' : option' u 00:14:22 verbose #15177 > > Python = fun () => 00:14:22 verbose #15178 > > if x =. none' () 00:14:22 verbose #15179 > > then none' () 00:14:22 verbose #15180 > > else fn $'!x ' |> fun x => $'!x ' : option' u 00:14:22 verbose #15181 > > } 00:14:22 verbose #15182 > > 00:14:22 verbose #15183 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:22 verbose #15184 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:22 verbose #15185 > > │ ### map'' │ 00:14:22 verbose #15186 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:22 verbose #15187 > > 00:14:22 verbose #15188 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:22 verbose #15189 > > inl map'' forall t u. (fn : t -> u) (x : option' t) : option' u = 00:14:22 verbose #15190 > > backend_switch { 00:14:22 verbose #15191 > > Fsharp = fun () => $'!x |> Option.map !fn ' : option' u 00:14:22 verbose #15192 > > Python = fun () => x |> map fn 00:14:22 verbose #15193 > > } 00:14:22 verbose #15194 > > 00:14:22 verbose #15195 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:22 verbose #15196 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:22 verbose #15197 > > │ ### unbox │ 00:14:22 verbose #15198 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:22 verbose #15199 > > 00:14:22 verbose #15200 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:22 verbose #15201 > > inl unbox forall t. (x : option' t) : option t = 00:14:22 verbose #15202 > > x |> map Some |> default_value' None 00:14:22 verbose #15203 > > // inl some x : option t = Some x 00:14:22 verbose #15204 > > // inl some = join some 00:14:22 verbose #15205 > > // inl none : option t = None 00:14:22 verbose #15206 > > // $'!x |> Option.map !some |> Option.defaultValue !none ' 00:14:22 verbose #15207 > > 00:14:22 verbose #15208 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:22 verbose #15209 > > //// test 00:14:22 verbose #15210 > > ///! fsharp 00:14:22 verbose #15211 > > ///! cuda 00:14:22 verbose #15212 > > ///! rust 00:14:22 verbose #15213 > > ///! typescript 00:14:22 verbose #15214 > > ///! python 00:14:22 verbose #15215 > > 00:14:22 verbose #15216 > > inl x = Some 3i32 00:14:22 verbose #15217 > > inl y : option i32 = None 00:14:22 verbose #15218 > > inl x' = x |> box |> unbox 00:14:22 verbose #15219 > > inl y' = y |> box |> map id |> unbox 00:14:22 verbose #15220 > > (x', y') |> _assert_eq' (x, y) 00:14:34 verbose #15221 > > 00:14:34 verbose #15222 > > ╭─[ 11.44s - return value ]────────────────────────────────────────────────────╮ 00:14:34 verbose #15223 > > │ .py output (Cuda): │ 00:14:34 verbose #15224 > > │ __assert_eq' / actual: (US0_0(v0=3), US0_1()) / expected: (US0_0(v0=3), │ 00:14:34 verbose #15225 > > │ US0_1()) │ 00:14:34 verbose #15226 > > │ │ 00:14:34 verbose #15227 > > │ .rs output: │ 00:14:34 verbose #15228 > > │ __assert_eq' / actual: (US0_0(3), US0_1) / expected: (US0_0(3), US0_1) │ 00:14:34 verbose #15229 > > │ │ 00:14:34 verbose #15230 > > │ .ts output: │ 00:14:34 verbose #15231 > > │ __assert_eq' / actual: US0_0 3,US0_1 / expected: US0_0 3,US0_1 │ 00:14:34 verbose #15232 > > │ │ 00:14:34 verbose #15233 > > │ .py output: │ 00:14:34 verbose #15234 > > │ __assert_eq' / actual: (US0_0 3, US0_1) / expected: (US0_0 3, US0_1) │ 00:14:34 verbose #15235 > > │ │ 00:14:34 verbose #15236 > > │ │ 00:14:34 verbose #15237 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:34 verbose #15238 > > 00:14:34 verbose #15239 > > ╭─[ 11.44s - stdout ]──────────────────────────────────────────────────────────╮ 00:14:34 verbose #15240 > > │ .fsx output: │ 00:14:34 verbose #15241 > > │ __assert_eq' / actual: struct (US0_0 3, US0_1) / expected: struct (US0_0 3, │ 00:14:34 verbose #15242 > > │ US0_1) │ 00:14:34 verbose #15243 > > │ │ 00:14:34 verbose #15244 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:34 verbose #15245 > > 00:14:34 verbose #15246 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:34 verbose #15247 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:34 verbose #15248 > > │ ### of_obj │ 00:14:34 verbose #15249 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:34 verbose #15250 > > 00:14:34 verbose #15251 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:34 verbose #15252 > > inl of_obj forall t. (x : t) : option' t = 00:14:34 verbose #15253 > > backend_switch { 00:14:34 verbose #15254 > > Fsharp = fun () => 00:14:34 verbose #15255 > > $'let mutable _!x = None' 00:14:34 verbose #15256 > > $'#if \!FABLE_COMPILER && \!WASM && \!CONTRACT' 00:14:34 verbose #15257 > > ((x |> $'Option.ofObj') : option' t) |> emit_unit 00:14:34 verbose #15258 > > $'#else' 00:14:34 verbose #15259 > > $'Some !x ' 00:14:34 verbose #15260 > > $'#endif' 00:14:34 verbose #15261 > > $'|> fun x -> _!x <- Some x' 00:14:34 verbose #15262 > > $'match _!x with Some x -> x | None -> failwith "optionm\'.of_obj 00:14:34 verbose #15263 > > _!x=None"' : option' t 00:14:34 verbose #15264 > > Python = fun () => 00:14:34 verbose #15265 > > $'!x ' : option' t 00:14:34 verbose #15266 > > } 00:14:34 verbose #15267 > > 00:14:34 verbose #15268 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:34 verbose #15269 > > //// test 00:14:34 verbose #15270 > > ///! fsharp 00:14:34 verbose #15271 > > ///! cuda 00:14:34 verbose #15272 > > ////! rust // attempted to zero-initialize type `alloc::sync::Arc<dyn 00:14:34 verbose #15273 > > core::any::Any>`, which is invalid 00:14:34 verbose #15274 > > ///! typescript 00:14:34 verbose #15275 > > ///! python 00:14:34 verbose #15276 > > 00:14:34 verbose #15277 > > null () 00:14:34 verbose #15278 > > |> of_obj 00:14:34 verbose #15279 > > |> unbox 00:14:34 verbose #15280 > > |> _assert_eq (None : option string) 00:14:42 verbose #15281 > > 00:14:42 verbose #15282 > > ╭─[ 8.56s - return value ]─────────────────────────────────────────────────────╮ 00:14:42 verbose #15283 > > │ .py output (Cuda): │ 00:14:42 verbose #15284 > > │ __assert_eq / actual: US0_1() / expected: US0_1() │ 00:14:42 verbose #15285 > > │ │ 00:14:42 verbose #15286 > > │ .ts output: │ 00:14:42 verbose #15287 > > │ __assert_eq / actual: US0_1 / expected: US0_1 │ 00:14:42 verbose #15288 > > │ │ 00:14:42 verbose #15289 > > │ .py output: │ 00:14:42 verbose #15290 > > │ __assert_eq / actual: US0_1 / expected: US0_1 │ 00:14:42 verbose #15291 > > │ │ 00:14:42 verbose #15292 > > │ │ 00:14:42 verbose #15293 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:42 verbose #15294 > > 00:14:42 verbose #15295 > > ╭─[ 8.56s - stdout ]───────────────────────────────────────────────────────────╮ 00:14:42 verbose #15296 > > │ .fsx output: │ 00:14:42 verbose #15297 > > │ __assert_eq / actual: US0_1 / expected: US0_1 │ 00:14:42 verbose #15298 > > │ │ 00:14:42 verbose #15299 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:42 verbose #15300 > > 00:14:42 verbose #15301 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:42 verbose #15302 > > //// test 00:14:42 verbose #15303 > > ///! fsharp 00:14:42 verbose #15304 > > ///! cuda 00:14:42 verbose #15305 > > ///! rust 00:14:42 verbose #15306 > > ///! typescript 00:14:42 verbose #15307 > > ///! python 00:14:42 verbose #15308 > > 00:14:42 verbose #15309 > > "" 00:14:42 verbose #15310 > > |> of_obj 00:14:42 verbose #15311 > > |> unbox 00:14:42 verbose #15312 > > |> _assert_eq' (Some "") 00:14:54 verbose #15313 > > 00:14:54 verbose #15314 > > ╭─[ 11.35s - return value ]────────────────────────────────────────────────────╮ 00:14:54 verbose #15315 > > │ .py output (Cuda): │ 00:14:54 verbose #15316 > > │ __assert_eq' / actual: US0_0(v0='') / expected: US0_0(v0='') │ 00:14:54 verbose #15317 > > │ │ 00:14:54 verbose #15318 > > │ .rs output: │ 00:14:54 verbose #15319 > > │ __assert_eq' / actual: US0_0("") / expected: US0_0("") │ 00:14:54 verbose #15320 > > │ │ 00:14:54 verbose #15321 > > │ .ts output: │ 00:14:54 verbose #15322 > > │ __assert_eq' / actual: US0_0 / expected: US0_0 │ 00:14:54 verbose #15323 > > │ │ 00:14:54 verbose #15324 > > │ .py output: │ 00:14:54 verbose #15325 > > │ __assert_eq' / actual: US0_0 "" / expected: US0_0 "" │ 00:14:54 verbose #15326 > > │ │ 00:14:54 verbose #15327 > > │ │ 00:14:54 verbose #15328 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:54 verbose #15329 > > 00:14:54 verbose #15330 > > ╭─[ 11.35s - stdout ]──────────────────────────────────────────────────────────╮ 00:14:54 verbose #15331 > > │ .fsx output: │ 00:14:54 verbose #15332 > > │ __assert_eq' / actual: US0_0 "" / expected: US0_0 "" │ 00:14:54 verbose #15333 > > │ │ 00:14:54 verbose #15334 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:54 verbose #15335 > > 00:14:54 verbose #15336 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:54 verbose #15337 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:54 verbose #15338 > > │ ### flatten' │ 00:14:54 verbose #15339 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:54 verbose #15340 > > 00:14:54 verbose #15341 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:54 verbose #15342 > > inl flatten' x = 00:14:54 verbose #15343 > > x 00:14:54 verbose #15344 > > |> unbox 00:14:54 verbose #15345 > > |> optionm.map unbox 00:14:54 verbose #15346 > > |> flatten 00:14:54 verbose #15347 > > 00:14:54 verbose #15348 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:54 verbose #15349 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:54 verbose #15350 > > │ ## rust │ 00:14:54 verbose #15351 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:54 verbose #15352 > > 00:14:54 verbose #15353 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:54 verbose #15354 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:54 verbose #15355 > > │ ### try' │ 00:14:54 verbose #15356 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:54 verbose #15357 > > 00:14:54 verbose #15358 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:54 verbose #15359 > > inl try' forall t. (x : option' t) : t = 00:14:54 verbose #15360 > > !\\(x, $'"$0?"') 00:14:54 verbose #15361 > > 00:14:54 verbose #15362 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:54 verbose #15363 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:54 verbose #15364 > > │ ### map' │ 00:14:54 verbose #15365 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:54 verbose #15366 > > 00:14:54 verbose #15367 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:54 verbose #15368 > > inl map' forall t u. (fn : t -> u) (x : option' t) : option' u = 00:14:54 verbose #15369 > > (!\\(x, $'"true; let _optionm_map_ = $0.map(|x| { //"') : bool) |> ignore 00:14:54 verbose #15370 > > inl result = fn !\($'"x"') 00:14:54 verbose #15371 > > (!\\(result, $'"true; $0 })"') : bool) |> ignore 00:14:54 verbose #15372 > > !\($'"_optionm_map_"') 00:14:54 verbose #15373 > > 00:14:54 verbose #15374 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:54 verbose #15375 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:54 verbose #15376 > > │ ### unwrap │ 00:14:54 verbose #15377 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:54 verbose #15378 > > 00:14:54 verbose #15379 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:54 verbose #15380 > > inl unwrap forall t. (x : option' t) : t = 00:14:54 verbose #15381 > > !\\(x, $'"$0.unwrap()"') 00:14:54 verbose #15382 > > 00:14:54 verbose #15383 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:54 verbose #15384 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:54 verbose #15385 > > │ ### take │ 00:14:54 verbose #15386 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:54 verbose #15387 > > 00:14:54 verbose #15388 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:54 verbose #15389 > > inl take forall t. (x : option' t) : option' t = 00:14:54 verbose #15390 > > (!\\(x, $'"true; let mut !x = !x"') : bool) |> ignore 00:14:54 verbose #15391 > > !\\(x, $'"Option::take(&mut $0)"') 00:14:54 verbose #15392 > > 00:14:54 verbose #15393 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:54 verbose #15394 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:54 verbose #15395 > > │ ### take_ref │ 00:14:54 verbose #15396 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:54 verbose #15397 > > 00:14:54 verbose #15398 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:54 verbose #15399 > > inl take_ref forall t. (x : rust.ref (option' t)) : option' t = 00:14:54 verbose #15400 > > (!\\(x, $'"true; let mut !x = !x"') : bool) |> ignore 00:14:54 verbose #15401 > > !\\(x, $'"Option::take(&mut $0)"') 00:14:54 verbose #15402 > > 00:14:54 verbose #15403 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:54 verbose #15404 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:54 verbose #15405 > > │ ### take_ref_mut │ 00:14:54 verbose #15406 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:54 verbose #15407 > > 00:14:54 verbose #15408 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:54 verbose #15409 > > inl take_ref_mut forall t. (x : rust.ref (rust.mut' (option' t))) : option' t = 00:14:54 verbose #15410 > > !\\(x, $'"Option::take($0)"') 00:14:54 verbose #15411 > > 00:14:54 verbose #15412 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:54 verbose #15413 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:54 verbose #15414 > > │ ### as_ref │ 00:14:54 verbose #15415 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:54 verbose #15416 > > 00:14:54 verbose #15417 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:54 verbose #15418 > > inl as_ref forall t. (x : rust.ref (option' t)) : option' (rust.ref t) = 00:14:54 verbose #15419 > > !\\(x, $'"$0.as_ref()"') 00:14:54 verbose #15420 > > 00:14:54 verbose #15421 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:54 verbose #15422 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:54 verbose #15423 > > │ ### as_mut │ 00:14:54 verbose #15424 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:54 verbose #15425 > > 00:14:54 verbose #15426 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:54 verbose #15427 > > inl as_mut forall t. (x : rust.ref (rust.mut' (option' t))) : option' (rust.ref 00:14:54 verbose #15428 > > (rust.mut' t)) = 00:14:54 verbose #15429 > > !\\(x, $'"$0.as_mut()"') 00:14:54 verbose #15430 > > 00:14:54 verbose #15431 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:54 verbose #15432 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:54 verbose #15433 > > │ ### unwrap_or │ 00:14:54 verbose #15434 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:54 verbose #15435 > > 00:14:54 verbose #15436 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:54 verbose #15437 > > inl unwrap_or forall t. (def : t) (x : option' t) : t = 00:14:54 verbose #15438 > > !\($'"!x.unwrap_or(!def)"') 00:14:54 verbose #15439 > > 00:14:54 verbose #15440 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:54 verbose #15441 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:54 verbose #15442 > > │ ### and_then │ 00:14:54 verbose #15443 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:54 verbose #15444 > > 00:14:54 verbose #15445 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:54 verbose #15446 > > inl and_then forall t u. (fn : t -> option' u) (x : option' t) : option' u = 00:14:54 verbose #15447 > > !\\((x, fn), $'"$0.and_then(|x| $1(x))"') 00:14:54 verbose #15448 > > 00:14:54 verbose #15449 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:54 verbose #15450 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:54 verbose #15451 > > │ ### rc_upgrade │ 00:14:54 verbose #15452 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:54 verbose #15453 > > 00:14:54 verbose #15454 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:54 verbose #15455 > > inl rc_upgrade forall t. (x : rust.weak_rc t) : option' (rust.rc t) = 00:14:54 verbose #15456 > > !\\(x, $'"std::rc::Weak::upgrade(&$0)"') 00:14:55 verbose #15457 > > 00:14:55 verbose #15458 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:55 verbose #15459 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:14:55 verbose #15460 > > │ ### rc_into_inner │ 00:14:55 verbose #15461 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:14:55 verbose #15462 > > 00:14:55 verbose #15463 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:55 verbose #15464 > > inl rc_into_inner forall t. (x : rust.rc t) : option' t = 00:14:55 verbose #15465 > > !\\(x, $'"std::rc::Rc::into_inner($0)"') 00:14:55 verbose #15466 > > 00:14:55 verbose #15467 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:55 verbose #15468 > > //// test 00:14:55 verbose #15469 > > ///! rust 00:14:55 verbose #15470 > > 00:14:55 verbose #15471 > > rust.new_rc 0i32 00:14:55 verbose #15472 > > |> rc_into_inner 00:14:55 verbose #15473 > > |> unbox 00:14:55 verbose #15474 > > |> _assert_eq' (Some 0i32) 00:15:02 verbose #15475 > > 00:15:02 verbose #15476 > > ╭─[ 7.18s - return value ]─────────────────────────────────────────────────────╮ 00:15:02 verbose #15477 > > │ __assert_eq' / actual: US0_0(0) / expected: US0_0(0) │ 00:15:02 verbose #15478 > > │ │ 00:15:02 verbose #15479 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:02 verbose #15480 > 00:00:47 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 30808 } 00:15:02 verbose #15481 > 00:00:47 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:15:02 verbose #15482 > "nbconvert", 00:15:02 verbose #15483 > "/home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib.ipynb", 00:15:02 verbose #15484 > "--to", 00:15:02 verbose #15485 > "html", 00:15:02 verbose #15486 > "--HTMLExporter.theme=dark", 00:15:02 verbose #15487 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:15:03 verbose #15488 > 00:00:47 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib.ipynb to html 00:15:03 verbose #15489 > 00:00:47 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:15:03 verbose #15490 > 00:00:47 verbose #7 ! validate(nb) 00:15:03 verbose #15491 > 00:00:48 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:15:03 verbose #15492 > 00:00:48 verbose #9 ! return _pygments_highlight( 00:15:03 verbose #15493 > 00:00:48 verbose #10 ! [NbConvertApp] Writing 343180 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib.html 00:15:03 verbose #15494 > 00:00:48 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 900 } 00:15:03 verbose #15495 > 00:00:48 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 900 } 00:15:03 verbose #15496 > 00:00:48 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:15:03 verbose #15497 > "-c", 00:15:03 verbose #15498 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/optionm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:15:03 verbose #15499 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/optionm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:15:04 verbose #15500 > 00:00:48 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:15:04 verbose #15501 > 00:00:48 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:15:04 verbose #15502 > 00:00:48 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 31767 } 00:15:04 debug #15503 runtime.execute_with_options_async / { exit_code = 0; output_length = 35701 } 00:15:04 debug #19 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path optionm'.dib --retries 3 00:15:04 debug #15504 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path listm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:15:04 verbose #15505 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "listm'.dib", "--retries", "3"])) } 00:15:04 verbose #15506 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:15:04 verbose #15507 > "repl", 00:15:04 verbose #15508 > "--exit-after-run", 00:15:04 verbose #15509 > "--run", 00:15:04 verbose #15510 > "/home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib", 00:15:04 verbose #15511 > "--output-path", 00:15:04 verbose #15512 > "/home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib.ipynb", 00:15:04 verbose #15513 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:15:05 verbose #15514 > > 00:15:05 verbose #15515 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:05 verbose #15516 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:05 verbose #15517 > > │ # listm' │ 00:15:05 verbose #15518 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:07 verbose #15519 > > 00:15:07 verbose #15520 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:07 verbose #15521 > > //// test 00:15:07 verbose #15522 > > 00:15:07 verbose #15523 > > open testing 00:15:08 verbose #15524 > > 00:15:08 verbose #15525 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:08 verbose #15526 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:08 verbose #15527 > > │ ## listm' │ 00:15:08 verbose #15528 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:08 verbose #15529 > > 00:15:08 verbose #15530 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:08 verbose #15531 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:08 verbose #15532 > > │ ### append │ 00:15:08 verbose #15533 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:08 verbose #15534 > > 00:15:08 verbose #15535 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:08 verbose #15536 > > instance append list t = 00:15:08 verbose #15537 > > listm.append 00:15:08 verbose #15538 > > 00:15:08 verbose #15539 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:08 verbose #15540 > > //// test 00:15:08 verbose #15541 > > 00:15:08 verbose #15542 > > [[ "a"; "b" ]] ++ [[ "c"; "d" ]] 00:15:08 verbose #15543 > > |> _assert_eq [[ "a"; "b"; "c"; "d" ]] 00:15:09 verbose #15544 > > 00:15:09 verbose #15545 > > ╭─[ 1.00s - stdout ]───────────────────────────────────────────────────────────╮ 00:15:09 verbose #15546 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_1 ("c", UH0_1 ("d", │ 00:15:09 verbose #15547 > > │ UH0_0)))) / expected: UH0_1 ("a", UH0_1 ("b", UH0_1 ("c", UH0_1 ("d", │ 00:15:09 verbose #15548 > > │ UH0_0)))) │ 00:15:09 verbose #15549 > > │ │ 00:15:09 verbose #15550 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:09 verbose #15551 > > 00:15:09 verbose #15552 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:09 verbose #15553 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:09 verbose #15554 > > │ ### collect │ 00:15:09 verbose #15555 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:09 verbose #15556 > > 00:15:09 verbose #15557 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:09 verbose #15558 > > inl collect forall t r. (fn : t -> list r) (items : list t) : list r = 00:15:09 verbose #15559 > > items 00:15:09 verbose #15560 > > |> listm.map fn 00:15:09 verbose #15561 > > |> listm.fold (++) [[]] 00:15:09 verbose #15562 > > 00:15:09 verbose #15563 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:09 verbose #15564 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:09 verbose #15565 > > │ ### init_series │ 00:15:09 verbose #15566 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:09 verbose #15567 > > 00:15:09 verbose #15568 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:09 verbose #15569 > > inl init_series start end inc = 00:15:09 verbose #15570 > > inl total : f64 = conv ((end - start) / inc) + 1 00:15:09 verbose #15571 > > listm.init total (conv >> (*) inc >> (+) start) 00:15:09 verbose #15572 > > 00:15:09 verbose #15573 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:09 verbose #15574 > > //// test 00:15:09 verbose #15575 > > 00:15:09 verbose #15576 > > init_series 0 1 0.5 00:15:09 verbose #15577 > > |> _assert_eq [[ 0f64; 0.5; 1 ]] 00:15:09 verbose #15578 > > 00:15:09 verbose #15579 > > ╭─[ 132.34ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:09 verbose #15580 > > │ __assert_eq / actual: UH0_1 (0.0, UH0_1 (0.5, UH0_1 (1.0, UH0_0))) / │ 00:15:09 verbose #15581 > > │ expected: UH0_1 (0.0, UH0_1 (0.5, UH0_1 (1.0, UH0_0))) │ 00:15:09 verbose #15582 > > │ │ 00:15:09 verbose #15583 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:09 verbose #15584 > > 00:15:09 verbose #15585 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:09 verbose #15586 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:09 verbose #15587 > > │ ### try_item │ 00:15:09 verbose #15588 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:09 verbose #15589 > > 00:15:09 verbose #15590 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:09 verbose #15591 > > inl rec try_item i = function 00:15:09 verbose #15592 > > | Cons (x, _) when i = 0 => Some x 00:15:09 verbose #15593 > > | Cons (_, xs) => try_item (i - 1) xs 00:15:09 verbose #15594 > > | Nil => None 00:15:09 verbose #15595 > > 00:15:09 verbose #15596 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:09 verbose #15597 > > //// test 00:15:09 verbose #15598 > > 00:15:09 verbose #15599 > > listm.init 10i32 id 00:15:09 verbose #15600 > > |> try_item 9i32 00:15:09 verbose #15601 > > |> _assert_eq (Some 9) 00:15:10 verbose #15602 > > 00:15:10 verbose #15603 > > ╭─[ 144.97ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:10 verbose #15604 > > │ __assert_eq / actual: US0_0 9 / expected: US0_0 9 │ 00:15:10 verbose #15605 > > │ │ 00:15:10 verbose #15606 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:10 verbose #15607 > > 00:15:10 verbose #15608 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:10 verbose #15609 > > //// test 00:15:10 verbose #15610 > > 00:15:10 verbose #15611 > > listm.init 10i32 id 00:15:10 verbose #15612 > > |> try_item 10i32 00:15:10 verbose #15613 > > |> _assert_eq None 00:15:10 verbose #15614 > > 00:15:10 verbose #15615 > > ╭─[ 534.47ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:10 verbose #15616 > > │ __assert_eq / actual: US0_1 / expected: US0_1 │ 00:15:10 verbose #15617 > > │ │ 00:15:10 verbose #15618 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:10 verbose #15619 > > 00:15:10 verbose #15620 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:10 verbose #15621 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:10 verbose #15622 > > │ ### item │ 00:15:10 verbose #15623 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:10 verbose #15624 > > 00:15:10 verbose #15625 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:10 verbose #15626 > > inl item i = 00:15:10 verbose #15627 > > try_item i >> optionm.value 00:15:10 verbose #15628 > > 00:15:10 verbose #15629 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:10 verbose #15630 > > //// test 00:15:10 verbose #15631 > > 00:15:10 verbose #15632 > > listm.init 10i32 id 00:15:10 verbose #15633 > > |> item 9i32 00:15:10 verbose #15634 > > |> _assert_eq 9 00:15:10 verbose #15635 > > 00:15:10 verbose #15636 > > ╭─[ 93.33ms - stdout ]─────────────────────────────────────────────────────────╮ 00:15:10 verbose #15637 > > │ __assert_eq / actual: 9 / expected: 9 │ 00:15:10 verbose #15638 > > │ │ 00:15:10 verbose #15639 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:10 verbose #15640 > > 00:15:10 verbose #15641 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:10 verbose #15642 > > //// test 00:15:10 verbose #15643 > > 00:15:10 verbose #15644 > > fun () => 00:15:10 verbose #15645 > > listm.init 10i32 id 00:15:10 verbose #15646 > > |> item 10i32 00:15:10 verbose #15647 > > |> ignore 00:15:10 verbose #15648 > > |> _throws 00:15:10 verbose #15649 > > |> optionm.map sm'.format_exception 00:15:10 verbose #15650 > > |> _assert_eq (Some "System.Exception: Option does not have a value.") 00:15:11 verbose #15651 > > 00:15:11 verbose #15652 > > ╭─[ 227.86ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:11 verbose #15653 > > │ __assert_eq / actual: US1_0 "System.Exception: Option does not have a │ 00:15:11 verbose #15654 > > │ value." / expected: US1_0 "System.Exception: Option does not have a value." │ 00:15:11 verbose #15655 > > │ │ 00:15:11 verbose #15656 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:11 verbose #15657 > > 00:15:11 verbose #15658 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:11 verbose #15659 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:11 verbose #15660 > > │ ### try_item_ │ 00:15:11 verbose #15661 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:11 verbose #15662 > > 00:15:11 verbose #15663 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:11 verbose #15664 > > let rec try_item_ i = function 00:15:11 verbose #15665 > > | Cons (x, _) when i = 0 => Some x 00:15:11 verbose #15666 > > | Cons (_, xs) => try_item_ (i - 1) xs 00:15:11 verbose #15667 > > | Nil => None 00:15:11 verbose #15668 > > 00:15:11 verbose #15669 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:11 verbose #15670 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:11 verbose #15671 > > │ ### item_ │ 00:15:11 verbose #15672 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:11 verbose #15673 > > 00:15:11 verbose #15674 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:11 verbose #15675 > > inl item_ i = 00:15:11 verbose #15676 > > try_item_ i >> optionm.value 00:15:11 verbose #15677 > > 00:15:11 verbose #15678 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:11 verbose #15679 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:11 verbose #15680 > > │ ### sum │ 00:15:11 verbose #15681 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:11 verbose #15682 > > 00:15:11 verbose #15683 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:11 verbose #15684 > > inl sum list = 00:15:11 verbose #15685 > > list |> listm.fold (+) 0 00:15:11 verbose #15686 > > 00:15:11 verbose #15687 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:11 verbose #15688 > > //// test 00:15:11 verbose #15689 > > 00:15:11 verbose #15690 > > listm.init 10i32 id 00:15:11 verbose #15691 > > |> sum 00:15:11 verbose #15692 > > |> _assert_eq 45 00:15:11 verbose #15693 > > 00:15:11 verbose #15694 > > ╭─[ 98.71ms - stdout ]─────────────────────────────────────────────────────────╮ 00:15:11 verbose #15695 > > │ __assert_eq / actual: 45 / expected: 45 │ 00:15:11 verbose #15696 > > │ │ 00:15:11 verbose #15697 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:11 verbose #15698 > > 00:15:11 verbose #15699 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:11 verbose #15700 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:11 verbose #15701 > > │ ### unzip │ 00:15:11 verbose #15702 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:11 verbose #15703 > > 00:15:11 verbose #15704 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:11 verbose #15705 > > inl unzip list = 00:15:11 verbose #15706 > > (([[]], [[]]), list) 00:15:11 verbose #15707 > > ||> listm.fold fun (acc_x, acc_y) (x, y) => 00:15:11 verbose #15708 > > x :: acc_x, y :: acc_y 00:15:11 verbose #15709 > > |> fun x, y => 00:15:11 verbose #15710 > > x |> listm.rev, y |> listm.rev 00:15:11 verbose #15711 > > 00:15:11 verbose #15712 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:11 verbose #15713 > > //// test 00:15:11 verbose #15714 > > 00:15:11 verbose #15715 > > listm.init 10i32 id 00:15:11 verbose #15716 > > |> listm.map (fun x => x, x) 00:15:11 verbose #15717 > > |> unzip 00:15:11 verbose #15718 > > |> fun x, y => 00:15:11 verbose #15719 > > x |> sum 00:15:11 verbose #15720 > > |> _assert_eq 45 00:15:11 verbose #15721 > > 00:15:11 verbose #15722 > > y |> sum 00:15:11 verbose #15723 > > |> _assert_eq 45 00:15:11 verbose #15724 > > 00:15:11 verbose #15725 > > ╭─[ 101.58ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:11 verbose #15726 > > │ __assert_eq / actual: 45 / expected: 45 │ 00:15:11 verbose #15727 > > │ __assert_eq / actual: 45 / expected: 45 │ 00:15:11 verbose #15728 > > │ │ 00:15:11 verbose #15729 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:11 verbose #15730 > > 00:15:11 verbose #15731 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:11 verbose #15732 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:11 verbose #15733 > > │ ### try_index_of │ 00:15:11 verbose #15734 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:11 verbose #15735 > > 00:15:11 verbose #15736 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:11 verbose #15737 > > inl try_index_of item list = 00:15:11 verbose #15738 > > inl rec loop i = function 00:15:11 verbose #15739 > > | [[]] => None 00:15:11 verbose #15740 > > | x :: xs => 00:15:11 verbose #15741 > > if x = item 00:15:11 verbose #15742 > > then Some i 00:15:11 verbose #15743 > > else loop (i + 1) xs 00:15:11 verbose #15744 > > loop 0 list 00:15:11 verbose #15745 > > 00:15:11 verbose #15746 > > inl index_of item = 00:15:11 verbose #15747 > > try_index_of item >> optionm.value 00:15:11 verbose #15748 > > 00:15:11 verbose #15749 > > inl try_index_of_ item list = 00:15:11 verbose #15750 > > let rec loop i = function 00:15:11 verbose #15751 > > | [[]] => None 00:15:11 verbose #15752 > > | x :: xs => 00:15:11 verbose #15753 > > if x = item 00:15:11 verbose #15754 > > then Some i 00:15:11 verbose #15755 > > else loop (i + 1) xs 00:15:11 verbose #15756 > > loop 0 list 00:15:11 verbose #15757 > > 00:15:11 verbose #15758 > > inl index_of_ item = 00:15:11 verbose #15759 > > try_index_of_ item >> optionm.value 00:15:11 verbose #15760 > > 00:15:11 verbose #15761 > > inl try_index_of__ item list = 00:15:11 verbose #15762 > > inl i = mut 0 00:15:11 verbose #15763 > > inl list = mut list 00:15:11 verbose #15764 > > inl result = mut None 00:15:11 verbose #15765 > > let rec loop () = 00:15:11 verbose #15766 > > match *list with 00:15:11 verbose #15767 > > | [[]] => result <- None 00:15:11 verbose #15768 > > | x :: xs => 00:15:11 verbose #15769 > > if x = item 00:15:11 verbose #15770 > > then result <- Some *i 00:15:11 verbose #15771 > > else 00:15:11 verbose #15772 > > i <- *i + 1 00:15:11 verbose #15773 > > list <- xs 00:15:11 verbose #15774 > > loop () 00:15:11 verbose #15775 > > loop () 00:15:11 verbose #15776 > > *result 00:15:11 verbose #15777 > > 00:15:11 verbose #15778 > > inl index_of__ item = 00:15:11 verbose #15779 > > try_index_of__ item >> optionm.value 00:15:11 verbose #15780 > > 00:15:11 verbose #15781 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:11 verbose #15782 > > //// test 00:15:11 verbose #15783 > > 00:15:11 verbose #15784 > > listm.init 10i32 id 00:15:11 verbose #15785 > > |> index_of 5i32 00:15:11 verbose #15786 > > |> _assert_eq 5i32 00:15:11 verbose #15787 > > 00:15:11 verbose #15788 > > ╭─[ 99.29ms - stdout ]─────────────────────────────────────────────────────────╮ 00:15:11 verbose #15789 > > │ __assert_eq / actual: 5 / expected: 5 │ 00:15:11 verbose #15790 > > │ │ 00:15:11 verbose #15791 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:11 verbose #15792 > > 00:15:11 verbose #15793 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:11 verbose #15794 > > //// test 00:15:11 verbose #15795 > > 00:15:11 verbose #15796 > > listm.init 10i32 id 00:15:11 verbose #15797 > > |> try_index_of 10i32 00:15:11 verbose #15798 > > |> _assert_eq (None : option i32) 00:15:11 verbose #15799 > > 00:15:11 verbose #15800 > > ╭─[ 175.50ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:11 verbose #15801 > > │ __assert_eq / actual: US0_1 / expected: US0_1 │ 00:15:11 verbose #15802 > > │ │ 00:15:11 verbose #15803 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:11 verbose #15804 > > 00:15:11 verbose #15805 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:11 verbose #15806 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:11 verbose #15807 > > │ ### try_find │ 00:15:11 verbose #15808 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:11 verbose #15809 > > 00:15:11 verbose #15810 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:11 verbose #15811 > > inl try_find fn list = 00:15:11 verbose #15812 > > inl rec loop = function 00:15:11 verbose #15813 > > | [[]] => None 00:15:11 verbose #15814 > > | x :: xs => 00:15:11 verbose #15815 > > if fn x 00:15:11 verbose #15816 > > then Some x 00:15:11 verbose #15817 > > else loop xs 00:15:11 verbose #15818 > > loop list 00:15:11 verbose #15819 > > 00:15:11 verbose #15820 > > inl try_find_ fn list = 00:15:11 verbose #15821 > > let rec loop = function 00:15:11 verbose #15822 > > | [[]] => None 00:15:11 verbose #15823 > > | x :: xs => 00:15:11 verbose #15824 > > if fn x 00:15:11 verbose #15825 > > then Some x 00:15:11 verbose #15826 > > else loop xs 00:15:11 verbose #15827 > > loop list 00:15:12 verbose #15828 > > 00:15:12 verbose #15829 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:12 verbose #15830 > > //// test 00:15:12 verbose #15831 > > 00:15:12 verbose #15832 > > listm.init 10i32 id 00:15:12 verbose #15833 > > |> try_find ((=) 5i32) 00:15:12 verbose #15834 > > |> _assert_eq (Some 5i32) 00:15:12 verbose #15835 > > 00:15:12 verbose #15836 > > ╭─[ 114.65ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:12 verbose #15837 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5 │ 00:15:12 verbose #15838 > > │ │ 00:15:12 verbose #15839 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:12 verbose #15840 > > 00:15:12 verbose #15841 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:12 verbose #15842 > > inl find x = 00:15:12 verbose #15843 > > try_find x >> optionm.value 00:15:12 verbose #15844 > > 00:15:12 verbose #15845 > > inl find_ x = 00:15:12 verbose #15846 > > try_find_ x >> optionm.value 00:15:12 verbose #15847 > > 00:15:12 verbose #15848 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:12 verbose #15849 > > //// test 00:15:12 verbose #15850 > > 00:15:12 verbose #15851 > > listm.init 10i32 id 00:15:12 verbose #15852 > > |> find ((=) 5i32) 00:15:12 verbose #15853 > > |> _assert_eq 5i32 00:15:12 verbose #15854 > > 00:15:12 verbose #15855 > > ╭─[ 95.92ms - stdout ]─────────────────────────────────────────────────────────╮ 00:15:12 verbose #15856 > > │ __assert_eq / actual: 5 / expected: 5 │ 00:15:12 verbose #15857 > > │ │ 00:15:12 verbose #15858 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:12 verbose #15859 > > 00:15:12 verbose #15860 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:12 verbose #15861 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:12 verbose #15862 > > │ ### choose │ 00:15:12 verbose #15863 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:12 verbose #15864 > > 00:15:12 verbose #15865 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:12 verbose #15866 > > inl choose f l = 00:15:12 verbose #15867 > > (l, [[]]) 00:15:12 verbose #15868 > > ||> listm.foldBack fun x acc => 00:15:12 verbose #15869 > > match f x with 00:15:12 verbose #15870 > > | Some y => y :: acc 00:15:12 verbose #15871 > > | None => acc 00:15:12 verbose #15872 > > 00:15:12 verbose #15873 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:12 verbose #15874 > > //// test 00:15:12 verbose #15875 > > 00:15:12 verbose #15876 > > listm.init 10i32 id 00:15:12 verbose #15877 > > |> choose (fun x => if x % 2 = 0 then Some x else None) 00:15:12 verbose #15878 > > |> _assert_eq [[ 0; 2; 4; 6; 8 ]] 00:15:12 verbose #15879 > > 00:15:12 verbose #15880 > > ╭─[ 126.58ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:12 verbose #15881 > > │ __assert_eq / actual: UH0_1 (0, UH0_1 (2, UH0_1 (4, UH0_1 (6, UH0_1 (8, │ 00:15:12 verbose #15882 > > │ UH0_0))))) / expected: UH0_1 (0, UH0_1 (2, UH0_1 (4, UH0_1 (6, UH0_1 (8, │ 00:15:12 verbose #15883 > > │ UH0_0))))) │ 00:15:12 verbose #15884 > > │ │ 00:15:12 verbose #15885 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:12 verbose #15886 > > 00:15:12 verbose #15887 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:12 verbose #15888 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:12 verbose #15889 > > │ ### filter │ 00:15:12 verbose #15890 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:12 verbose #15891 > > 00:15:12 verbose #15892 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:12 verbose #15893 > > inl filter forall t. (fn : t -> bool) (list : list t) : list t = 00:15:12 verbose #15894 > > (list, Nil) 00:15:12 verbose #15895 > > ||> listm.foldBack fun x acc => 00:15:12 verbose #15896 > > if fn x then x :: acc else acc 00:15:12 verbose #15897 > > 00:15:12 verbose #15898 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:12 verbose #15899 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:12 verbose #15900 > > │ ### zip_with │ 00:15:12 verbose #15901 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:12 verbose #15902 > > 00:15:12 verbose #15903 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:12 verbose #15904 > > inl zip_with fn xs ys = 00:15:12 verbose #15905 > > inl rec loop acc xs ys = 00:15:12 verbose #15906 > > match xs, ys with 00:15:12 verbose #15907 > > | Cons (x, xs), Cons (y, ys) => 00:15:12 verbose #15908 > > loop (fn x y :: acc) xs ys 00:15:12 verbose #15909 > > | _ => listm.rev acc 00:15:12 verbose #15910 > > loop [[]] xs ys 00:15:12 verbose #15911 > > 00:15:12 verbose #15912 > > inl zip_with_ fn xs ys = 00:15:12 verbose #15913 > > let rec loop acc xs ys = 00:15:12 verbose #15914 > > match xs, ys with 00:15:12 verbose #15915 > > | Cons (x, xs), Cons (y, ys) => 00:15:12 verbose #15916 > > loop (fn x y :: acc) xs ys 00:15:12 verbose #15917 > > | _ => listm.rev acc 00:15:12 verbose #15918 > > loop [[]] xs ys 00:15:12 verbose #15919 > > 00:15:12 verbose #15920 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:12 verbose #15921 > > //// test 00:15:12 verbose #15922 > > 00:15:12 verbose #15923 > > ([[ 1i32; 2; 3 ]], [[ 4; 5; 6 ]]) 00:15:12 verbose #15924 > > ||> zip_with (+) 00:15:12 verbose #15925 > > |> _assert_eq [[ 5; 7; 9 ]] 00:15:12 verbose #15926 > > 00:15:12 verbose #15927 > > ╭─[ 124.31ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:12 verbose #15928 > > │ __assert_eq / actual: UH0_1 (5, UH0_1 (7, UH0_1 (9, UH0_0))) / expected: │ 00:15:12 verbose #15929 > > │ UH0_1 (5, UH0_1 (7, UH0_1 (9, UH0_0))) │ 00:15:12 verbose #15930 > > │ │ 00:15:12 verbose #15931 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:12 verbose #15932 > > 00:15:12 verbose #15933 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:12 verbose #15934 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:12 verbose #15935 > > │ ### zip │ 00:15:12 verbose #15936 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:12 verbose #15937 > > 00:15:12 verbose #15938 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:12 verbose #15939 > > inl zip xs ys = 00:15:12 verbose #15940 > > zip_with pair xs ys 00:15:12 verbose #15941 > > 00:15:12 verbose #15942 > > inl zip_ xs ys = 00:15:12 verbose #15943 > > zip_with_ pair xs ys 00:15:12 verbose #15944 > > 00:15:12 verbose #15945 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:12 verbose #15946 > > //// test 00:15:12 verbose #15947 > > 00:15:12 verbose #15948 > > ([[ 1i32; 2; 3 ]], [[ 4i32; 5; 6 ]]) 00:15:12 verbose #15949 > > ||> zip 00:15:12 verbose #15950 > > |> _assert_eq [[ 1, 4; 2, 5; 3, 6 ]] 00:15:13 verbose #15951 > > 00:15:13 verbose #15952 > > ╭─[ 150.17ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:13 verbose #15953 > > │ __assert_eq / actual: UH0_1 (1, 4, UH0_1 (2, 5, UH0_1 (3, 6, UH0_0))) / │ 00:15:13 verbose #15954 > > │ expected: UH0_1 (1, 4, UH0_1 (2, 5, UH0_1 (3, 6, UH0_0))) │ 00:15:13 verbose #15955 > > │ │ 00:15:13 verbose #15956 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:13 verbose #15957 > > 00:15:13 verbose #15958 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:13 verbose #15959 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:13 verbose #15960 > > │ ### indexed │ 00:15:13 verbose #15961 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:13 verbose #15962 > > 00:15:13 verbose #15963 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:13 verbose #15964 > > inl indexed list = 00:15:13 verbose #15965 > > (([[]], 0), list) 00:15:13 verbose #15966 > > ||> listm.fold fun (acc, i) x => 00:15:13 verbose #15967 > > (i, x) :: acc, i + 1 00:15:13 verbose #15968 > > |> fst 00:15:13 verbose #15969 > > |> listm.rev 00:15:13 verbose #15970 > > 00:15:13 verbose #15971 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:13 verbose #15972 > > //// test 00:15:13 verbose #15973 > > 00:15:13 verbose #15974 > > listm.init 5i32 ((*) 2) 00:15:13 verbose #15975 > > |> indexed 00:15:13 verbose #15976 > > |> _assert_eq [[ 0i32, 0; 1, 2; 2, 4; 3, 6; 4, 8 ]] 00:15:13 verbose #15977 > > 00:15:13 verbose #15978 > > ╭─[ 132.47ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:13 verbose #15979 > > │ __assert_eq / actual: UH0_1 (0, 0, UH0_1 (1, 2, UH0_1 (2, 4, UH0_1 (3, 6, │ 00:15:13 verbose #15980 > > │ UH0_1 (4, 8, UH0_0))))) / expected: UH0_1 (0, 0, UH0_1 (1, 2, UH0_1 (2, 4, │ 00:15:13 verbose #15981 > > │ UH0_1 (3, 6, UH0_1 (4, 8, UH0_0))))) │ 00:15:13 verbose #15982 > > │ │ 00:15:13 verbose #15983 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:13 verbose #15984 > > 00:15:13 verbose #15985 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:13 verbose #15986 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:13 verbose #15987 > > │ ### group_by │ 00:15:13 verbose #15988 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:13 verbose #15989 > > 00:15:13 verbose #15990 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:13 verbose #15991 > > inl group_by fn list = 00:15:13 verbose #15992 > > (list, [[]]) 00:15:13 verbose #15993 > > ||> listm.foldBack fun x acc => 00:15:13 verbose #15994 > > inl xk = fn x 00:15:13 verbose #15995 > > inl found, new_acc = 00:15:13 verbose #15996 > > ((false, [[]]), acc) 00:15:13 verbose #15997 > > ||> listm.fold fun (found, acc') (k, xs) => 00:15:13 verbose #15998 > > if k = xk 00:15:13 verbose #15999 > > then true, (k, x :: xs) :: acc' 00:15:13 verbose #16000 > > else found, (k, xs) :: acc' 00:15:13 verbose #16001 > > if found 00:15:13 verbose #16002 > > then new_acc 00:15:13 verbose #16003 > > else (xk, [[ x ]]) :: new_acc 00:15:13 verbose #16004 > > 00:15:13 verbose #16005 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:13 verbose #16006 > > //// test 00:15:13 verbose #16007 > > 00:15:13 verbose #16008 > > listm.init 10i32 id 00:15:13 verbose #16009 > > |> group_by (fun x => x % 2 = 0) 00:15:13 verbose #16010 > > |> _assert_eq [[ true, [[ 0; 2; 4; 6; 8 ]]; false, [[ 1; 3; 5; 7; 9 ]] ]] 00:15:13 verbose #16011 > > 00:15:13 verbose #16012 > > ╭─[ 183.80ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:13 verbose #16013 > > │ __assert_eq / actual: UH1_1 │ 00:15:13 verbose #16014 > > │ (true, UH0_1 (0, UH0_1 (2, UH0_1 (4, UH0_1 (6, UH0_1 (8, UH0_0))))), │ 00:15:13 verbose #16015 > > │ UH1_1 │ 00:15:13 verbose #16016 > > │ (false, UH0_1 (1, UH0_1 (3, UH0_1 (5, UH0_1 (7, UH0_1 (9, UH0_0))))), │ 00:15:13 verbose #16017 > > │ UH1_0)) / expected: UH1_1 │ 00:15:13 verbose #16018 > > │ (true, UH0_1 (0, UH0_1 (2, UH0_1 (4, UH0_1 (6, UH0_1 (8, UH0_0))))), │ 00:15:13 verbose #16019 > > │ UH1_1 │ 00:15:13 verbose #16020 > > │ (false, UH0_1 (1, UH0_1 (3, UH0_1 (5, UH0_1 (7, UH0_1 (9, UH0_0))))), │ 00:15:13 verbose #16021 > > │ UH1_0)) │ 00:15:13 verbose #16022 > > │ │ 00:15:13 verbose #16023 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:13 verbose #16024 > > 00:15:13 verbose #16025 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:13 verbose #16026 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:13 verbose #16027 > > │ ### forall' │ 00:15:13 verbose #16028 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:13 verbose #16029 > > 00:15:13 verbose #16030 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:13 verbose #16031 > > inl forall' fn (head :: tail) = 00:15:13 verbose #16032 > > (true, tail) 00:15:13 verbose #16033 > > ||> listm.fold fun acc x => 00:15:13 verbose #16034 > > acc && x = head 00:15:13 verbose #16035 > > 00:15:13 verbose #16036 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:13 verbose #16037 > > //// test 00:15:13 verbose #16038 > > 00:15:13 verbose #16039 > > [[ 1i32; 1; 1; 1; 1 ]] 00:15:13 verbose #16040 > > |> forall' ((=) 1i32) 00:15:13 verbose #16041 > > |> _assert_eq true 00:15:13 verbose #16042 > > 00:15:13 verbose #16043 > > ╭─[ 102.53ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:13 verbose #16044 > > │ __assert_eq / actual: true / expected: true │ 00:15:13 verbose #16045 > > │ │ 00:15:13 verbose #16046 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:13 verbose #16047 > > 00:15:13 verbose #16048 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:13 verbose #16049 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:13 verbose #16050 > > │ ### last │ 00:15:13 verbose #16051 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:13 verbose #16052 > > 00:15:13 verbose #16053 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:13 verbose #16054 > > inl last list = 00:15:13 verbose #16055 > > list 00:15:13 verbose #16056 > > |> listm.rev 00:15:13 verbose #16057 > > |> item 0i32 00:15:13 verbose #16058 > > 00:15:13 verbose #16059 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:13 verbose #16060 > > //// test 00:15:13 verbose #16061 > > 00:15:13 verbose #16062 > > listm.init 10i32 id 00:15:13 verbose #16063 > > |> last 00:15:13 verbose #16064 > > |> _assert_eq 9 00:15:14 verbose #16065 > > 00:15:14 verbose #16066 > > ╭─[ 100.56ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:14 verbose #16067 > > │ __assert_eq / actual: 9 / expected: 9 │ 00:15:14 verbose #16068 > > │ │ 00:15:14 verbose #16069 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:14 verbose #16070 > > 00:15:14 verbose #16071 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:14 verbose #16072 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:14 verbose #16073 > > │ ### try_pick │ 00:15:14 verbose #16074 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:14 verbose #16075 > > 00:15:14 verbose #16076 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:14 verbose #16077 > > inl try_pick fn list = 00:15:14 verbose #16078 > > inl rec body fn = function 00:15:14 verbose #16079 > > | [[]] => None 00:15:14 verbose #16080 > > | x :: xs => 00:15:14 verbose #16081 > > match fn x with 00:15:14 verbose #16082 > > | Some y => Some y 00:15:14 verbose #16083 > > | None => loop xs 00:15:14 verbose #16084 > > and inl loop list = 00:15:14 verbose #16085 > > if var_is list |> not 00:15:14 verbose #16086 > > then body fn list 00:15:14 verbose #16087 > > else 00:15:14 verbose #16088 > > inl fn = join fn 00:15:14 verbose #16089 > > inl list = dyn list 00:15:14 verbose #16090 > > join body fn list 00:15:14 verbose #16091 > > loop list 00:15:14 verbose #16092 > > 00:15:14 verbose #16093 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:14 verbose #16094 > > //// test 00:15:14 verbose #16095 > > 00:15:14 verbose #16096 > > listm.init 10i32 id 00:15:14 verbose #16097 > > |> try_pick (fun x => if x = 5i32 then Some x else None) 00:15:14 verbose #16098 > > |> _assert_eq (Some 5i32) 00:15:14 verbose #16099 > > 00:15:14 verbose #16100 > > ╭─[ 125.58ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:14 verbose #16101 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5 │ 00:15:14 verbose #16102 > > │ │ 00:15:14 verbose #16103 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:14 verbose #16104 > > 00:15:14 verbose #16105 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:14 verbose #16106 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:14 verbose #16107 > > │ ### exists' │ 00:15:14 verbose #16108 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:14 verbose #16109 > > 00:15:14 verbose #16110 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:14 verbose #16111 > > inl exists' f x = 00:15:14 verbose #16112 > > inl length_x : i64 = x |> listm.length 00:15:14 verbose #16113 > > let rec loop i = 00:15:14 verbose #16114 > > if i >= length_x 00:15:14 verbose #16115 > > then false 00:15:14 verbose #16116 > > elif x |> item i |> f 00:15:14 verbose #16117 > > then true 00:15:14 verbose #16118 > > else loop (i + 1) 00:15:14 verbose #16119 > > loop 0 00:15:14 verbose #16120 > > 00:15:14 verbose #16121 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:14 verbose #16122 > > //// test 00:15:14 verbose #16123 > > 00:15:14 verbose #16124 > > [[ 'a'; 'b'; 'c' ]] 00:15:14 verbose #16125 > > |> exists' fun x => x = 'b' 00:15:14 verbose #16126 > > |> _assert_eq true 00:15:14 verbose #16127 > > 00:15:14 verbose #16128 > > [[ 'a'; 'b' ]] 00:15:14 verbose #16129 > > |> exists' fun x => x = 'c' 00:15:14 verbose #16130 > > |> _assert_eq false 00:15:14 verbose #16131 > > 00:15:14 verbose #16132 > > [[]] 00:15:14 verbose #16133 > > |> exists' fun x => x = 'a' 00:15:14 verbose #16134 > > |> _assert_eq false 00:15:14 verbose #16135 > > 00:15:14 verbose #16136 > > ╭─[ 179.97ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:14 verbose #16137 > > │ __assert_eq / actual: true / expected: true │ 00:15:14 verbose #16138 > > │ __assert_eq / actual: false / expected: false │ 00:15:14 verbose #16139 > > │ __assert_eq / actual: false / expected: false │ 00:15:14 verbose #16140 > > │ │ 00:15:14 verbose #16141 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:14 verbose #16142 > > 00:15:14 verbose #16143 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:14 verbose #16144 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:14 verbose #16145 > > │ ## fsharp │ 00:15:14 verbose #16146 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:14 verbose #16147 > > 00:15:14 verbose #16148 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:14 verbose #16149 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:14 verbose #16150 > > │ ### list' │ 00:15:14 verbose #16151 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:14 verbose #16152 > > 00:15:14 verbose #16153 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:14 verbose #16154 > > nominal list' t = $"backend_switch `({ Fsharp : $'`t list'; Python : 00:15:14 verbose #16155 > > $'List[[`t]]' })" 00:15:14 verbose #16156 > > 00:15:14 verbose #16157 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:14 verbose #16158 > > inl empty' forall t. () : list' t = 00:15:14 verbose #16159 > > $'[[]]' 00:15:14 verbose #16160 > > 00:15:14 verbose #16161 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:14 verbose #16162 > > inl cons' forall t. (head : t) (tail : list' t) : list' t = 00:15:14 verbose #16163 > > backend_switch { 00:15:14 verbose #16164 > > Fsharp = fun () => $'!head :: !tail ' : list' t 00:15:14 verbose #16165 > > Python = fun () => 00:15:14 verbose #16166 > > $'!tail.insert(0, !head)' 00:15:14 verbose #16167 > > $'!tail ' : list' t 00:15:14 verbose #16168 > > } 00:15:14 verbose #16169 > > 00:15:14 verbose #16170 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:14 verbose #16171 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:14 verbose #16172 > > │ ### box │ 00:15:14 verbose #16173 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:14 verbose #16174 > > 00:15:14 verbose #16175 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:14 verbose #16176 > > inl box forall t. (list : list t) : list' t = 00:15:14 verbose #16177 > > (list, empty' ()) 00:15:14 verbose #16178 > > ||> listm.foldBack fun x acc => 00:15:14 verbose #16179 > > acc |> cons' x 00:15:14 verbose #16180 > > 00:15:14 verbose #16181 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:14 verbose #16182 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:14 verbose #16183 > > │ ### fold' │ 00:15:14 verbose #16184 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:14 verbose #16185 > > 00:15:14 verbose #16186 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:14 verbose #16187 > > inl fold' forall t u. (fn : t -> u) (init : list u) (list : list' t) : list u = 00:15:14 verbose #16188 > > backend_switch { 00:15:14 verbose #16189 > > Fsharp = fun () => 00:15:14 verbose #16190 > > (init, list) 00:15:14 verbose #16191 > > ||> $'List.fold' join fun acc x => Cons (fn x, acc) 00:15:14 verbose #16192 > > : list u 00:15:14 verbose #16193 > > Python = fun () => 00:15:14 verbose #16194 > > $'x = !init ' 00:15:14 verbose #16195 > > $'for x in !list: x = !fn(x)' 00:15:14 verbose #16196 > > $'x' : list u 00:15:14 verbose #16197 > > } 00:15:14 verbose #16198 > > 00:15:14 verbose #16199 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:14 verbose #16200 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:14 verbose #16201 > > │ ### fold_back' │ 00:15:14 verbose #16202 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:14 verbose #16203 > > 00:15:14 verbose #16204 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:14 verbose #16205 > > inl fold_back' forall t u. (fn : t -> u) (list : list' t) (init : list u) : list 00:15:14 verbose #16206 > > u = 00:15:14 verbose #16207 > > backend_switch { 00:15:14 verbose #16208 > > Fsharp = fun () => 00:15:14 verbose #16209 > > (list, init) 00:15:14 verbose #16210 > > ||> $'List.foldBack' join fun x acc => Cons (fn x, acc) 00:15:14 verbose #16211 > > : list u 00:15:14 verbose #16212 > > Python = fun () => 00:15:14 verbose #16213 > > $'x = !init ' 00:15:14 verbose #16214 > > $'for x in reversed(!list): x = !fn(x)' 00:15:14 verbose #16215 > > $'x' : list u 00:15:14 verbose #16216 > > } 00:15:15 verbose #16217 > > 00:15:15 verbose #16218 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:15 verbose #16219 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:15 verbose #16220 > > │ ### filter' │ 00:15:15 verbose #16221 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:15 verbose #16222 > > 00:15:15 verbose #16223 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:15 verbose #16224 > > inl filter' forall t. (fn : t -> bool) (list : list' t) : list' t = 00:15:15 verbose #16225 > > backend_switch { 00:15:15 verbose #16226 > > Fsharp = fun () => list |> $'"List.filter !fn"' : list' t 00:15:15 verbose #16227 > > Python = fun () => $'list(filter(!fn, !list))' : list' t 00:15:15 verbose #16228 > > } 00:15:15 verbose #16229 > > 00:15:15 verbose #16230 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:15 verbose #16231 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:15 verbose #16232 > > │ ### map │ 00:15:15 verbose #16233 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:15 verbose #16234 > > 00:15:15 verbose #16235 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:15 verbose #16236 > > inl map forall t u. (fn : t -> u) (list : list' t) : list' u = 00:15:15 verbose #16237 > > backend_switch { 00:15:15 verbose #16238 > > Fsharp = fun () => list |> $'List.map' fn : list' u 00:15:15 verbose #16239 > > Python = fun () => $'list(map(!fn, !list))' : list' u 00:15:15 verbose #16240 > > } 00:15:15 verbose #16241 > > 00:15:15 verbose #16242 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:15 verbose #16243 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:15 verbose #16244 > > │ ### unbox │ 00:15:15 verbose #16245 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:15 verbose #16246 > > 00:15:15 verbose #16247 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:15 verbose #16248 > > inl unbox forall t. (list : list' t) : list t = 00:15:15 verbose #16249 > > (list, Nil) 00:15:15 verbose #16250 > > ||> fold_back' id 00:15:15 verbose #16251 > > 00:15:15 verbose #16252 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:15 verbose #16253 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:15 verbose #16254 > > │ ### distinct' │ 00:15:15 verbose #16255 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:15 verbose #16256 > > 00:15:15 verbose #16257 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:15 verbose #16258 > > inl distinct' forall t. (list : list' t) : list' t = 00:15:15 verbose #16259 > > backend_switch { 00:15:15 verbose #16260 > > Fsharp = fun () => list |> $'List.distinct' : list' t 00:15:15 verbose #16261 > > Python = fun () => $'list(set(!list))' : list' t 00:15:15 verbose #16262 > > } 00:15:15 verbose #16263 > > 00:15:15 verbose #16264 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:15 verbose #16265 > > //// test 00:15:15 verbose #16266 > > 00:15:15 verbose #16267 > > [[ "1"; "2"; "2"; "3" ]] 00:15:15 verbose #16268 > > |> box 00:15:15 verbose #16269 > > |> distinct' 00:15:15 verbose #16270 > > |> unbox 00:15:15 verbose #16271 > > |> _assert_eq [[ "1"; "2"; "3" ]] 00:15:15 verbose #16272 > > 00:15:15 verbose #16273 > > ╭─[ 205.62ms - stdout ]────────────────────────────────────────────────────────╮ 00:15:15 verbose #16274 > > │ __assert_eq / actual: UH0_1 ("1", UH0_1 ("2", UH0_1 ("3", UH0_0))) / │ 00:15:15 verbose #16275 > > │ expected: UH0_1 ("1", UH0_1 ("2", UH0_1 ("3", UH0_0))) │ 00:15:15 verbose #16276 > > │ │ 00:15:15 verbose #16277 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:15 verbose #16278 > > 00:15:15 verbose #16279 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:15 verbose #16280 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:15 verbose #16281 > > │ ### to_array' │ 00:15:15 verbose #16282 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:15 verbose #16283 > > 00:15:15 verbose #16284 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:15 verbose #16285 > > inl to_array' forall t. (items : list' t) : array_base t = 00:15:15 verbose #16286 > > backend_switch { 00:15:15 verbose #16287 > > Fsharp = fun () => items |> $'List.toArray' : array_base t 00:15:15 verbose #16288 > > Python = fun () => $'cp.array(!items)' : array_base t 00:15:15 verbose #16289 > > } 00:15:15 verbose #16290 > 00:00:11 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 38599 } 00:15:15 verbose #16291 > 00:00:11 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:15:15 verbose #16292 > "nbconvert", 00:15:15 verbose #16293 > "/home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib.ipynb", 00:15:15 verbose #16294 > "--to", 00:15:15 verbose #16295 > "html", 00:15:15 verbose #16296 > "--HTMLExporter.theme=dark", 00:15:15 verbose #16297 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:15:16 verbose #16298 > 00:00:12 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib.ipynb to html 00:15:16 verbose #16299 > 00:00:12 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:15:16 verbose #16300 > 00:00:12 verbose #7 ! validate(nb) 00:15:16 verbose #16301 > 00:00:12 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:15:16 verbose #16302 > 00:00:12 verbose #9 ! return _pygments_highlight( 00:15:17 verbose #16303 > 00:00:13 verbose #10 ! [NbConvertApp] Writing 380348 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib.html 00:15:17 verbose #16304 > 00:00:13 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 896 } 00:15:17 verbose #16305 > 00:00:13 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 896 } 00:15:17 verbose #16306 > 00:00:13 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:15:17 verbose #16307 > "-c", 00:15:17 verbose #16308 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/listm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:15:17 verbose #16309 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/listm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:15:17 verbose #16310 > 00:00:13 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:15:17 verbose #16311 > 00:00:13 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:15:17 verbose #16312 > 00:00:13 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 39554 } 00:15:17 debug #16313 runtime.execute_with_options_async / { exit_code = 0; output_length = 43952 } 00:15:17 debug #20 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path listm'.dib --retries 3 00:15:17 debug #16314 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path reflection.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:15:17 verbose #16315 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "reflection.dib", "--retries", "3"])) } 00:15:17 verbose #16316 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:15:17 verbose #16317 > "repl", 00:15:17 verbose #16318 > "--exit-after-run", 00:15:17 verbose #16319 > "--run", 00:15:17 verbose #16320 > "/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib", 00:15:17 verbose #16321 > "--output-path", 00:15:17 verbose #16322 > "/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.ipynb", 00:15:17 verbose #16323 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:15:19 verbose #16324 > > 00:15:19 verbose #16325 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:19 verbose #16326 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:19 verbose #16327 > > │ # reflection │ 00:15:19 verbose #16328 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:21 verbose #16329 > > 00:15:21 verbose #16330 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:21 verbose #16331 > > //// test 00:15:21 verbose #16332 > > 00:15:21 verbose #16333 > > open testing 00:15:22 verbose #16334 > > 00:15:22 verbose #16335 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:22 verbose #16336 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:22 verbose #16337 > > │ ## reflection │ 00:15:22 verbose #16338 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:22 verbose #16339 > > 00:15:22 verbose #16340 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:22 verbose #16341 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:22 verbose #16342 > > │ ### get_union_fields │ 00:15:22 verbose #16343 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:22 verbose #16344 > > 00:15:22 verbose #16345 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:22 verbose #16346 > > inl get_union_fields forall union_type. () : list (string * union_type) = 00:15:22 verbose #16347 > > real 00:15:22 verbose #16348 > > real_core.union_to_record 00:15:22 verbose #16349 > > `union_type 00:15:22 verbose #16350 > > forall union_record_type. => 00:15:22 verbose #16351 > > real_core.record_type_fold 00:15:22 verbose #16352 > > fun acc key => 00:15:22 verbose #16353 > > forall value. => 00:15:22 verbose #16354 > > inl value = 00:15:22 verbose #16355 > > typecase value with 00:15:22 verbose #16356 > > | () => $'' : value 00:15:22 verbose #16357 > > | _ => 00:15:22 verbose #16358 > > backend_switch `value `({}) { 00:15:22 verbose #16359 > > Fsharp = 00:15:22 verbose #16360 > > (fun () => 00:15:22 verbose #16361 > > $'Unchecked.defaultof<_>' : 00:15:22 verbose #16362 > > value 00:15:22 verbose #16363 > > ) : () -> value 00:15:22 verbose #16364 > > Python = 00:15:22 verbose #16365 > > (fun () => 00:15:22 verbose #16366 > > $'None' : value 00:15:22 verbose #16367 > > ) : () -> value 00:15:22 verbose #16368 > > } 00:15:22 verbose #16369 > > inl item = real_core.nominal_create `union_type 00:15:22 verbose #16370 > > (key, value) 00:15:22 verbose #16371 > > inl key' = real_sm'.symbol_to_string `(`key) 00:15:22 verbose #16372 > > (::) `(string * union_type) (key', item) acc 00:15:22 verbose #16373 > > (Nil `(string * union_type)) 00:15:22 verbose #16374 > > `union_record_type 00:15:22 verbose #16375 > > 00:15:22 verbose #16376 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:22 verbose #16377 > > //// test 00:15:22 verbose #16378 > > ///! fsharp 00:15:22 verbose #16379 > > ///! rust 00:15:22 verbose #16380 > > ///! typescript 00:15:22 verbose #16381 > > ///! python 00:15:22 verbose #16382 > > 00:15:22 verbose #16383 > > get_union_fields () 00:15:22 verbose #16384 > > |> listm'.box 00:15:22 verbose #16385 > > |> listm'.to_array' 00:15:22 verbose #16386 > > |> a 00:15:22 verbose #16387 > > |> am'.sort_by snd 00:15:22 verbose #16388 > > |> fun (a x : _ int _) => x 00:15:22 verbose #16389 > > |> _assert_eq' ;[[ "Native", Native; "Wasm", Wasm; "Contract", Contract ]] 00:15:34 verbose #16390 > > 00:15:34 verbose #16391 > > ╭─[ 11.81s - return value ]────────────────────────────────────────────────────╮ 00:15:34 verbose #16392 > > │ .rs output: │ 00:15:34 verbose #16393 > > │ __assert_eq' / actual: Array(MutCell([("Native", US0_0), ("Wasm", US0_1), │ 00:15:34 verbose #16394 > > │ ("Contract", US0_2)])) / expected: Array(MutCell([("Native", US0_0), │ 00:15:34 verbose #16395 > > │ ("Wasm", US0_1), ("Contract", US0_2)])) │ 00:15:34 verbose #16396 > > │ │ 00:15:34 verbose #16397 > > │ .ts output: │ 00:15:34 verbose #16398 > > │ __assert_eq' / actual: Native,US0_0,Wasm,US0_1,Contract,US0_2 / expected: │ 00:15:34 verbose #16399 > > │ Native,US0_0,Wasm,US0_1,Contract,US0_2 │ 00:15:34 verbose #16400 > > │ │ 00:15:34 verbose #16401 > > │ .py output: │ 00:15:34 verbose #16402 > > │ __assert_eq' / actual: [('Native', US0_0), ('Wasm', US0_1), ('Contract', │ 00:15:34 verbose #16403 > > │ US0_2)] / expected: [('Native', US0_0), ('Wasm', US0_1), ('Contract', │ 00:15:34 verbose #16404 > > │ US0_2)] │ 00:15:34 verbose #16405 > > │ │ 00:15:34 verbose #16406 > > │ │ 00:15:34 verbose #16407 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:34 verbose #16408 > > 00:15:34 verbose #16409 > > ╭─[ 11.82s - stdout ]──────────────────────────────────────────────────────────╮ 00:15:34 verbose #16410 > > │ .fsx output: │ 00:15:34 verbose #16411 > > │ __assert_eq' / actual: [|struct ("Native", US0_0); struct ("Wasm", US0_1); │ 00:15:34 verbose #16412 > > │ struct ("Contract", US0_2)|] / expected: [|struct ("Native", US0_0); struct │ 00:15:34 verbose #16413 > > │ ("Wasm", US0_1); struct ("Contract", US0_2)|] │ 00:15:34 verbose #16414 > > │ │ 00:15:34 verbose #16415 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:34 verbose #16416 > > 00:15:34 verbose #16417 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:34 verbose #16418 > > //// test 00:15:34 verbose #16419 > > ///! fsharp 00:15:34 verbose #16420 > > ///! rust 00:15:34 verbose #16421 > > ///! typescript 00:15:34 verbose #16422 > > ///! python 00:15:34 verbose #16423 > > 00:15:34 verbose #16424 > > get_union_fields () 00:15:34 verbose #16425 > > |> listm'.box 00:15:34 verbose #16426 > > |> listm'.to_array' 00:15:34 verbose #16427 > > |> a 00:15:34 verbose #16428 > > |> am'.sort_by snd 00:15:34 verbose #16429 > > |> fun (a x : _ int _) => x 00:15:34 verbose #16430 > > |> _assert_eq' ;[[ "Some", Some 0i32; "None", None ]] 00:15:45 verbose #16431 > > 00:15:45 verbose #16432 > > ╭─[ 10.93s - return value ]────────────────────────────────────────────────────╮ 00:15:45 verbose #16433 > > │ .rs output: │ 00:15:45 verbose #16434 > > │ __assert_eq' / actual: Array(MutCell([("Some", US0_0(0)), ("None", US0_1)])) │ 00:15:45 verbose #16435 > > │ / expected: Array(MutCell([("Some", US0_0(0)), ("None", US0_1)])) │ 00:15:45 verbose #16436 > > │ │ 00:15:45 verbose #16437 > > │ .ts output: │ 00:15:45 verbose #16438 > > │ __assert_eq' / actual: Some,US0_0 0,None,US0_1 / expected: Some,US0_0 │ 00:15:45 verbose #16439 > > │ 0,None,US0_1 │ 00:15:45 verbose #16440 > > │ │ 00:15:45 verbose #16441 > > │ .py output: │ 00:15:45 verbose #16442 > > │ __assert_eq' / actual: [('Some', US0_0 0), ('None', US0_1)] / expected: [ │ 00:15:45 verbose #16443 > > │ ('Some', US0_0 0), ('None', US0_1)] │ 00:15:45 verbose #16444 > > │ │ 00:15:45 verbose #16445 > > │ │ 00:15:45 verbose #16446 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:45 verbose #16447 > > 00:15:45 verbose #16448 > > ╭─[ 10.93s - stdout ]──────────────────────────────────────────────────────────╮ 00:15:45 verbose #16449 > > │ .fsx output: │ 00:15:45 verbose #16450 > > │ __assert_eq' / actual: [|struct ("Some", US0_0 0); struct ("None", US0_1)|] │ 00:15:45 verbose #16451 > > │ / expected: [|struct ("Some", US0_0 0); struct ("None", US0_1)|] │ 00:15:45 verbose #16452 > > │ │ 00:15:45 verbose #16453 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:45 verbose #16454 > > 00:15:45 verbose #16455 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:45 verbose #16456 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:15:45 verbose #16457 > > │ ### get_union_fields_untag │ 00:15:45 verbose #16458 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:45 verbose #16459 > > 00:15:45 verbose #16460 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:45 verbose #16461 > > inl get_union_fields_untag forall union_type. () : list (string * union_type) = 00:15:45 verbose #16462 > > real 00:15:45 verbose #16463 > > real_core.union_to_record 00:15:45 verbose #16464 > > `union_type 00:15:45 verbose #16465 > > forall union_record_type. => 00:15:45 verbose #16466 > > inl result = 00:15:45 verbose #16467 > > real_core.record_type_fold_back 00:15:45 verbose #16468 > > fun _key => 00:15:45 verbose #16469 > > forall value. (acc, (i : i32)) => 00:15:45 verbose #16470 > > inl key, item : (string * union_type) = 00:15:45 verbose #16471 > > real_core.union_untag `union_type i 00:15:45 verbose #16472 > > (fun key => forall value. => 00:15:45 verbose #16473 > > inl key' = real_sm'.symbol_to_string 00:15:45 verbose #16474 > > `(`key) 00:15:45 verbose #16475 > > inl value = 00:15:45 verbose #16476 > > typecase value with 00:15:45 verbose #16477 > > | () => $'' : value 00:15:45 verbose #16478 > > | _ => 00:15:45 verbose #16479 > > backend_switch `value `({}) 00:15:45 verbose #16480 > > { 00:15:45 verbose #16481 > > Fsharp = 00:15:45 verbose #16482 > > (fun () => 00:15:45 verbose #16483 > > 00:15:45 verbose #16484 > > $'Unchecked.defaultof<_>' : value 00:15:45 verbose #16485 > > ) : () -> value 00:15:45 verbose #16486 > > Python = 00:15:45 verbose #16487 > > (fun () => 00:15:45 verbose #16488 > > $'None' : value 00:15:45 verbose #16489 > > ) : () -> value 00:15:45 verbose #16490 > > } 00:15:45 verbose #16491 > > inl item = real_core.nominal_create 00:15:45 verbose #16492 > > `union_type (key, value) 00:15:45 verbose #16493 > > key', item 00:15:45 verbose #16494 > > ) 00:15:45 verbose #16495 > > (fun _ => 00:15:45 verbose #16496 > > failwith 00:15:45 verbose #16497 > > `(string * union_type) 00:15:45 verbose #16498 > > 00:15:45 verbose #16499 > > "reflection.get_union_fields_untag / invalid tag" 00:15:45 verbose #16500 > > ) 00:15:45 verbose #16501 > > (::) `(string * union_type) (key, item) acc, (+) 00:15:45 verbose #16502 > > `i32 i 1 00:15:45 verbose #16503 > > `union_record_type 00:15:45 verbose #16504 > > (Nil `(string * union_type), 0i32) 00:15:45 verbose #16505 > > inl result = fst `(list (string * union_type)) `i32 result 00:15:45 verbose #16506 > > listm.rev `(string * union_type) result 00:15:45 verbose #16507 > > 00:15:45 verbose #16508 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:45 verbose #16509 > > //// test 00:15:45 verbose #16510 > > ///! fsharp 00:15:45 verbose #16511 > > ///! cuda 00:15:45 verbose #16512 > > ///! rust 00:15:45 verbose #16513 > > ///! typescript 00:15:45 verbose #16514 > > ///! python 00:15:45 verbose #16515 > > 00:15:45 verbose #16516 > > get_union_fields_untag () 00:15:45 verbose #16517 > > |> _assert_eq' [[ "Native", Native; "Wasm", Wasm; "Contract", Contract ]] 00:15:57 verbose #16518 > > 00:15:57 verbose #16519 > > ╭─[ 11.65s - return value ]────────────────────────────────────────────────────╮ 00:15:57 verbose #16520 > > │ .py output (Cuda): │ 00:15:57 verbose #16521 > > │ __assert_eq' / actual: UH0_1(v0='Native', v1=US0_0(), v2=UH0_1(v0='Wasm', │ 00:15:57 verbose #16522 > > │ v1=US0_1(), v2=UH0_1(v0='Contract', v1=US0_2(), v2=UH0_0()))) / expected: │ 00:15:57 verbose #16523 > > │ UH0_1(v0='Native', v1=US0_0(), v2=UH0_1(v0='Wasm', v1=US0_1(), │ 00:15:57 verbose #16524 > > │ v2=UH0_1(v0='Contract', v1=US0_2(), v2=UH0_0()))) │ 00:15:57 verbose #16525 > > │ │ 00:15:57 verbose #16526 > > │ .rs output: │ 00:15:57 verbose #16527 > > │ __assert_eq' / actual: UH0_1("Native", US0_0, UH0_1("Wasm", US0_1, │ 00:15:57 verbose #16528 > > │ UH0_1("Contract", US0_2, UH0_0))) / expected: UH0_1("Native", US0_0, │ 00:15:57 verbose #16529 > > │ UH0_1("Wasm", US0_1, UH0_1("Contract", US0_2, UH0_0))) │ 00:15:57 verbose #16530 > > │ │ 00:15:57 verbose #16531 > > │ .ts output: │ 00:15:57 verbose #16532 > > │ __assert_eq' / actual: UH0_1 (Native, US0_0, UH0_1 (Wasm, US0_1, UH0_1 │ 00:15:57 verbose #16533 > > │ (Contract, US0_2, UH0_0))) / expected: UH0_1 (Native, US0_0, UH0_1 (Wasm, │ 00:15:57 verbose #16534 > > │ US0_1, UH0_1 (Contract, US0_2, UH0_0))) │ 00:15:57 verbose #16535 > > │ │ 00:15:57 verbose #16536 > > │ .py output: │ 00:15:57 verbose #16537 > > │ __assert_eq' / actual: UH0_1 ("Native", US0_0, UH0_1 ("Wasm", US0_1, UH0_1 │ 00:15:57 verbose #16538 > > │ ("Contract", US0_2, UH0_0))) / expected: UH0_1 ("Native", US0_0, UH0_1 │ 00:15:57 verbose #16539 > > │ ("Wasm", US0_1, UH0_1 ("Contract", US0_2, UH0_0))) │ 00:15:57 verbose #16540 > > │ │ 00:15:57 verbose #16541 > > │ │ 00:15:57 verbose #16542 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:57 verbose #16543 > > 00:15:57 verbose #16544 > > ╭─[ 11.65s - stdout ]──────────────────────────────────────────────────────────╮ 00:15:57 verbose #16545 > > │ .fsx output: │ 00:15:57 verbose #16546 > > │ __assert_eq' / actual: UH0_1 ("Native", US0_0, UH0_1 ("Wasm", US0_1, UH0_1 │ 00:15:57 verbose #16547 > > │ ("Contract", US0_2, UH0_0))) / expected: UH0_1 ("Native", US0_0, UH0_1 │ 00:15:57 verbose #16548 > > │ ("Wasm", US0_1, UH0_1 ("Contract", US0_2, UH0_0))) │ 00:15:57 verbose #16549 > > │ │ 00:15:57 verbose #16550 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:15:57 verbose #16551 > > 00:15:57 verbose #16552 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:57 verbose #16553 > > //// test 00:15:57 verbose #16554 > > ///! fsharp 00:15:57 verbose #16555 > > ///! cuda 00:15:57 verbose #16556 > > ///! rust 00:15:57 verbose #16557 > > ///! typescript 00:15:57 verbose #16558 > > ///! python 00:15:57 verbose #16559 > > 00:15:57 verbose #16560 > > get_union_fields_untag () 00:15:57 verbose #16561 > > |> _assert_eq' [[ "Some", Some (); "None", None ]] 00:16:08 verbose #16562 > > 00:16:08 verbose #16563 > > ╭─[ 11.40s - return value ]────────────────────────────────────────────────────╮ 00:16:08 verbose #16564 > > │ .py output (Cuda): │ 00:16:08 verbose #16565 > > │ __assert_eq' / actual: UH0_1(v0='Some', v1=US0_0(), v2=UH0_1(v0='None', │ 00:16:08 verbose #16566 > > │ v1=US0_1(), v2=UH0_0())) / expected: UH0_1(v0='Some', v1=US0_0(), │ 00:16:08 verbose #16567 > > │ v2=UH0_1(v0='None', v1=US0_1(), v2=UH0_0())) │ 00:16:08 verbose #16568 > > │ │ 00:16:08 verbose #16569 > > │ .rs output: │ 00:16:08 verbose #16570 > > │ __assert_eq' / actual: UH0_1("Some", US0_0, UH0_1("None", US0_1, UH0_0)) / │ 00:16:08 verbose #16571 > > │ expected: UH0_1("Some", US0_0, UH0_1("None", US0_1, UH0_0)) │ 00:16:08 verbose #16572 > > │ │ 00:16:08 verbose #16573 > > │ .ts output: │ 00:16:08 verbose #16574 > > │ __assert_eq' / actual: UH0_1 (Some, US0_0, UH0_1 (None, US0_1, UH0_0)) / │ 00:16:08 verbose #16575 > > │ expected: UH0_1 (Some, US0_0, UH0_1 (None, US0_1, UH0_0)) │ 00:16:08 verbose #16576 > > │ │ 00:16:08 verbose #16577 > > │ .py output: │ 00:16:08 verbose #16578 > > │ __assert_eq' / actual: UH0_1 ("Some", US0_0, UH0_1 ("None", US0_1, UH0_0)) / │ 00:16:08 verbose #16579 > > │ expected: UH0_1 ("Some", US0_0, UH0_1 ("None", US0_1, UH0_0)) │ 00:16:08 verbose #16580 > > │ │ 00:16:08 verbose #16581 > > │ │ 00:16:08 verbose #16582 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:08 verbose #16583 > > 00:16:08 verbose #16584 > > ╭─[ 11.40s - stdout ]──────────────────────────────────────────────────────────╮ 00:16:08 verbose #16585 > > │ .fsx output: │ 00:16:08 verbose #16586 > > │ __assert_eq' / actual: UH0_1 ("Some", US0_0, UH0_1 ("None", US0_1, UH0_0)) / │ 00:16:08 verbose #16587 > > │ expected: UH0_1 ("Some", US0_0, UH0_1 ("None", US0_1, UH0_0)) │ 00:16:08 verbose #16588 > > │ │ 00:16:08 verbose #16589 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:08 verbose #16590 > > 00:16:08 verbose #16591 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:08 verbose #16592 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:08 verbose #16593 > > │ ### union_try_pick │ 00:16:08 verbose #16594 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:08 verbose #16595 > > 00:16:08 verbose #16596 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:08 verbose #16597 > > inl union_try_pick forall t. (key : string) : option t = 00:16:08 verbose #16598 > > real get_union_fields_untag `t () 00:16:08 verbose #16599 > > |> listm'.try_pick fun key', x => 00:16:08 verbose #16600 > > if key' = key 00:16:08 verbose #16601 > > then Some x 00:16:08 verbose #16602 > > else None 00:16:08 verbose #16603 > > 00:16:08 verbose #16604 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:08 verbose #16605 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:08 verbose #16606 > > │ ### union_to_string │ 00:16:08 verbose #16607 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:08 verbose #16608 > > 00:16:08 verbose #16609 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:08 verbose #16610 > > inl union_to_string forall t. (x : t) : string = 00:16:08 verbose #16611 > > real get_union_fields_untag `t () 00:16:08 verbose #16612 > > |> listm'.try_pick fun key, x' => 00:16:08 verbose #16613 > > if x' = x 00:16:08 verbose #16614 > > then Some key 00:16:08 verbose #16615 > > else 00:16:08 verbose #16616 > > // TODO: split only if there's a non-unit case (union_to_record 00:16:08 verbose #16617 > > check) 00:16:08 verbose #16618 > > inl separator = 00:16:08 verbose #16619 > > backend_switch { 00:16:08 verbose #16620 > > Fsharp = fun () => 00:16:08 verbose #16621 > > run_target function 00:16:08 verbose #16622 > > | Rust _ => fun () => join "(" 00:16:08 verbose #16623 > > | _ => fun () => join " " 00:16:08 verbose #16624 > > Python = fun () => "(" 00:16:08 verbose #16625 > > } 00:16:08 verbose #16626 > > inl x' = x' |> sm'.format |> sm'.split separator |> am'.index_base 0 00:16:08 verbose #16627 > > if x |> sm'.format |> sm'.starts_with x' 00:16:08 verbose #16628 > > then Some key 00:16:08 verbose #16629 > > else None 00:16:08 verbose #16630 > > |> optionm.value 00:16:08 verbose #16631 > > 00:16:08 verbose #16632 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:08 verbose #16633 > > //// test 00:16:08 verbose #16634 > > ///! fsharp 00:16:08 verbose #16635 > > ///! cuda 00:16:08 verbose #16636 > > ///! rust 00:16:08 verbose #16637 > > ///! typescript 00:16:08 verbose #16638 > > ///! python 00:16:08 verbose #16639 > > 00:16:08 verbose #16640 > > Some true 00:16:08 verbose #16641 > > |> union_to_string 00:16:08 verbose #16642 > > |> _assert_eq' "Some" 00:16:20 verbose #16643 > > 00:16:20 verbose #16644 > > ╭─[ 11.61s - return value ]────────────────────────────────────────────────────╮ 00:16:20 verbose #16645 > > │ .py output (Cuda): │ 00:16:20 verbose #16646 > > │ __assert_eq' / actual: Some / expected: Some │ 00:16:20 verbose #16647 > > │ │ 00:16:20 verbose #16648 > > │ .rs output: │ 00:16:20 verbose #16649 > > │ __assert_eq' / actual: "Some" / expected: "Some" │ 00:16:20 verbose #16650 > > │ │ 00:16:20 verbose #16651 > > │ .ts output: │ 00:16:20 verbose #16652 > > │ __assert_eq' / actual: Some / expected: Some │ 00:16:20 verbose #16653 > > │ │ 00:16:20 verbose #16654 > > │ .py output: │ 00:16:20 verbose #16655 > > │ __assert_eq' / actual: Some / expected: Some │ 00:16:20 verbose #16656 > > │ │ 00:16:20 verbose #16657 > > │ │ 00:16:20 verbose #16658 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:20 verbose #16659 > > 00:16:20 verbose #16660 > > ╭─[ 11.61s - stdout ]──────────────────────────────────────────────────────────╮ 00:16:20 verbose #16661 > > │ .fsx output: │ 00:16:20 verbose #16662 > > │ __assert_eq' / actual: "Some" / expected: "Some" │ 00:16:20 verbose #16663 > > │ │ 00:16:20 verbose #16664 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:20 verbose #16665 > > 00:16:20 verbose #16666 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:20 verbose #16667 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:20 verbose #16668 > > │ ### nameof │ 00:16:20 verbose #16669 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:20 verbose #16670 > > 00:16:20 verbose #16671 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:20 verbose #16672 > > inl nameof forall t. (x : t) : string = 00:16:20 verbose #16673 > > real 00:16:20 verbose #16674 > > real_core.record_type_fold_back 00:16:20 verbose #16675 > > fun key => 00:16:20 verbose #16676 > > forall value. _ => 00:16:20 verbose #16677 > > real_sm'.symbol_to_string `(`key) 00:16:20 verbose #16678 > > `t 00:16:20 verbose #16679 > > "" 00:16:20 verbose #16680 > > 00:16:20 verbose #16681 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:20 verbose #16682 > > //// test 00:16:20 verbose #16683 > > 00:16:20 verbose #16684 > > { test1 = ""; test2 = "" } 00:16:20 verbose #16685 > > |> nameof 00:16:20 verbose #16686 > > |> _assert_eq' "test1" 00:16:20 verbose #16687 > > 00:16:20 verbose #16688 > > ╭─[ 89.11ms - stdout ]─────────────────────────────────────────────────────────╮ 00:16:20 verbose #16689 > > │ __assert_eq' / actual: "test1" / expected: "test1" │ 00:16:20 verbose #16690 > > │ │ 00:16:20 verbose #16691 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:20 verbose #16692 > > 00:16:20 verbose #16693 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:20 verbose #16694 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:20 verbose #16695 > > │ ### get_record_fields │ 00:16:20 verbose #16696 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:20 verbose #16697 > > 00:16:20 verbose #16698 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:20 verbose #16699 > > inl get_record_fields forall t u. (x : t) : list (string * u) = 00:16:20 verbose #16700 > > real 00:16:20 verbose #16701 > > real_core.record_type_fold_back 00:16:20 verbose #16702 > > fun key => 00:16:20 verbose #16703 > > forall u'. acc => 00:16:20 verbose #16704 > > inl k = real_sm'.symbol_to_string `(`key) 00:16:20 verbose #16705 > > inl v = x key 00:16:20 verbose #16706 > > (::) `(string * u') (k, v) acc 00:16:20 verbose #16707 > > `t 00:16:20 verbose #16708 > > (Nil `(string * u)) 00:16:20 verbose #16709 > > 00:16:20 verbose #16710 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:20 verbose #16711 > > //// test 00:16:20 verbose #16712 > > 00:16:20 verbose #16713 > > { a = "1"; b = "2" } 00:16:20 verbose #16714 > > |> get_record_fields 00:16:20 verbose #16715 > > |> _assert_eq' [[ "a", "1"; "b", "2" ]] 00:16:20 verbose #16716 > > 00:16:20 verbose #16717 > > ╭─[ 106.15ms - stdout ]────────────────────────────────────────────────────────╮ 00:16:20 verbose #16718 > > │ __assert_eq' / actual: UH0_1 ("a", "1", UH0_1 ("b", "2", UH0_0)) / expected: │ 00:16:20 verbose #16719 > > │ UH0_1 ("a", "1", UH0_1 ("b", "2", UH0_0)) │ 00:16:20 verbose #16720 > > │ │ 00:16:20 verbose #16721 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:20 verbose #16722 > > 00:16:20 verbose #16723 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:20 verbose #16724 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:20 verbose #16725 > > │ ### get_functions_types │ 00:16:20 verbose #16726 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:20 verbose #16727 > > 00:16:20 verbose #16728 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:20 verbose #16729 > > inl get_functions_types forall t {record}. (fns : t) = 00:16:20 verbose #16730 > > real 00:16:20 verbose #16731 > > inl get_function_type forall t. = 00:16:20 verbose #16732 > > inl args forall t {record}. : list (string * string) = 00:16:20 verbose #16733 > > real_core.record_type_fold_back 00:16:20 verbose #16734 > > fun key => 00:16:20 verbose #16735 > > forall v. acc => 00:16:20 verbose #16736 > > inl k = real_sm'.symbol_to_string `(`key) 00:16:20 verbose #16737 > > inl v = $'"`v"' : string 00:16:20 verbose #16738 > > (::) `(string * string) (k, v) acc 00:16:20 verbose #16739 > > `t 00:16:20 verbose #16740 > > (Nil `(string * string)) 00:16:20 verbose #16741 > > 00:16:20 verbose #16742 > > typecase t with 00:16:20 verbose #16743 > > | ~t -> ~u => args `t, ($'"`u"' : string) 00:16:20 verbose #16744 > > 00:16:20 verbose #16745 > > real_core.record_type_fold_back 00:16:20 verbose #16746 > > fun key => 00:16:20 verbose #16747 > > forall v. acc => 00:16:20 verbose #16748 > > inl k = real_sm'.symbol_to_string `(`key) 00:16:20 verbose #16749 > > inl args, result = get_function_type `v 00:16:20 verbose #16750 > > (::) `(string * (list (string * string) * string)) (k, 00:16:20 verbose #16751 > > (args, result)) acc 00:16:20 verbose #16752 > > `(`fns) 00:16:20 verbose #16753 > > (Nil `(string * (list (string * string) * string))) 00:16:20 verbose #16754 > > |> fun x => x : list (string * (list (string * string) * string)) 00:16:20 verbose #16755 > > 00:16:20 verbose #16756 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:20 verbose #16757 > > //// test 00:16:20 verbose #16758 > > 00:16:20 verbose #16759 > > inl one ({ a } : { a : i32 }) : i32 = a + 1 00:16:20 verbose #16760 > > inl two ({ a b } : { a : i32; b : i32 }) : i32 = a + b + 2 00:16:20 verbose #16761 > > inl fns = { one two } 00:16:20 verbose #16762 > > 00:16:20 verbose #16763 > > fns 00:16:20 verbose #16764 > > |> get_functions_types 00:16:20 verbose #16765 > > |> listm.map fun (name, args, result) => name, (args |> listm'.box |> 00:16:20 verbose #16766 > > listm'.to_array', result) 00:16:20 verbose #16767 > > |> listm'.box 00:16:20 verbose #16768 > > |> listm'.to_array' 00:16:20 verbose #16769 > > |> sm'.format 00:16:20 verbose #16770 > > |> _assert_eq' ( 00:16:20 verbose #16771 > > [[ 00:16:20 verbose #16772 > > "one", [["a", "int32"]], "int32" 00:16:20 verbose #16773 > > "two", [["a", "int32"; "b", "int32"]], "int32" 00:16:20 verbose #16774 > > ]] 00:16:20 verbose #16775 > > |> listm.map fun (name, args, result) => name, (args |> listm'.box |> 00:16:20 verbose #16776 > > listm'.to_array', result) 00:16:20 verbose #16777 > > |> listm'.box 00:16:20 verbose #16778 > > |> listm'.to_array' 00:16:20 verbose #16779 > > |> sm'.format 00:16:20 verbose #16780 > > ) 00:16:21 verbose #16781 > > 00:16:21 verbose #16782 > > ╭─[ 114.29ms - stdout ]────────────────────────────────────────────────────────╮ 00:16:21 verbose #16783 > > │ __assert_eq' / actual: "[|struct ("one", [|struct ("a", "int32")|], │ 00:16:21 verbose #16784 > > │ "int32"); │ 00:16:21 verbose #16785 > > │ struct ("two", [|struct ("a", "int32"); struct ("b", "int32")|], │ 00:16:21 verbose #16786 > > │ "int32")|]" / expected: "[|struct ("one", [|struct ("a", "int32")|], │ 00:16:21 verbose #16787 > > │ "int32"); │ 00:16:21 verbose #16788 > > │ struct ("two", [|struct ("a", "int32"); struct ("b", "int32")|], │ 00:16:21 verbose #16789 > > │ "int32")|]" │ 00:16:21 verbose #16790 > > │ │ 00:16:21 verbose #16791 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:21 verbose #16792 > 00:01:03 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 28158 } 00:16:21 verbose #16793 > 00:01:03 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:16:21 verbose #16794 > "nbconvert", 00:16:21 verbose #16795 > "/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.ipynb", 00:16:21 verbose #16796 > "--to", 00:16:21 verbose #16797 > "html", 00:16:21 verbose #16798 > "--HTMLExporter.theme=dark", 00:16:21 verbose #16799 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:16:21 verbose #16800 > 00:01:04 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.ipynb to html 00:16:21 verbose #16801 > 00:01:04 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:16:21 verbose #16802 > 00:01:04 verbose #7 ! validate(nb) 00:16:22 verbose #16803 > 00:01:04 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:16:22 verbose #16804 > 00:01:04 verbose #9 ! return _pygments_highlight( 00:16:22 verbose #16805 > 00:01:04 verbose #10 ! [NbConvertApp] Writing 325156 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.html 00:16:22 verbose #16806 > 00:01:04 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 904 } 00:16:22 verbose #16807 > 00:01:04 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 904 } 00:16:22 verbose #16808 > 00:01:04 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:16:22 verbose #16809 > "-c", 00:16:22 verbose #16810 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:16:22 verbose #16811 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:16:22 verbose #16812 > 00:01:05 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:16:22 verbose #16813 > 00:01:05 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:16:22 verbose #16814 > 00:01:05 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 29121 } 00:16:22 debug #16815 runtime.execute_with_options_async / { exit_code = 0; output_length = 32937 } 00:16:22 debug #21 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path reflection.dib --retries 3 00:16:22 debug #16816 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path iter.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:16:22 verbose #16817 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "iter.dib", "--retries", "3"])) } 00:16:22 verbose #16818 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:16:22 verbose #16819 > "repl", 00:16:22 verbose #16820 > "--exit-after-run", 00:16:22 verbose #16821 > "--run", 00:16:22 verbose #16822 > "/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib", 00:16:22 verbose #16823 > "--output-path", 00:16:22 verbose #16824 > "/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.ipynb", 00:16:22 verbose #16825 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:16:24 verbose #16826 > > 00:16:24 verbose #16827 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:24 verbose #16828 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:24 verbose #16829 > > │ # iter │ 00:16:24 verbose #16830 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:26 verbose #16831 > > 00:16:26 verbose #16832 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:26 verbose #16833 > > open rust 00:16:26 verbose #16834 > > open rust_operators 00:16:27 verbose #16835 > > 00:16:27 verbose #16836 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:27 verbose #16837 > > //// test 00:16:27 verbose #16838 > > 00:16:27 verbose #16839 > > open testing 00:16:27 verbose #16840 > > 00:16:27 verbose #16841 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:27 verbose #16842 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:27 verbose #16843 > > │ ## rust │ 00:16:27 verbose #16844 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:27 verbose #16845 > > 00:16:27 verbose #16846 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:27 verbose #16847 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:27 verbose #16848 > > │ ### enumerate │ 00:16:27 verbose #16849 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:27 verbose #16850 > > 00:16:27 verbose #16851 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:27 verbose #16852 > > inl enumerate forall t. (iter : into_iterator t) : into_iterator (pair 00:16:27 verbose #16853 > > unativeint t) = 00:16:27 verbose #16854 > > !\($'"!iter.enumerate().map(std::sync::Arc::new)"') 00:16:27 verbose #16855 > > 00:16:27 verbose #16856 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:27 verbose #16857 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:27 verbose #16858 > > │ ### into_iter │ 00:16:27 verbose #16859 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:27 verbose #16860 > > 00:16:27 verbose #16861 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:27 verbose #16862 > > inl into_iter forall (t : * -> *) u. (x : t u) : into_iterator u = 00:16:27 verbose #16863 > > !\($'"!x.into_iter()"') 00:16:27 verbose #16864 > > 00:16:27 verbose #16865 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:27 verbose #16866 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:27 verbose #16867 > > │ ### iter │ 00:16:27 verbose #16868 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:27 verbose #16869 > > 00:16:27 verbose #16870 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:27 verbose #16871 > > inl iter forall (t : * -> *) u. (x : t u) : into_iterator u = 00:16:27 verbose #16872 > > !\($'"!x.iter()"') 00:16:27 verbose #16873 > > 00:16:27 verbose #16874 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:27 verbose #16875 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:27 verbose #16876 > > │ ### map │ 00:16:27 verbose #16877 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:27 verbose #16878 > > 00:16:27 verbose #16879 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:27 verbose #16880 > > inl map forall t u. (fn : t -> u) (iter : into_iterator t) : into_iterator u = 00:16:27 verbose #16881 > > !\\(fn, $'"!iter.map(|x| $0(x))"') 00:16:27 verbose #16882 > > 00:16:27 verbose #16883 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:27 verbose #16884 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:27 verbose #16885 > > │ ### cloned │ 00:16:27 verbose #16886 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:27 verbose #16887 > > 00:16:27 verbose #16888 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:27 verbose #16889 > > inl cloned forall t. (iter : into_iterator (rust.ref t)) : into_iterator t = 00:16:27 verbose #16890 > > !\($'"!iter.cloned()"') 00:16:27 verbose #16891 > > 00:16:27 verbose #16892 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:27 verbose #16893 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:27 verbose #16894 > > │ ### for_each │ 00:16:27 verbose #16895 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:27 verbose #16896 > > 00:16:27 verbose #16897 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:27 verbose #16898 > > inl for_each forall t. (fn : t -> ()) (iter : into_iterator t) : () = 00:16:27 verbose #16899 > > (!\\(fn, $'"true; !iter.for_each(|x| $0(x))"') : bool) |> ignore 00:16:28 verbose #16900 > > 00:16:28 verbose #16901 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:28 verbose #16902 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:28 verbose #16903 > > │ ### try_for_each │ 00:16:28 verbose #16904 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:28 verbose #16905 > > 00:16:28 verbose #16906 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:28 verbose #16907 > > inl try_for_each forall t. (fn : t -> rust.try ()) x : resultm.result' () string 00:16:28 verbose #16908 > > = 00:16:28 verbose #16909 > > (!\($'"true; let mut !x = !x; let _iter_try_for_each = !x.try_for_each(|x| { 00:16:28 verbose #16910 > > //"') : bool) |> ignore 00:16:28 verbose #16911 > > (!\\(fn !\($'"x"'), $'"true; $0 }); //"') : bool) |> ignore 00:16:28 verbose #16912 > > !\($'"_iter_try_for_each.map_err(|x| x.into())"') 00:16:28 verbose #16913 > > 00:16:28 verbose #16914 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:28 verbose #16915 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:28 verbose #16916 > > │ ### all │ 00:16:28 verbose #16917 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:28 verbose #16918 > > 00:16:28 verbose #16919 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:28 verbose #16920 > > inl all forall t. (fn : t -> bool) (x : rust.mut' (into_iterator t)) : bool = 00:16:28 verbose #16921 > > x |> rust.to_mut 00:16:28 verbose #16922 > > !\\(fn, $'$"!x.all(|x| $0(x))"') 00:16:28 verbose #16923 > > 00:16:28 verbose #16924 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:28 verbose #16925 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:28 verbose #16926 > > │ ### enumerate │ 00:16:28 verbose #16927 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:28 verbose #16928 > > 00:16:28 verbose #16929 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:28 verbose #16930 > > inl enumerate forall dim {int; number} t. (ar : a dim t) : a dim (unativeint * 00:16:28 verbose #16931 > > t) = 00:16:28 verbose #16932 > > inl (a ar) = ar 00:16:28 verbose #16933 > > ar 00:16:28 verbose #16934 > > |> am'.to_vec 00:16:28 verbose #16935 > > |> into_iter 00:16:28 verbose #16936 > > |> enumerate 00:16:28 verbose #16937 > > |> iter_collect 00:16:28 verbose #16938 > > |> am'.vec_map' from_pair 00:16:28 verbose #16939 > > |> am'.from_vec 00:16:28 verbose #16940 > > 00:16:28 verbose #16941 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:28 verbose #16942 > > //// test 00:16:28 verbose #16943 > > ///! rust 00:16:28 verbose #16944 > > 00:16:28 verbose #16945 > > am'.init_series 0i32 2 1 00:16:28 verbose #16946 > > |> fun x => a x : _ int _ 00:16:28 verbose #16947 > > |> enumerate 00:16:28 verbose #16948 > > |> fun (a x : _ int _) => x 00:16:28 verbose #16949 > > |> _assert_eq' ;[[ convert 0i32, 0; convert 1i32, 1; convert 2i32, 2 ]] 00:16:35 verbose #16950 > > 00:16:35 verbose #16951 > > ╭─[ 7.34s - return value ]─────────────────────────────────────────────────────╮ 00:16:35 verbose #16952 > > │ __assert_eq' / actual: Array(MutCell([(0, 0), (1, 1), (2, 2)])) / expected: │ 00:16:35 verbose #16953 > > │ Array(MutCell([(0, 0), (1, 1), (2, 2)])) │ 00:16:35 verbose #16954 > > │ │ 00:16:35 verbose #16955 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:35 verbose #16956 > 00:00:12 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 7674 } 00:16:35 verbose #16957 > 00:00:12 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:16:35 verbose #16958 > "nbconvert", 00:16:35 verbose #16959 > "/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.ipynb", 00:16:35 verbose #16960 > "--to", 00:16:35 verbose #16961 > "html", 00:16:35 verbose #16962 > "--HTMLExporter.theme=dark", 00:16:35 verbose #16963 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:16:36 verbose #16964 > 00:00:13 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.ipynb to html 00:16:36 verbose #16965 > 00:00:13 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:16:36 verbose #16966 > 00:00:13 verbose #7 ! validate(nb) 00:16:36 verbose #16967 > 00:00:13 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:16:36 verbose #16968 > 00:00:13 verbose #9 ! return _pygments_highlight( 00:16:36 verbose #16969 > 00:00:14 verbose #10 ! [NbConvertApp] Writing 292052 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.html 00:16:36 verbose #16970 > 00:00:14 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 } 00:16:36 verbose #16971 > 00:00:14 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 } 00:16:36 verbose #16972 > 00:00:14 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:16:36 verbose #16973 > "-c", 00:16:36 verbose #16974 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:16:36 verbose #16975 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:16:37 verbose #16976 > 00:00:14 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:16:37 verbose #16977 > 00:00:14 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:16:37 verbose #16978 > 00:00:14 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 8625 } 00:16:37 debug #16979 runtime.execute_with_options_async / { exit_code = 0; output_length = 11709 } 00:16:37 debug #22 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path iter.dib --retries 3 00:16:37 debug #16980 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path wasm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:16:37 verbose #16981 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "wasm.dib", "--retries", "3"])) } 00:16:37 verbose #16982 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:16:37 verbose #16983 > "repl", 00:16:37 verbose #16984 > "--exit-after-run", 00:16:37 verbose #16985 > "--run", 00:16:37 verbose #16986 > "/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib", 00:16:37 verbose #16987 > "--output-path", 00:16:37 verbose #16988 > "/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.ipynb", 00:16:37 verbose #16989 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:16:38 verbose #16990 > > 00:16:38 verbose #16991 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:38 verbose #16992 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:38 verbose #16993 > > │ # wasm │ 00:16:38 verbose #16994 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:41 verbose #16995 > > 00:16:41 verbose #16996 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:41 verbose #16997 > > open rust 00:16:41 verbose #16998 > > open rust_operators 00:16:41 verbose #16999 > > 00:16:41 verbose #17000 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:41 verbose #17001 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:41 verbose #17002 > > │ ### rexie │ 00:16:41 verbose #17003 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:41 verbose #17004 > > 00:16:41 verbose #17005 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:41 verbose #17006 > > nominal rexie = 00:16:41 verbose #17007 > > `( 00:16:41 verbose #17008 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:41 verbose #17009 > > Fable.Core.Emit(\"rexie::Rexie\")>]]\n#endif\ntype rexie_Rexie = class end" 00:16:41 verbose #17010 > > $'' : $'rexie_Rexie' 00:16:41 verbose #17011 > > ) 00:16:41 verbose #17012 > > 00:16:41 verbose #17013 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:41 verbose #17014 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:41 verbose #17015 > > │ ### rexie_store │ 00:16:41 verbose #17016 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:41 verbose #17017 > > 00:16:41 verbose #17018 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:41 verbose #17019 > > nominal rexie_store = 00:16:41 verbose #17020 > > `( 00:16:41 verbose #17021 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:41 verbose #17022 > > Fable.Core.Emit(\"rexie::Store\")>]]\n#endif\ntype rexie_Store = class end" 00:16:41 verbose #17023 > > $'' : $'rexie_Store' 00:16:41 verbose #17024 > > ) 00:16:41 verbose #17025 > > 00:16:41 verbose #17026 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:41 verbose #17027 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:41 verbose #17028 > > │ ### rexie_transaction │ 00:16:41 verbose #17029 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:41 verbose #17030 > > 00:16:41 verbose #17031 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:41 verbose #17032 > > nominal rexie_transaction = 00:16:41 verbose #17033 > > `( 00:16:41 verbose #17034 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:41 verbose #17035 > > Fable.Core.Emit(\"rexie::Transaction\")>]]\n#endif\ntype rexie_Transaction = 00:16:41 verbose #17036 > > class end" 00:16:41 verbose #17037 > > $'' : $'rexie_Transaction' 00:16:41 verbose #17038 > > ) 00:16:42 verbose #17039 > > 00:16:42 verbose #17040 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:42 verbose #17041 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:42 verbose #17042 > > │ ### rexie_error │ 00:16:42 verbose #17043 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:42 verbose #17044 > > 00:16:42 verbose #17045 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:42 verbose #17046 > > nominal rexie_error = 00:16:42 verbose #17047 > > `( 00:16:42 verbose #17048 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:42 verbose #17049 > > Fable.Core.Emit(\"rexie::Error\")>]]\n#endif\ntype rexie_Error = class end" 00:16:42 verbose #17050 > > $'' : $'rexie_Error' 00:16:42 verbose #17051 > > ) 00:16:42 verbose #17052 > > 00:16:42 verbose #17053 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:42 verbose #17054 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:42 verbose #17055 > > │ ### js_value │ 00:16:42 verbose #17056 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:42 verbose #17057 > > 00:16:42 verbose #17058 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:42 verbose #17059 > > nominal js_value = 00:16:42 verbose #17060 > > `( 00:16:42 verbose #17061 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:42 verbose #17062 > > Fable.Core.Emit(\"wasm_bindgen::JsValue\")>]]\n#endif\ntype wasm_bindgen_JsValue 00:16:42 verbose #17063 > > = class end" 00:16:42 verbose #17064 > > $'' : $'wasm_bindgen_JsValue' 00:16:42 verbose #17065 > > ) 00:16:42 verbose #17066 > > 00:16:42 verbose #17067 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:42 verbose #17068 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:42 verbose #17069 > > │ ### closure │ 00:16:42 verbose #17070 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:42 verbose #17071 > > 00:16:42 verbose #17072 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:42 verbose #17073 > > nominal closure t = 00:16:42 verbose #17074 > > `( 00:16:42 verbose #17075 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:42 verbose #17076 > > Fable.Core.Emit(\"wasm_bindgen::closure::Closure<$0>\")>]]\n#endif\ntype 00:16:42 verbose #17077 > > wasm_bindgen_closure_Closure<'T> = class end" 00:16:42 verbose #17078 > > $'' : $'wasm_bindgen_closure_Closure<`t>' 00:16:42 verbose #17079 > > ) 00:16:42 verbose #17080 > > 00:16:42 verbose #17081 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:42 verbose #17082 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:42 verbose #17083 > > │ ### js_function │ 00:16:42 verbose #17084 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:42 verbose #17085 > > 00:16:42 verbose #17086 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:42 verbose #17087 > > nominal js_function = 00:16:42 verbose #17088 > > `( 00:16:42 verbose #17089 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:42 verbose #17090 > > Fable.Core.Emit(\"js_sys::Function\")>]]\n#endif\ntype js_sys_Function = class 00:16:42 verbose #17091 > > end" 00:16:42 verbose #17092 > > $'' : $'js_sys_Function' 00:16:42 verbose #17093 > > ) 00:16:42 verbose #17094 > > 00:16:42 verbose #17095 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:42 verbose #17096 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:42 verbose #17097 > > │ ### window │ 00:16:42 verbose #17098 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:42 verbose #17099 > > 00:16:42 verbose #17100 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:42 verbose #17101 > > nominal window = 00:16:42 verbose #17102 > > `( 00:16:42 verbose #17103 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:42 verbose #17104 > > Fable.Core.Emit(\"web_sys::Window\")>]]\n#endif\ntype web_sys_Window = class 00:16:42 verbose #17105 > > end" 00:16:42 verbose #17106 > > $'' : $'web_sys_Window' 00:16:42 verbose #17107 > > ) 00:16:42 verbose #17108 > > 00:16:42 verbose #17109 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:42 verbose #17110 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:42 verbose #17111 > > │ ### document │ 00:16:42 verbose #17112 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:42 verbose #17113 > > 00:16:42 verbose #17114 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:42 verbose #17115 > > nominal document = 00:16:42 verbose #17116 > > `( 00:16:42 verbose #17117 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:42 verbose #17118 > > Fable.Core.Emit(\"web_sys::Document\")>]]\n#endif\ntype web_sys_Document = class 00:16:42 verbose #17119 > > end" 00:16:42 verbose #17120 > > $'' : $'web_sys_Document' 00:16:42 verbose #17121 > > ) 00:16:42 verbose #17122 > > 00:16:42 verbose #17123 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:42 verbose #17124 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:42 verbose #17125 > > │ ### html_element │ 00:16:42 verbose #17126 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:42 verbose #17127 > > 00:16:42 verbose #17128 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:42 verbose #17129 > > nominal html_element = 00:16:42 verbose #17130 > > `( 00:16:42 verbose #17131 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:42 verbose #17132 > > Fable.Core.Emit(\"web_sys::HtmlElement\")>]]\n#endif\ntype web_sys_HtmlElement = 00:16:42 verbose #17133 > > class end" 00:16:42 verbose #17134 > > $'' : $'web_sys_HtmlElement' 00:16:42 verbose #17135 > > ) 00:16:42 verbose #17136 > > 00:16:42 verbose #17137 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:42 verbose #17138 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:42 verbose #17139 > > │ ### storage │ 00:16:42 verbose #17140 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:42 verbose #17141 > > 00:16:42 verbose #17142 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:42 verbose #17143 > > nominal storage = 00:16:42 verbose #17144 > > `( 00:16:42 verbose #17145 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:42 verbose #17146 > > Fable.Core.Emit(\"web_sys::Storage\")>]]\n#endif\ntype web_sys_Storage = class 00:16:42 verbose #17147 > > end" 00:16:42 verbose #17148 > > $'' : $'web_sys_Storage' 00:16:42 verbose #17149 > > ) 00:16:42 verbose #17150 > > 00:16:42 verbose #17151 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:42 verbose #17152 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:42 verbose #17153 > > │ ### closure_wrap │ 00:16:42 verbose #17154 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:42 verbose #17155 > > 00:16:42 verbose #17156 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:42 verbose #17157 > > inl closure_wrap forall t. (x : rust.box t) : closure t = 00:16:42 verbose #17158 > > inl x = join x 00:16:42 verbose #17159 > > !\($'"wasm_bindgen::closure::Closure::wrap(!x)"') 00:16:42 verbose #17160 > > 00:16:42 verbose #17161 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:42 verbose #17162 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:42 verbose #17163 > > │ ### closure_forget │ 00:16:42 verbose #17164 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:42 verbose #17165 > > 00:16:42 verbose #17166 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:42 verbose #17167 > > inl closure_forget forall t. (closure : closure t) = 00:16:42 verbose #17168 > > !\($'"!closure.forget()"') : () 00:16:43 verbose #17169 > > 00:16:43 verbose #17170 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:43 verbose #17171 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:43 verbose #17172 > > │ ### closure_as_ref │ 00:16:43 verbose #17173 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:43 verbose #17174 > > 00:16:43 verbose #17175 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:43 verbose #17176 > > inl closure_as_ref forall t. (closure : closure t) : rust.ref js_value = 00:16:43 verbose #17177 > > !\($'"wasm_bindgen::closure::Closure::as_ref(&!closure)"') 00:16:43 verbose #17178 > > 00:16:43 verbose #17179 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:43 verbose #17180 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:43 verbose #17181 > > │ ### unchecked_ref │ 00:16:43 verbose #17182 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:43 verbose #17183 > > 00:16:43 verbose #17184 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:43 verbose #17185 > > inl unchecked_ref (ref : rust.ref js_value) : rust.ref js_function = 00:16:43 verbose #17186 > > !\($'"wasm_bindgen::JsCast::unchecked_ref(!ref)"') 00:16:43 verbose #17187 > > 00:16:43 verbose #17188 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:43 verbose #17189 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:43 verbose #17190 > > │ ### set_inner_html │ 00:16:43 verbose #17191 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:43 verbose #17192 > > 00:16:43 verbose #17193 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:43 verbose #17194 > > inl set_inner_html (html : string) (el : html_element) = 00:16:43 verbose #17195 > > inl html = join html 00:16:43 verbose #17196 > > inl html = html |> sm'.as_str 00:16:43 verbose #17197 > > inl el = join el 00:16:43 verbose #17198 > > !\($'"!el.set_inner_html(!html)"') 00:16:43 verbose #17199 > > 00:16:43 verbose #17200 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:43 verbose #17201 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:43 verbose #17202 > > │ ### from_js_value │ 00:16:43 verbose #17203 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:43 verbose #17204 > > 00:16:43 verbose #17205 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:43 verbose #17206 > > inl from_js_value (value : js_value) : resultm.result' (optionm'.option' 00:16:43 verbose #17207 > > sm'.json_value) sm'.std_string = 00:16:43 verbose #17208 > > inl value = join value 00:16:43 verbose #17209 > > !\($'"serde_wasm_bindgen::from_value(!value)"') 00:16:43 verbose #17210 > > |> resultm.map_error' fun (x : sm'.serde_wasm_bindgen_error) => x |> 00:16:43 verbose #17211 > > sm'.format' 00:16:43 verbose #17212 > 00:00:06 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 12251 } 00:16:43 verbose #17213 > 00:00:06 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:16:43 verbose #17214 > "nbconvert", 00:16:43 verbose #17215 > "/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.ipynb", 00:16:43 verbose #17216 > "--to", 00:16:43 verbose #17217 > "html", 00:16:43 verbose #17218 > "--HTMLExporter.theme=dark", 00:16:43 verbose #17219 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:16:44 verbose #17220 > 00:00:06 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.ipynb to html 00:16:44 verbose #17221 > 00:00:06 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:16:44 verbose #17222 > 00:00:06 verbose #7 ! validate(nb) 00:16:44 verbose #17223 > 00:00:07 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:16:44 verbose #17224 > 00:00:07 verbose #9 ! return _pygments_highlight( 00:16:44 verbose #17225 > 00:00:07 verbose #10 ! [NbConvertApp] Writing 302326 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.html 00:16:44 verbose #17226 > 00:00:07 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 } 00:16:44 verbose #17227 > 00:00:07 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 } 00:16:44 verbose #17228 > 00:00:07 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:16:44 verbose #17229 > "-c", 00:16:44 verbose #17230 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:16:44 verbose #17231 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:16:45 verbose #17232 > 00:00:07 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:16:45 verbose #17233 > 00:00:07 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:16:45 verbose #17234 > 00:00:07 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 13202 } 00:16:45 debug #17235 runtime.execute_with_options_async / { exit_code = 0; output_length = 16472 } 00:16:45 debug #23 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path wasm.dib --retries 3 00:16:45 debug #17236 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path leptos/leptos.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:16:45 verbose #17237 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "leptos/leptos.dib", "--retries", "3"])) } 00:16:45 verbose #17238 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:16:45 verbose #17239 > "repl", 00:16:45 verbose #17240 > "--exit-after-run", 00:16:45 verbose #17241 > "--run", 00:16:45 verbose #17242 > "/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib", 00:16:45 verbose #17243 > "--output-path", 00:16:45 verbose #17244 > "/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.ipynb", 00:16:45 verbose #17245 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:16:46 verbose #17246 > > 00:16:46 verbose #17247 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:46 verbose #17248 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:46 verbose #17249 > > │ # leptos │ 00:16:46 verbose #17250 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:48 verbose #17251 > > 00:16:48 verbose #17252 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:48 verbose #17253 > > open rust.rust_operators 00:16:48 verbose #17254 > > open rust 00:16:48 verbose #17255 > > open sm'_operators 00:16:49 verbose #17256 > > 00:16:49 verbose #17257 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:49 verbose #17258 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:49 verbose #17259 > > │ ### a' │ 00:16:49 verbose #17260 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:49 verbose #17261 > > 00:16:49 verbose #17262 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:49 verbose #17263 > > nominal a' = 00:16:49 verbose #17264 > > `( 00:16:49 verbose #17265 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:49 verbose #17266 > > Fable.Core.Emit(\"leptos::html::A\")>]]\n#endif\ntype leptos_html_A = class end" 00:16:49 verbose #17267 > > $'' : $'leptos_html_A' 00:16:49 verbose #17268 > > ) 00:16:49 verbose #17269 > > 00:16:49 verbose #17270 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:49 verbose #17271 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:49 verbose #17272 > > │ ### event │ 00:16:49 verbose #17273 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:49 verbose #17274 > > 00:16:49 verbose #17275 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:49 verbose #17276 > > nominal event = 00:16:49 verbose #17277 > > `( 00:16:49 verbose #17278 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:49 verbose #17279 > > Fable.Core.Emit(\"leptos::ev::Event\")>]]\n#endif\ntype leptos_ev_Event = class 00:16:49 verbose #17280 > > end" 00:16:49 verbose #17281 > > $'' : $'leptos_ev_Event' 00:16:49 verbose #17282 > > ) 00:16:49 verbose #17283 > > 00:16:49 verbose #17284 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:49 verbose #17285 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:49 verbose #17286 > > │ ### mouse_event │ 00:16:49 verbose #17287 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:49 verbose #17288 > > 00:16:49 verbose #17289 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:49 verbose #17290 > > nominal mouse_event = 00:16:49 verbose #17291 > > `( 00:16:49 verbose #17292 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:49 verbose #17293 > > Fable.Core.Emit(\"leptos::ev::MouseEvent\")>]]\n#endif\ntype 00:16:49 verbose #17294 > > leptos_ev_MouseEvent = class end" 00:16:49 verbose #17295 > > $'' : $'leptos_ev_MouseEvent' 00:16:49 verbose #17296 > > ) 00:16:49 verbose #17297 > > 00:16:49 verbose #17298 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:49 verbose #17299 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:49 verbose #17300 > > │ ### button │ 00:16:49 verbose #17301 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:49 verbose #17302 > > 00:16:49 verbose #17303 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:49 verbose #17304 > > nominal button = 00:16:49 verbose #17305 > > `( 00:16:49 verbose #17306 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:49 verbose #17307 > > Fable.Core.Emit(\"leptos::html::Button\")>]]\n#endif\ntype leptos_html_Button = 00:16:49 verbose #17308 > > class end" 00:16:49 verbose #17309 > > $'' : $'leptos_html_Button' 00:16:49 verbose #17310 > > ) 00:16:49 verbose #17311 > > 00:16:49 verbose #17312 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:49 verbose #17313 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:49 verbose #17314 > > │ ### details │ 00:16:49 verbose #17315 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:49 verbose #17316 > > 00:16:49 verbose #17317 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:49 verbose #17318 > > nominal details = 00:16:49 verbose #17319 > > `( 00:16:49 verbose #17320 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:49 verbose #17321 > > Fable.Core.Emit(\"leptos::html::Details\")>]]\n#endif\ntype leptos_html_Details 00:16:49 verbose #17322 > > = class end" 00:16:49 verbose #17323 > > $'' : $'leptos_html_Details' 00:16:49 verbose #17324 > > ) 00:16:50 verbose #17325 > > 00:16:50 verbose #17326 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:50 verbose #17327 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:50 verbose #17328 > > │ ### dd │ 00:16:50 verbose #17329 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:50 verbose #17330 > > 00:16:50 verbose #17331 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:50 verbose #17332 > > nominal dd = 00:16:50 verbose #17333 > > `( 00:16:50 verbose #17334 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:50 verbose #17335 > > Fable.Core.Emit(\"leptos::html::Dd\")>]]\n#endif\ntype leptos_html_Dd = class 00:16:50 verbose #17336 > > end" 00:16:50 verbose #17337 > > $'' : $'leptos_html_Dd' 00:16:50 verbose #17338 > > ) 00:16:50 verbose #17339 > > 00:16:50 verbose #17340 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:50 verbose #17341 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:50 verbose #17342 > > │ ### div │ 00:16:50 verbose #17343 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:50 verbose #17344 > > 00:16:50 verbose #17345 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:50 verbose #17346 > > nominal div = 00:16:50 verbose #17347 > > `( 00:16:50 verbose #17348 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:50 verbose #17349 > > Fable.Core.Emit(\"leptos::html::Div\")>]]\n#endif\ntype leptos_html_Div = class 00:16:50 verbose #17350 > > end" 00:16:50 verbose #17351 > > $'' : $'leptos_html_Div' 00:16:50 verbose #17352 > > ) 00:16:50 verbose #17353 > > 00:16:50 verbose #17354 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:50 verbose #17355 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:50 verbose #17356 > > │ ### dl │ 00:16:50 verbose #17357 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:50 verbose #17358 > > 00:16:50 verbose #17359 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:50 verbose #17360 > > nominal dl = 00:16:50 verbose #17361 > > `( 00:16:50 verbose #17362 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:50 verbose #17363 > > Fable.Core.Emit(\"leptos::html::Dl\")>]]\n#endif\ntype leptos_html_Dl = class 00:16:50 verbose #17364 > > end" 00:16:50 verbose #17365 > > $'' : $'leptos_html_Dl' 00:16:50 verbose #17366 > > ) 00:16:50 verbose #17367 > > 00:16:50 verbose #17368 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:50 verbose #17369 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:50 verbose #17370 > > │ ### dt │ 00:16:50 verbose #17371 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:50 verbose #17372 > > 00:16:50 verbose #17373 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:50 verbose #17374 > > nominal dt = 00:16:50 verbose #17375 > > `( 00:16:50 verbose #17376 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:50 verbose #17377 > > Fable.Core.Emit(\"leptos::html::Dt\")>]]\n#endif\ntype leptos_html_Dt = class 00:16:50 verbose #17378 > > end" 00:16:50 verbose #17379 > > $'' : $'leptos_html_Dt' 00:16:50 verbose #17380 > > ) 00:16:50 verbose #17381 > > 00:16:50 verbose #17382 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:50 verbose #17383 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:50 verbose #17384 > > │ ### footer │ 00:16:50 verbose #17385 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:50 verbose #17386 > > 00:16:50 verbose #17387 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:50 verbose #17388 > > nominal footer = 00:16:50 verbose #17389 > > `( 00:16:50 verbose #17390 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:50 verbose #17391 > > Fable.Core.Emit(\"leptos::html::Footer\")>]]\n#endif\ntype leptos_html_Footer = 00:16:50 verbose #17392 > > class end" 00:16:50 verbose #17393 > > $'' : $'leptos_html_Footer' 00:16:50 verbose #17394 > > ) 00:16:50 verbose #17395 > > 00:16:50 verbose #17396 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:50 verbose #17397 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:50 verbose #17398 > > │ ### header │ 00:16:50 verbose #17399 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:50 verbose #17400 > > 00:16:50 verbose #17401 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:50 verbose #17402 > > nominal header = 00:16:50 verbose #17403 > > `( 00:16:50 verbose #17404 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:50 verbose #17405 > > Fable.Core.Emit(\"leptos::html::Header\")>]]\n#endif\ntype leptos_html_Header = 00:16:50 verbose #17406 > > class end" 00:16:50 verbose #17407 > > $'' : $'leptos_html_Header' 00:16:50 verbose #17408 > > ) 00:16:50 verbose #17409 > > 00:16:50 verbose #17410 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:50 verbose #17411 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:50 verbose #17412 > > │ ### input │ 00:16:50 verbose #17413 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:50 verbose #17414 > > 00:16:50 verbose #17415 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:50 verbose #17416 > > nominal input = 00:16:50 verbose #17417 > > `( 00:16:50 verbose #17418 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:50 verbose #17419 > > Fable.Core.Emit(\"leptos::html::Input\")>]]\n#endif\ntype leptos_html_Input = 00:16:50 verbose #17420 > > class end" 00:16:50 verbose #17421 > > $'' : $'leptos_html_Input' 00:16:50 verbose #17422 > > ) 00:16:50 verbose #17423 > > 00:16:50 verbose #17424 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:50 verbose #17425 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:50 verbose #17426 > > │ ### label │ 00:16:50 verbose #17427 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:50 verbose #17428 > > 00:16:50 verbose #17429 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:50 verbose #17430 > > nominal label = 00:16:50 verbose #17431 > > `( 00:16:50 verbose #17432 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:50 verbose #17433 > > Fable.Core.Emit(\"leptos::html::Label\")>]]\n#endif\ntype leptos_html_Label = 00:16:50 verbose #17434 > > class end" 00:16:50 verbose #17435 > > $'' : $'leptos_html_Label' 00:16:50 verbose #17436 > > ) 00:16:50 verbose #17437 > > 00:16:50 verbose #17438 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:50 verbose #17439 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:50 verbose #17440 > > │ ### main │ 00:16:50 verbose #17441 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:50 verbose #17442 > > 00:16:50 verbose #17443 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:50 verbose #17444 > > nominal main = 00:16:50 verbose #17445 > > `( 00:16:50 verbose #17446 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:50 verbose #17447 > > Fable.Core.Emit(\"leptos::html::Main\")>]]\n#endif\ntype leptos_html_Main = 00:16:50 verbose #17448 > > class end" 00:16:50 verbose #17449 > > $'' : $'leptos_html_Main' 00:16:50 verbose #17450 > > ) 00:16:51 verbose #17451 > > 00:16:51 verbose #17452 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:51 verbose #17453 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:51 verbose #17454 > > │ ### nav │ 00:16:51 verbose #17455 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:51 verbose #17456 > > 00:16:51 verbose #17457 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:51 verbose #17458 > > nominal nav = 00:16:51 verbose #17459 > > `( 00:16:51 verbose #17460 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:51 verbose #17461 > > Fable.Core.Emit(\"leptos::html::Nav\")>]]\n#endif\ntype leptos_html_Nav = class 00:16:51 verbose #17462 > > end" 00:16:51 verbose #17463 > > $'' : $'leptos_html_Nav' 00:16:51 verbose #17464 > > ) 00:16:51 verbose #17465 > > 00:16:51 verbose #17466 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:51 verbose #17467 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:51 verbose #17468 > > │ ### option' │ 00:16:51 verbose #17469 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:51 verbose #17470 > > 00:16:51 verbose #17471 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:51 verbose #17472 > > nominal option' = 00:16:51 verbose #17473 > > `( 00:16:51 verbose #17474 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:51 verbose #17475 > > Fable.Core.Emit(\"leptos::html::Option_\")>]]\n#endif\ntype leptos_html_Option = 00:16:51 verbose #17476 > > class end" 00:16:51 verbose #17477 > > $'' : $'leptos_html_Option' 00:16:51 verbose #17478 > > ) 00:16:51 verbose #17479 > > 00:16:51 verbose #17480 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:51 verbose #17481 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:51 verbose #17482 > > │ ### pre │ 00:16:51 verbose #17483 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:51 verbose #17484 > > 00:16:51 verbose #17485 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:51 verbose #17486 > > nominal pre = 00:16:51 verbose #17487 > > `( 00:16:51 verbose #17488 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:51 verbose #17489 > > Fable.Core.Emit(\"leptos::html::Pre\")>]]\n#endif\ntype leptos_html_Pre = class 00:16:51 verbose #17490 > > end" 00:16:51 verbose #17491 > > $'' : $'leptos_html_Pre' 00:16:51 verbose #17492 > > ) 00:16:51 verbose #17493 > > 00:16:51 verbose #17494 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:51 verbose #17495 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:51 verbose #17496 > > │ ### select │ 00:16:51 verbose #17497 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:51 verbose #17498 > > 00:16:51 verbose #17499 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:51 verbose #17500 > > nominal select = 00:16:51 verbose #17501 > > `( 00:16:51 verbose #17502 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:51 verbose #17503 > > Fable.Core.Emit(\"leptos::html::Select\")>]]\n#endif\ntype leptos_html_Select = 00:16:51 verbose #17504 > > class end" 00:16:51 verbose #17505 > > $'' : $'leptos_html_Select' 00:16:51 verbose #17506 > > ) 00:16:51 verbose #17507 > > 00:16:51 verbose #17508 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:51 verbose #17509 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:51 verbose #17510 > > │ ### span │ 00:16:51 verbose #17511 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:51 verbose #17512 > > 00:16:51 verbose #17513 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:51 verbose #17514 > > nominal span = 00:16:51 verbose #17515 > > `( 00:16:51 verbose #17516 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:51 verbose #17517 > > Fable.Core.Emit(\"leptos::html::Span\")>]]\n#endif\ntype leptos_html_Span = 00:16:51 verbose #17518 > > class end" 00:16:51 verbose #17519 > > $'' : $'leptos_html_Span' 00:16:51 verbose #17520 > > ) 00:16:51 verbose #17521 > > 00:16:51 verbose #17522 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:51 verbose #17523 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:51 verbose #17524 > > │ ### summary │ 00:16:51 verbose #17525 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:51 verbose #17526 > > 00:16:51 verbose #17527 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:51 verbose #17528 > > nominal summary = 00:16:51 verbose #17529 > > `( 00:16:51 verbose #17530 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:51 verbose #17531 > > Fable.Core.Emit(\"leptos::html::Summary\")>]]\n#endif\ntype leptos_html_Summary 00:16:51 verbose #17532 > > = class end" 00:16:51 verbose #17533 > > $'' : $'leptos_html_Summary' 00:16:51 verbose #17534 > > ) 00:16:51 verbose #17535 > > 00:16:51 verbose #17536 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:51 verbose #17537 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:51 verbose #17538 > > │ ### table │ 00:16:51 verbose #17539 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:51 verbose #17540 > > 00:16:51 verbose #17541 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:51 verbose #17542 > > nominal table = 00:16:51 verbose #17543 > > `( 00:16:51 verbose #17544 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:51 verbose #17545 > > Fable.Core.Emit(\"leptos::html::Table\")>]]\n#endif\ntype leptos_html_Table = 00:16:51 verbose #17546 > > class end" 00:16:51 verbose #17547 > > $'' : $'leptos_html_Table' 00:16:51 verbose #17548 > > ) 00:16:51 verbose #17549 > > 00:16:51 verbose #17550 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:51 verbose #17551 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:51 verbose #17552 > > │ ### thead │ 00:16:51 verbose #17553 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:51 verbose #17554 > > 00:16:51 verbose #17555 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:51 verbose #17556 > > nominal thead = 00:16:51 verbose #17557 > > `( 00:16:51 verbose #17558 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:51 verbose #17559 > > Fable.Core.Emit(\"leptos::html::Thead\")>]]\n#endif\ntype leptos_html_Thead = 00:16:51 verbose #17560 > > class end" 00:16:51 verbose #17561 > > $'' : $'leptos_html_Thead' 00:16:51 verbose #17562 > > ) 00:16:51 verbose #17563 > > 00:16:51 verbose #17564 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:51 verbose #17565 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:51 verbose #17566 > > │ ### tbody │ 00:16:51 verbose #17567 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:51 verbose #17568 > > 00:16:51 verbose #17569 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:51 verbose #17570 > > nominal tbody = 00:16:51 verbose #17571 > > `( 00:16:51 verbose #17572 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:51 verbose #17573 > > Fable.Core.Emit(\"leptos::html::Tbody\")>]]\n#endif\ntype leptos_html_Tbody = 00:16:51 verbose #17574 > > class end" 00:16:51 verbose #17575 > > $'' : $'leptos_html_Tbody' 00:16:51 verbose #17576 > > ) 00:16:51 verbose #17577 > > 00:16:51 verbose #17578 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:51 verbose #17579 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:51 verbose #17580 > > │ ### tr │ 00:16:51 verbose #17581 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:51 verbose #17582 > > 00:16:51 verbose #17583 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:51 verbose #17584 > > nominal tr = 00:16:51 verbose #17585 > > `( 00:16:51 verbose #17586 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:51 verbose #17587 > > Fable.Core.Emit(\"leptos::html::Tr\")>]]\n#endif\ntype leptos_html_Tr = class 00:16:51 verbose #17588 > > end" 00:16:51 verbose #17589 > > $'' : $'leptos_html_Tr' 00:16:51 verbose #17590 > > ) 00:16:51 verbose #17591 > > 00:16:51 verbose #17592 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:51 verbose #17593 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:51 verbose #17594 > > │ ### th │ 00:16:51 verbose #17595 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:51 verbose #17596 > > 00:16:51 verbose #17597 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:51 verbose #17598 > > nominal th = 00:16:51 verbose #17599 > > `( 00:16:51 verbose #17600 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:51 verbose #17601 > > Fable.Core.Emit(\"leptos::html::Th\")>]]\n#endif\ntype leptos_html_Th = class 00:16:51 verbose #17602 > > end" 00:16:51 verbose #17603 > > $'' : $'leptos_html_Th' 00:16:51 verbose #17604 > > ) 00:16:52 verbose #17605 > > 00:16:52 verbose #17606 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:52 verbose #17607 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:52 verbose #17608 > > │ ### td │ 00:16:52 verbose #17609 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:52 verbose #17610 > > 00:16:52 verbose #17611 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:52 verbose #17612 > > nominal td = 00:16:52 verbose #17613 > > `( 00:16:52 verbose #17614 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:52 verbose #17615 > > Fable.Core.Emit(\"leptos::html::Td\")>]]\n#endif\ntype leptos_html_Td = class 00:16:52 verbose #17616 > > end" 00:16:52 verbose #17617 > > $'' : $'leptos_html_Td' 00:16:52 verbose #17618 > > ) 00:16:52 verbose #17619 > > 00:16:52 verbose #17620 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:52 verbose #17621 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:52 verbose #17622 > > │ ### svg │ 00:16:52 verbose #17623 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:52 verbose #17624 > > 00:16:52 verbose #17625 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:52 verbose #17626 > > nominal svg = 00:16:52 verbose #17627 > > `( 00:16:52 verbose #17628 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:52 verbose #17629 > > Fable.Core.Emit(\"leptos::svg::Svg\")>]]\n#endif\ntype leptos_svg_Svg = class 00:16:52 verbose #17630 > > end" 00:16:52 verbose #17631 > > $'' : $'leptos_svg_Svg' 00:16:52 verbose #17632 > > ) 00:16:52 verbose #17633 > > 00:16:52 verbose #17634 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:52 verbose #17635 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:52 verbose #17636 > > │ ### path │ 00:16:52 verbose #17637 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:52 verbose #17638 > > 00:16:52 verbose #17639 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:52 verbose #17640 > > nominal path = 00:16:52 verbose #17641 > > `( 00:16:52 verbose #17642 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:52 verbose #17643 > > Fable.Core.Emit(\"leptos::svg::Path\")>]]\n#endif\ntype leptos_svg_Path = class 00:16:52 verbose #17644 > > end" 00:16:52 verbose #17645 > > $'' : $'leptos_svg_Path' 00:16:52 verbose #17646 > > ) 00:16:52 verbose #17647 > > 00:16:52 verbose #17648 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:52 verbose #17649 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:52 verbose #17650 > > │ ### circle │ 00:16:52 verbose #17651 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:52 verbose #17652 > > 00:16:52 verbose #17653 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:52 verbose #17654 > > nominal circle = 00:16:52 verbose #17655 > > `( 00:16:52 verbose #17656 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:52 verbose #17657 > > Fable.Core.Emit(\"leptos::svg::Circle\")>]]\n#endif\ntype leptos_svg_Circle = 00:16:52 verbose #17658 > > class end" 00:16:52 verbose #17659 > > $'' : $'leptos_svg_Circle' 00:16:52 verbose #17660 > > ) 00:16:52 verbose #17661 > > 00:16:52 verbose #17662 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:52 verbose #17663 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:52 verbose #17664 > > │ ### rect │ 00:16:52 verbose #17665 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:52 verbose #17666 > > 00:16:52 verbose #17667 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:52 verbose #17668 > > nominal rect = 00:16:52 verbose #17669 > > `( 00:16:52 verbose #17670 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:52 verbose #17671 > > Fable.Core.Emit(\"leptos::svg::Rect\")>]]\n#endif\ntype leptos_svg_Rect = class 00:16:52 verbose #17672 > > end" 00:16:52 verbose #17673 > > $'' : $'leptos_svg_Rect' 00:16:52 verbose #17674 > > ) 00:16:52 verbose #17675 > > 00:16:52 verbose #17676 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:52 verbose #17677 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:52 verbose #17678 > > │ ### animate │ 00:16:52 verbose #17679 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:52 verbose #17680 > > 00:16:52 verbose #17681 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:52 verbose #17682 > > nominal animate = 00:16:52 verbose #17683 > > `( 00:16:52 verbose #17684 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:52 verbose #17685 > > Fable.Core.Emit(\"leptos::svg::Animate\")>]]\n#endif\ntype leptos_svg_Animate = 00:16:52 verbose #17686 > > class end" 00:16:52 verbose #17687 > > $'' : $'leptos_svg_Animate' 00:16:52 verbose #17688 > > ) 00:16:52 verbose #17689 > > 00:16:52 verbose #17690 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:52 verbose #17691 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:52 verbose #17692 > > │ ### action │ 00:16:52 verbose #17693 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:52 verbose #17694 > > 00:16:52 verbose #17695 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:52 verbose #17696 > > nominal action t u = 00:16:52 verbose #17697 > > `( 00:16:52 verbose #17698 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:52 verbose #17699 > > Fable.Core.Emit(\"leptos::Action<$0, $1>\")>]]\n#endif\ntype leptos_Action<'T, 00:16:52 verbose #17700 > > 'U> = class end" 00:16:52 verbose #17701 > > $'' : $'leptos_Action<`t, `u>' 00:16:52 verbose #17702 > > ) 00:16:52 verbose #17703 > > 00:16:52 verbose #17704 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:52 verbose #17705 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:52 verbose #17706 > > │ ### for │ 00:16:52 verbose #17707 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:52 verbose #17708 > > 00:16:52 verbose #17709 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:52 verbose #17710 > > nominal for = 00:16:52 verbose #17711 > > `( 00:16:52 verbose #17712 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:52 verbose #17713 > > Fable.Core.Emit(\"leptos::For\")>]]\n#endif\ntype leptos_For = class end" 00:16:52 verbose #17714 > > $'' : $'leptos_For' 00:16:52 verbose #17715 > > ) 00:16:52 verbose #17716 > > 00:16:52 verbose #17717 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:52 verbose #17718 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:52 verbose #17719 > > │ ### show │ 00:16:52 verbose #17720 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:52 verbose #17721 > > 00:16:52 verbose #17722 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:52 verbose #17723 > > nominal show = 00:16:52 verbose #17724 > > `( 00:16:52 verbose #17725 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:52 verbose #17726 > > Fable.Core.Emit(\"leptos::Show\")>]]\n#endif\ntype leptos_Show = class end" 00:16:52 verbose #17727 > > $'' : $'leptos_Show' 00:16:52 verbose #17728 > > ) 00:16:52 verbose #17729 > > 00:16:52 verbose #17730 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:52 verbose #17731 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:52 verbose #17732 > > │ ### fragment │ 00:16:52 verbose #17733 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:52 verbose #17734 > > 00:16:52 verbose #17735 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:52 verbose #17736 > > nominal fragment = 00:16:52 verbose #17737 > > `( 00:16:52 verbose #17738 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:52 verbose #17739 > > Fable.Core.Emit(\"leptos::Fragment\")>]]\n#endif\ntype leptos_Fragment = class 00:16:52 verbose #17740 > > end" 00:16:52 verbose #17741 > > $'' : $'leptos_Fragment' 00:16:52 verbose #17742 > > ) 00:16:52 verbose #17743 > > 00:16:52 verbose #17744 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:52 verbose #17745 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:52 verbose #17746 > > │ ### interval_handle │ 00:16:52 verbose #17747 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:52 verbose #17748 > > 00:16:52 verbose #17749 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:52 verbose #17750 > > nominal interval_handle = 00:16:52 verbose #17751 > > `( 00:16:52 verbose #17752 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:52 verbose #17753 > > Fable.Core.Emit(\"leptos::leptos_dom::helpers::IntervalHandle\")>]]\n#endif\ntyp 00:16:52 verbose #17754 > > e leptos_dom_IntervalHandle = class end" 00:16:52 verbose #17755 > > $'' : $'leptos_dom_IntervalHandle' 00:16:52 verbose #17756 > > ) 00:16:53 verbose #17757 > > 00:16:53 verbose #17758 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:53 verbose #17759 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:53 verbose #17760 > > │ ### text │ 00:16:53 verbose #17761 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:53 verbose #17762 > > 00:16:53 verbose #17763 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:53 verbose #17764 > > nominal text = 00:16:53 verbose #17765 > > `( 00:16:53 verbose #17766 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:53 verbose #17767 > > Fable.Core.Emit(\"leptos::leptos_dom::Text\")>]]\n#endif\ntype leptos_dom_Text = 00:16:53 verbose #17768 > > class end" 00:16:53 verbose #17769 > > $'' : $'leptos_dom_Text' 00:16:53 verbose #17770 > > ) 00:16:53 verbose #17771 > > 00:16:53 verbose #17772 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:53 verbose #17773 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:53 verbose #17774 > > │ ### transparent │ 00:16:53 verbose #17775 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:53 verbose #17776 > > 00:16:53 verbose #17777 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:53 verbose #17778 > > nominal transparent = 00:16:53 verbose #17779 > > `( 00:16:53 verbose #17780 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:53 verbose #17781 > > Fable.Core.Emit(\"leptos::leptos_dom::Transparent\")>]]\n#endif\ntype 00:16:53 verbose #17782 > > leptos_dom_Transparent = class end" 00:16:53 verbose #17783 > > $'' : $'leptos_dom_Transparent' 00:16:53 verbose #17784 > > ) 00:16:53 verbose #17785 > > 00:16:53 verbose #17786 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:53 verbose #17787 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:53 verbose #17788 > > │ ### route │ 00:16:53 verbose #17789 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:53 verbose #17790 > > 00:16:53 verbose #17791 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:53 verbose #17792 > > nominal route = 00:16:53 verbose #17793 > > `( 00:16:53 verbose #17794 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:53 verbose #17795 > > Fable.Core.Emit(\"leptos_router::Route\")>]]\n#endif\ntype leptos_router_Route = 00:16:53 verbose #17796 > > class end" 00:16:53 verbose #17797 > > $'' : $'leptos_router_Route' 00:16:53 verbose #17798 > > ) 00:16:53 verbose #17799 > > 00:16:53 verbose #17800 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:53 verbose #17801 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:53 verbose #17802 > > │ ### route_definition │ 00:16:53 verbose #17803 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:53 verbose #17804 > > 00:16:53 verbose #17805 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:53 verbose #17806 > > nominal route_definition = 00:16:53 verbose #17807 > > `( 00:16:53 verbose #17808 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:53 verbose #17809 > > Fable.Core.Emit(\"leptos_router::RouteDefinition\")>]]\n#endif\ntype 00:16:53 verbose #17810 > > leptos_router_RouteDefinition = class end" 00:16:53 verbose #17811 > > $'' : $'leptos_router_RouteDefinition' 00:16:53 verbose #17812 > > ) 00:16:53 verbose #17813 > > 00:16:53 verbose #17814 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:53 verbose #17815 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:53 verbose #17816 > > │ ### router │ 00:16:53 verbose #17817 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:53 verbose #17818 > > 00:16:53 verbose #17819 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:53 verbose #17820 > > nominal router = 00:16:53 verbose #17821 > > `( 00:16:53 verbose #17822 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:53 verbose #17823 > > Fable.Core.Emit(\"leptos_router::Router\")>]]\n#endif\ntype leptos_router_Router 00:16:53 verbose #17824 > > = class end" 00:16:53 verbose #17825 > > $'' : $'leptos_router_Router' 00:16:53 verbose #17826 > > ) 00:16:53 verbose #17827 > > 00:16:53 verbose #17828 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:53 verbose #17829 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:53 verbose #17830 > > │ ### routes │ 00:16:53 verbose #17831 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:53 verbose #17832 > > 00:16:53 verbose #17833 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:53 verbose #17834 > > nominal routes = 00:16:53 verbose #17835 > > `( 00:16:53 verbose #17836 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:53 verbose #17837 > > Fable.Core.Emit(\"leptos_router::Routes\")>]]\n#endif\ntype leptos_router_Routes 00:16:53 verbose #17838 > > = class end" 00:16:53 verbose #17839 > > $'' : $'leptos_router_Routes' 00:16:53 verbose #17840 > > ) 00:16:53 verbose #17841 > > 00:16:53 verbose #17842 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:53 verbose #17843 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:53 verbose #17844 > > │ ### html_element │ 00:16:53 verbose #17845 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:53 verbose #17846 > > 00:16:53 verbose #17847 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:53 verbose #17848 > > nominal html_element t = 00:16:53 verbose #17849 > > `( 00:16:53 verbose #17850 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:53 verbose #17851 > > Fable.Core.Emit(\"leptos::HtmlElement<$0>\")>]]\n#endif\ntype 00:16:53 verbose #17852 > > leptos_HtmlElement<'T> = class end" 00:16:53 verbose #17853 > > $'' : $'leptos_HtmlElement<`t>' 00:16:53 verbose #17854 > > ) 00:16:53 verbose #17855 > > 00:16:53 verbose #17856 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:53 verbose #17857 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:53 verbose #17858 > > │ ### into_view │ 00:16:53 verbose #17859 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:53 verbose #17860 > > 00:16:53 verbose #17861 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:53 verbose #17862 > > nominal into_view = 00:16:53 verbose #17863 > > `( 00:16:53 verbose #17864 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:53 verbose #17865 > > Fable.Core.Emit(\"leptos::IntoView\")>]]\n#endif\ntype leptos_IntoView = class 00:16:53 verbose #17866 > > end" 00:16:53 verbose #17867 > > $'' : $'leptos_IntoView' 00:16:53 verbose #17868 > > ) 00:16:53 verbose #17869 > > 00:16:53 verbose #17870 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:53 verbose #17871 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:53 verbose #17872 > > │ ### location │ 00:16:53 verbose #17873 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:53 verbose #17874 > > 00:16:53 verbose #17875 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:53 verbose #17876 > > nominal location = 00:16:53 verbose #17877 > > `( 00:16:53 verbose #17878 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:53 verbose #17879 > > Fable.Core.Emit(\"leptos_router::Location\")>]]\n#endif\ntype 00:16:53 verbose #17880 > > leptos_router_Location = class end" 00:16:53 verbose #17881 > > $'' : $'leptos_router_Location' 00:16:53 verbose #17882 > > ) 00:16:53 verbose #17883 > > 00:16:53 verbose #17884 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:53 verbose #17885 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:53 verbose #17886 > > │ ### navigate_options │ 00:16:53 verbose #17887 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:53 verbose #17888 > > 00:16:53 verbose #17889 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:53 verbose #17890 > > nominal navigate_options = 00:16:53 verbose #17891 > > `( 00:16:53 verbose #17892 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:53 verbose #17893 > > Fable.Core.Emit(\"leptos_router::NavigateOptions\")>]]\n#endif\ntype 00:16:53 verbose #17894 > > leptos_router_NavigateOptions = class end" 00:16:53 verbose #17895 > > $'' : $'leptos_router_NavigateOptions' 00:16:53 verbose #17896 > > ) 00:16:53 verbose #17897 > > 00:16:53 verbose #17898 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:53 verbose #17899 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:53 verbose #17900 > > │ ### url │ 00:16:53 verbose #17901 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:53 verbose #17902 > > 00:16:53 verbose #17903 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:53 verbose #17904 > > nominal url = 00:16:53 verbose #17905 > > `( 00:16:53 verbose #17906 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:53 verbose #17907 > > Fable.Core.Emit(\"leptos_router::Url\")>]]\n#endif\ntype leptos_router_Url = 00:16:53 verbose #17908 > > class end" 00:16:53 verbose #17909 > > $'' : $'leptos_router_Url' 00:16:53 verbose #17910 > > ) 00:16:54 verbose #17911 > > 00:16:54 verbose #17912 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:54 verbose #17913 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:54 verbose #17914 > > │ ### memo │ 00:16:54 verbose #17915 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:54 verbose #17916 > > 00:16:54 verbose #17917 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:54 verbose #17918 > > nominal memo t = 00:16:54 verbose #17919 > > `( 00:16:54 verbose #17920 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:54 verbose #17921 > > Fable.Core.Emit(\"leptos::Memo<$0>\")>]]\n#endif\ntype leptos_Memo<'T> = class 00:16:54 verbose #17922 > > end" 00:16:54 verbose #17923 > > $'' : $'leptos_Memo<`t>' 00:16:54 verbose #17924 > > ) 00:16:54 verbose #17925 > > 00:16:54 verbose #17926 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:54 verbose #17927 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:54 verbose #17928 > > │ ### rw_signal │ 00:16:54 verbose #17929 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:54 verbose #17930 > > 00:16:54 verbose #17931 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:54 verbose #17932 > > nominal rw_signal t = 00:16:54 verbose #17933 > > `( 00:16:54 verbose #17934 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:54 verbose #17935 > > Fable.Core.Emit(\"leptos::RwSignal<$0>\")>]]\n#endif\ntype leptos_RwSignal<'T> = 00:16:54 verbose #17936 > > class end" 00:16:54 verbose #17937 > > $'' : $'leptos_RwSignal<`t>' 00:16:54 verbose #17938 > > ) 00:16:54 verbose #17939 > > 00:16:54 verbose #17940 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:54 verbose #17941 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:54 verbose #17942 > > │ ### signal │ 00:16:54 verbose #17943 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:54 verbose #17944 > > 00:16:54 verbose #17945 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:54 verbose #17946 > > nominal signal t = 00:16:54 verbose #17947 > > `( 00:16:54 verbose #17948 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:54 verbose #17949 > > Fable.Core.Emit(\"leptos::Signal<$0>\")>]]\n#endif\ntype leptos_Signal<'T> = 00:16:54 verbose #17950 > > class end" 00:16:54 verbose #17951 > > $'' : $'leptos_Signal<`t>' 00:16:54 verbose #17952 > > ) 00:16:54 verbose #17953 > > 00:16:54 verbose #17954 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:54 verbose #17955 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:54 verbose #17956 > > │ ### read_signal │ 00:16:54 verbose #17957 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:54 verbose #17958 > > 00:16:54 verbose #17959 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:54 verbose #17960 > > nominal read_signal t = 00:16:54 verbose #17961 > > `( 00:16:54 verbose #17962 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:54 verbose #17963 > > Fable.Core.Emit(\"leptos::ReadSignal<$0>\")>]]\n#endif\ntype 00:16:54 verbose #17964 > > leptos_ReadSignal<'T> = class end" 00:16:54 verbose #17965 > > $'' : $'leptos_ReadSignal<`t>' 00:16:54 verbose #17966 > > ) 00:16:54 verbose #17967 > > 00:16:54 verbose #17968 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:54 verbose #17969 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:54 verbose #17970 > > │ ### write_signal │ 00:16:54 verbose #17971 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:54 verbose #17972 > > 00:16:54 verbose #17973 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:54 verbose #17974 > > nominal write_signal t = 00:16:54 verbose #17975 > > `( 00:16:54 verbose #17976 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:54 verbose #17977 > > Fable.Core.Emit(\"leptos::WriteSignal<$0>\")>]]\n#endif\ntype 00:16:54 verbose #17978 > > leptos_WriteSignal<'T> = class end" 00:16:54 verbose #17979 > > $'' : $'leptos_WriteSignal<`t>' 00:16:54 verbose #17980 > > ) 00:16:54 verbose #17981 > > 00:16:54 verbose #17982 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:54 verbose #17983 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:54 verbose #17984 > > │ ### resource │ 00:16:54 verbose #17985 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:54 verbose #17986 > > 00:16:54 verbose #17987 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:54 verbose #17988 > > nominal resource t u = 00:16:54 verbose #17989 > > `( 00:16:54 verbose #17990 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:54 verbose #17991 > > Fable.Core.Emit(\"leptos::Resource<$0, $1>\")>]]\n#endif\ntype 00:16:54 verbose #17992 > > leptos_Resource<'T, 'U> = class end" 00:16:54 verbose #17993 > > $'' : $'leptos_Resource<`t, `u>' 00:16:54 verbose #17994 > > ) 00:16:54 verbose #17995 > > 00:16:54 verbose #17996 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:54 verbose #17997 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:54 verbose #17998 > > │ ### view │ 00:16:54 verbose #17999 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:54 verbose #18000 > > 00:16:54 verbose #18001 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:54 verbose #18002 > > nominal view = 00:16:54 verbose #18003 > > `( 00:16:54 verbose #18004 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:54 verbose #18005 > > Fable.Core.Emit(\"leptos::View\")>]]\n#endif\ntype leptos_View = class end" 00:16:54 verbose #18006 > > $'' : $'leptos_View' 00:16:54 verbose #18007 > > ) 00:16:54 verbose #18008 > > 00:16:54 verbose #18009 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:54 verbose #18010 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:54 verbose #18011 > > │ ### signal_get │ 00:16:54 verbose #18012 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:54 verbose #18013 > > 00:16:54 verbose #18014 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:54 verbose #18015 > > prototype signal_get signal t : signal t -> t 00:16:54 verbose #18016 > > 00:16:54 verbose #18017 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:54 verbose #18018 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:54 verbose #18019 > > │ ### signal_get_untracked │ 00:16:54 verbose #18020 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:54 verbose #18021 > > 00:16:54 verbose #18022 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:54 verbose #18023 > > prototype signal_get_untracked signal t : signal t -> t 00:16:54 verbose #18024 > > 00:16:54 verbose #18025 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:54 verbose #18026 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:54 verbose #18027 > > │ ### signal_update │ 00:16:54 verbose #18028 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:54 verbose #18029 > > 00:16:54 verbose #18030 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:54 verbose #18031 > > prototype signal_update signal t : (t -> t) -> signal t -> () 00:16:54 verbose #18032 > > 00:16:54 verbose #18033 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:54 verbose #18034 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:54 verbose #18035 > > │ ### signal_set │ 00:16:54 verbose #18036 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:54 verbose #18037 > > 00:16:54 verbose #18038 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:54 verbose #18039 > > prototype signal_set signal t : t -> signal t -> () 00:16:54 verbose #18040 > > 00:16:54 verbose #18041 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:54 verbose #18042 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:54 verbose #18043 > > │ ### log_string │ 00:16:54 verbose #18044 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:54 verbose #18045 > > 00:16:54 verbose #18046 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:54 verbose #18047 > > inl log_string (text : string) = 00:16:54 verbose #18048 > > (!\($'@@"true; leptos::logging::log\!(""" + !text + @@""");"') : bool) |> 00:16:54 verbose #18049 > > ignore 00:16:55 verbose #18050 > > 00:16:55 verbose #18051 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:55 verbose #18052 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:55 verbose #18053 > > │ ### log │ 00:16:55 verbose #18054 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:55 verbose #18055 > > 00:16:55 verbose #18056 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:55 verbose #18057 > > inl log (text : string) = 00:16:55 verbose #18058 > > (!\\(text, $'@@$"true; leptos::logging::log\!(""{{}}"", $0)"') : bool) |> 00:16:55 verbose #18059 > > ignore 00:16:55 verbose #18060 > > 00:16:55 verbose #18061 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:55 verbose #18062 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:55 verbose #18063 > > │ ### log_debug │ 00:16:55 verbose #18064 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:55 verbose #18065 > > 00:16:55 verbose #18066 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:55 verbose #18067 > > inl log_debug (text : string) = 00:16:55 verbose #18068 > > (!\\(text, $'@@$"true; leptos::logging::log\!(""{{:?}}"", $0)"') : bool) |> 00:16:55 verbose #18069 > > ignore 00:16:55 verbose #18070 > > 00:16:55 verbose #18071 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:55 verbose #18072 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:55 verbose #18073 > > │ ### log_pretty │ 00:16:55 verbose #18074 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:55 verbose #18075 > > 00:16:55 verbose #18076 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:55 verbose #18077 > > inl log_pretty (text : string) = 00:16:55 verbose #18078 > > (!\\(text, $'@@$"true; leptos::logging::log\!(""{{:#?}}"", $0)"') : bool) |> 00:16:55 verbose #18079 > > ignore 00:16:55 verbose #18080 > > 00:16:55 verbose #18081 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:55 verbose #18082 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:55 verbose #18083 > > │ ### log_format │ 00:16:55 verbose #18084 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:55 verbose #18085 > > 00:16:55 verbose #18086 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:55 verbose #18087 > > inl log_format fn obj = 00:16:55 verbose #18088 > > inl obj_log = obj |> sm'.format_debug 00:16:55 verbose #18089 > > inl text = fn obj_log |> sm'.ellipsis_end 200 00:16:55 verbose #18090 > > log text 00:16:55 verbose #18091 > > obj 00:16:55 verbose #18092 > > 00:16:55 verbose #18093 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:55 verbose #18094 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:55 verbose #18095 > > │ ### mount_to_body │ 00:16:55 verbose #18096 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:55 verbose #18097 > > 00:16:55 verbose #18098 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:55 verbose #18099 > > inl mount_to_body (view_fn : () -> rust.impl into_view) : () = 00:16:55 verbose #18100 > > (!\\(view_fn, $'"true; leptos::mount_to_body(|| $0());"') : bool) |> ignore 00:16:55 verbose #18101 > > 00:16:55 verbose #18102 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:55 verbose #18103 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:55 verbose #18104 > > │ ### view_vec_to_fragment │ 00:16:55 verbose #18105 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:55 verbose #18106 > > 00:16:55 verbose #18107 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:55 verbose #18108 > > inl view_vec_to_fragment (view : am'.vec view) : fragment = 00:16:55 verbose #18109 > > !\\(view, $'"leptos::Fragment::new($0)"') 00:16:55 verbose #18110 > > 00:16:55 verbose #18111 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:55 verbose #18112 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:55 verbose #18113 > > │ ### view_array_to_fragment │ 00:16:55 verbose #18114 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:55 verbose #18115 > > 00:16:55 verbose #18116 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:55 verbose #18117 > > inl view_array_to_fragment (view : array_base view) : fragment = 00:16:55 verbose #18118 > > view |> am'.to_vec |> view_vec_to_fragment 00:16:55 verbose #18119 > > 00:16:55 verbose #18120 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:55 verbose #18121 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:55 verbose #18122 > > │ ### element_to_view │ 00:16:55 verbose #18123 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:55 verbose #18124 > > 00:16:55 verbose #18125 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:55 verbose #18126 > > inl element_to_view (view : html_element _) : view = 00:16:55 verbose #18127 > > !\\(view, $'"leptos::IntoView::into_view($0)"') 00:16:55 verbose #18128 > > 00:16:55 verbose #18129 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:55 verbose #18130 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:55 verbose #18131 > > │ ### view_to_fragment │ 00:16:55 verbose #18132 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:55 verbose #18133 > > 00:16:55 verbose #18134 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:55 verbose #18135 > > inl view_to_fragment (view : view) : fragment = 00:16:55 verbose #18136 > > ;[[view]] |> view_array_to_fragment 00:16:55 verbose #18137 > > 00:16:55 verbose #18138 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:55 verbose #18139 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:55 verbose #18140 > > │ ### fragment_to_view │ 00:16:55 verbose #18141 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:55 verbose #18142 > > 00:16:55 verbose #18143 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:55 verbose #18144 > > inl fragment_to_view (fragment : fragment) : view = 00:16:55 verbose #18145 > > !\\(fragment, $'"leptos::IntoView::into_view($0)"') 00:16:55 verbose #18146 > > 00:16:55 verbose #18147 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:55 verbose #18148 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:55 verbose #18149 > > │ ### element_to_fragment │ 00:16:55 verbose #18150 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:55 verbose #18151 > > 00:16:55 verbose #18152 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:55 verbose #18153 > > inl element_to_fragment (view : html_element _) : fragment = 00:16:55 verbose #18154 > > view 00:16:55 verbose #18155 > > |> element_to_view 00:16:55 verbose #18156 > > |> view_to_fragment 00:16:56 verbose #18157 > > 00:16:56 verbose #18158 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:56 verbose #18159 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:56 verbose #18160 > > │ ### (~:>) fragment │ 00:16:56 verbose #18161 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:56 verbose #18162 > > 00:16:56 verbose #18163 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:56 verbose #18164 > > instance (~:>) fragment = fun x => 00:16:56 verbose #18165 > > real 00:16:56 verbose #18166 > > typecase t with 00:16:56 verbose #18167 > > | array_base (html_element ~el) => 00:16:56 verbose #18168 > > inl x = am'.to_vec `(html_element el) x 00:16:56 verbose #18169 > > inl x = am'.vec_map' `(html_element el) `view (element_to_view `el) 00:16:56 verbose #18170 > > x 00:16:56 verbose #18171 > > inl x : a i32 view = am'.from_vec `i32 `view x 00:16:56 verbose #18172 > > inl (a x) = x 00:16:56 verbose #18173 > > view_array_to_fragment x 00:16:56 verbose #18174 > > | array_base view => view_array_to_fragment x 00:16:56 verbose #18175 > > | _ => x 00:16:56 verbose #18176 > > 00:16:56 verbose #18177 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:56 verbose #18178 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:56 verbose #18179 > > │ ### (~:>) view │ 00:16:56 verbose #18180 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:56 verbose #18181 > > 00:16:56 verbose #18182 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:56 verbose #18183 > > instance (~:>) view = fun x => 00:16:56 verbose #18184 > > real 00:16:56 verbose #18185 > > typecase t with 00:16:56 verbose #18186 > > | html_element _ => element_to_view x 00:16:56 verbose #18187 > > | _ => x 00:16:56 verbose #18188 > > 00:16:56 verbose #18189 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:56 verbose #18190 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:56 verbose #18191 > > │ ### view_trait_to_element │ 00:16:56 verbose #18192 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:56 verbose #18193 > > 00:16:56 verbose #18194 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:56 verbose #18195 > > inl view_trait_to_element (view : rust.impl into_view) : html_element _ = 00:16:56 verbose #18196 > > $'!view |> unbox' 00:16:56 verbose #18197 > > 00:16:56 verbose #18198 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:56 verbose #18199 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:56 verbose #18200 > > │ ### view_trait_to_route_definition │ 00:16:56 verbose #18201 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:56 verbose #18202 > > 00:16:56 verbose #18203 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:56 verbose #18204 > > inl view_trait_to_route_definition (view : rust.impl into_view) : 00:16:56 verbose #18205 > > route_definition = 00:16:56 verbose #18206 > > $'!view |> unbox' 00:16:56 verbose #18207 > > 00:16:56 verbose #18208 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:56 verbose #18209 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:56 verbose #18210 > > │ ### to_element_view │ 00:16:56 verbose #18211 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:56 verbose #18212 > > 00:16:56 verbose #18213 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:56 verbose #18214 > > inl to_element_view (view : html_element _) : rust.impl into_view = 00:16:56 verbose #18215 > > $'!view |> unbox' 00:16:57 verbose #18216 > > 00:16:57 verbose #18217 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:57 verbose #18218 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:57 verbose #18219 > > │ ### to_view_trait │ 00:16:57 verbose #18220 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:57 verbose #18221 > > 00:16:57 verbose #18222 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:57 verbose #18223 > > inl to_view_trait (view : view) : rust.impl into_view = 00:16:57 verbose #18224 > > $'!view |> unbox' 00:16:57 verbose #18225 > > 00:16:57 verbose #18226 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:57 verbose #18227 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:57 verbose #18228 > > │ ### to_fragment_unbox │ 00:16:57 verbose #18229 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:57 verbose #18230 > > 00:16:57 verbose #18231 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:57 verbose #18232 > > inl to_fragment_unbox view : fragment = 00:16:57 verbose #18233 > > $'!view |> unbox' 00:16:57 verbose #18234 > > 00:16:57 verbose #18235 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:57 verbose #18236 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:57 verbose #18237 > > │ ### from_fragment_unbox │ 00:16:57 verbose #18238 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:57 verbose #18239 > > 00:16:57 verbose #18240 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:57 verbose #18241 > > inl from_fragment_unbox (fragment : fragment) = 00:16:57 verbose #18242 > > $'!fragment |> unbox' 00:16:57 verbose #18243 > > 00:16:57 verbose #18244 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:57 verbose #18245 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:57 verbose #18246 > > │ ### element_to_view_trait │ 00:16:57 verbose #18247 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:57 verbose #18248 > > 00:16:57 verbose #18249 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:57 verbose #18250 > > inl element_to_view_trait (macro : html_element _) : rust.impl into_view = 00:16:57 verbose #18251 > > !\($'"leptos::view\! { {!macro} }"') 00:16:57 verbose #18252 > > 00:16:57 verbose #18253 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:57 verbose #18254 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:57 verbose #18255 > > │ ### macro_to_view_trait │ 00:16:57 verbose #18256 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:57 verbose #18257 > > 00:16:57 verbose #18258 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:57 verbose #18259 > > inl macro_to_view_trait (macro : string) : rust.impl into_view = 00:16:57 verbose #18260 > > !\($'"leptos::view\! { " + !macro + " }"') 00:16:57 verbose #18261 > > 00:16:57 verbose #18262 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:57 verbose #18263 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:57 verbose #18264 > > │ ### macro_to_fragment │ 00:16:57 verbose #18265 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:57 verbose #18266 > > 00:16:57 verbose #18267 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:57 verbose #18268 > > inl macro_to_fragment (macro : string) : fragment = 00:16:57 verbose #18269 > > !\($'"leptos::view\! { " + !macro + " }"') 00:16:57 verbose #18270 > > 00:16:57 verbose #18271 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:57 verbose #18272 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:57 verbose #18273 > > │ ### new_transparent │ 00:16:57 verbose #18274 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:57 verbose #18275 > > 00:16:57 verbose #18276 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:57 verbose #18277 > > inl new_transparent x : transparent = 00:16:57 verbose #18278 > > !\\(x, $'"leptos::leptos_dom::Transparent::new($0)"') 00:16:57 verbose #18279 > > 00:16:57 verbose #18280 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:57 verbose #18281 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:57 verbose #18282 > > │ ### closure_to_view │ 00:16:57 verbose #18283 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:57 verbose #18284 > > 00:16:57 verbose #18285 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:57 verbose #18286 > > inl closure_to_view (closure : rust.func0 view) : view = 00:16:57 verbose #18287 > > !\\(closure, $'"leptos::IntoView::into_view(move || $0())"') 00:16:57 verbose #18288 > > 00:16:57 verbose #18289 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:57 verbose #18290 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:57 verbose #18291 > > │ ### batch │ 00:16:57 verbose #18292 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:57 verbose #18293 > > 00:16:57 verbose #18294 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:57 verbose #18295 > > inl batch (fn : () -> ()) : () = 00:16:57 verbose #18296 > > (!\\(fn, $'"true; leptos::batch(move || $0());"') : bool) |> ignore 00:16:57 verbose #18297 > > 00:16:57 verbose #18298 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:57 verbose #18299 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:57 verbose #18300 > > │ ### closure_to_fragment │ 00:16:57 verbose #18301 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:57 verbose #18302 > > 00:16:57 verbose #18303 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:57 verbose #18304 > > inl closure_to_fragment (closure : rust.func0 fragment) : fragment = 00:16:57 verbose #18305 > > !\\(closure, $'"leptos::IntoView::into_view(move || $0())"') 00:16:57 verbose #18306 > > |> view_to_fragment 00:16:58 verbose #18307 > > 00:16:58 verbose #18308 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:58 verbose #18309 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:58 verbose #18310 > > │ ### array_to_view │ 00:16:58 verbose #18311 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:58 verbose #18312 > > 00:16:58 verbose #18313 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:58 verbose #18314 > > inl array_to_view (view : a _ view) : view = 00:16:58 verbose #18315 > > !\\(view, $'"leptos::CollectView::collect_view($0.to_vec())"') 00:16:58 verbose #18316 > > 00:16:58 verbose #18317 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:58 verbose #18318 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:58 verbose #18319 > > │ ### to_fragment │ 00:16:58 verbose #18320 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:58 verbose #18321 > > 00:16:58 verbose #18322 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:58 verbose #18323 > > inl to_fragment x : fragment = 00:16:58 verbose #18324 > > $'!x |> unbox' 00:16:58 verbose #18325 > > 00:16:58 verbose #18326 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:58 verbose #18327 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:58 verbose #18328 > > │ ### text_to_view │ 00:16:58 verbose #18329 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:58 verbose #18330 > > 00:16:58 verbose #18331 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:58 verbose #18332 > > inl text_to_view (text : text) : view = 00:16:58 verbose #18333 > > !\\(text, $'"leptos::IntoView::into_view($0)"') 00:16:58 verbose #18334 > > 00:16:58 verbose #18335 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:58 verbose #18336 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:58 verbose #18337 > > │ ### text_to_fragment │ 00:16:58 verbose #18338 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:58 verbose #18339 > > 00:16:58 verbose #18340 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:58 verbose #18341 > > inl text_to_fragment (text : text) : fragment = 00:16:58 verbose #18342 > > text 00:16:58 verbose #18343 > > |> text_to_view 00:16:58 verbose #18344 > > |> view_to_fragment 00:16:58 verbose #18345 > > 00:16:58 verbose #18346 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:58 verbose #18347 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:58 verbose #18348 > > │ ### macro_to_view │ 00:16:58 verbose #18349 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:58 verbose #18350 > > 00:16:58 verbose #18351 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:58 verbose #18352 > > inl macro_to_view (macro : string) : view = 00:16:58 verbose #18353 > > !\($'"leptos::IntoView::into_view(leptos::view\! { " + !macro + " })"') 00:16:58 verbose #18354 > > 00:16:58 verbose #18355 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:58 verbose #18356 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:58 verbose #18357 > > │ ### transparent_to_view │ 00:16:58 verbose #18358 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:58 verbose #18359 > > 00:16:58 verbose #18360 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:58 verbose #18361 > > inl transparent_to_view (transparent : transparent) : view = 00:16:58 verbose #18362 > > !\\(transparent, $'"leptos::IntoView::into_view($0)"') 00:16:58 verbose #18363 > > 00:16:58 verbose #18364 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:58 verbose #18365 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:58 verbose #18366 > > │ ### transparent_to_fragment │ 00:16:58 verbose #18367 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:58 verbose #18368 > > 00:16:58 verbose #18369 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:58 verbose #18370 > > inl transparent_to_fragment (transparent : transparent) : fragment = 00:16:58 verbose #18371 > > transparent 00:16:58 verbose #18372 > > |> transparent_to_view 00:16:58 verbose #18373 > > |> view_to_fragment 00:16:58 verbose #18374 > > 00:16:58 verbose #18375 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:58 verbose #18376 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:58 verbose #18377 > > │ ### macro_to_element │ 00:16:58 verbose #18378 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:58 verbose #18379 > > 00:16:58 verbose #18380 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:58 verbose #18381 > > inl macro_to_element (view : string) : html_element _ = 00:16:58 verbose #18382 > > view |> macro_to_view_trait |> view_trait_to_element 00:16:58 verbose #18383 > > 00:16:58 verbose #18384 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:58 verbose #18385 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:58 verbose #18386 > > │ ### transparents_fragment │ 00:16:58 verbose #18387 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:58 verbose #18388 > > 00:16:58 verbose #18389 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:58 verbose #18390 > > inl transparents_fragment (items : array_base transparent) : fragment = 00:16:58 verbose #18391 > > inl items = items |> am'.to_vec 00:16:58 verbose #18392 > > !\\((items, transparent_to_view), $'"$0.iter().map(|x| 00:16:58 verbose #18393 > > $1(x.clone())).collect::<leptos::Fragment>()"') 00:16:58 verbose #18394 > > 00:16:58 verbose #18395 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:58 verbose #18396 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:58 verbose #18397 > > │ ### views_to_view │ 00:16:58 verbose #18398 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:58 verbose #18399 > > 00:16:58 verbose #18400 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:58 verbose #18401 > > inl views_to_view (items : array_base view) : view = 00:16:58 verbose #18402 > > inl items = join items 00:16:58 verbose #18403 > > items 00:16:58 verbose #18404 > > // |> fun x => a (join x) : a u64 _ 00:16:58 verbose #18405 > > |> fun x => a x : a u64 _ 00:16:58 verbose #18406 > > |> array_to_view 00:16:58 verbose #18407 > > 00:16:58 verbose #18408 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:58 verbose #18409 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:58 verbose #18410 > > │ ### new_text │ 00:16:58 verbose #18411 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:58 verbose #18412 > > 00:16:58 verbose #18413 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:58 verbose #18414 > > inl new_text (text : string) : text = 00:16:58 verbose #18415 > > inl text = text |> sm'.to_std_string 00:16:58 verbose #18416 > > !\\(text, $'"leptos::html::text($0)"') 00:16:59 verbose #18417 > > 00:16:59 verbose #18418 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:59 verbose #18419 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:59 verbose #18420 > > │ ### text_view │ 00:16:59 verbose #18421 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:59 verbose #18422 > > 00:16:59 verbose #18423 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:59 verbose #18424 > > inl text_view (text : string) : view = 00:16:59 verbose #18425 > > text 00:16:59 verbose #18426 > > |> new_text 00:16:59 verbose #18427 > > |> text_to_view 00:16:59 verbose #18428 > > 00:16:59 verbose #18429 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:59 verbose #18430 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:59 verbose #18431 > > │ ### text_fragment │ 00:16:59 verbose #18432 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:59 verbose #18433 > > 00:16:59 verbose #18434 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:59 verbose #18435 > > inl text_fragment (text : string) : fragment = 00:16:59 verbose #18436 > > text 00:16:59 verbose #18437 > > |> text_view 00:16:59 verbose #18438 > > |> view_to_fragment 00:16:59 verbose #18439 > > 00:16:59 verbose #18440 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:59 verbose #18441 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:59 verbose #18442 > > │ ### provide_meta_context │ 00:16:59 verbose #18443 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:59 verbose #18444 > > 00:16:59 verbose #18445 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:59 verbose #18446 > > inl provide_meta_context () = 00:16:59 verbose #18447 > > (!\($'"true; leptos_meta::provide_meta_context()"') : bool) |> ignore 00:16:59 verbose #18448 > > 00:16:59 verbose #18449 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:59 verbose #18450 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:59 verbose #18451 > > │ ### provide_context │ 00:16:59 verbose #18452 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:59 verbose #18453 > > 00:16:59 verbose #18454 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:59 verbose #18455 > > inl provide_context forall t. (x : t) = 00:16:59 verbose #18456 > > (!\\(x, $'$"true; leptos::provide_context::<std::sync::Arc<`t>>($0)"') : 00:16:59 verbose #18457 > > bool) |> ignore 00:16:59 verbose #18458 > > 00:16:59 verbose #18459 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:59 verbose #18460 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:59 verbose #18461 > > │ ### create_signal │ 00:16:59 verbose #18462 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:59 verbose #18463 > > 00:16:59 verbose #18464 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:59 verbose #18465 > > inl create_signal forall t. (value : t) : read_signal t * write_signal t = 00:16:59 verbose #18466 > > !\\(value, $'$"leptos::create_signal($0)"') 00:16:59 verbose #18467 > > 00:16:59 verbose #18468 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:59 verbose #18469 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:59 verbose #18470 > > │ ### create_rw_signal │ 00:16:59 verbose #18471 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:59 verbose #18472 > > 00:16:59 verbose #18473 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:59 verbose #18474 > > inl create_rw_signal forall t. (value : t) : rw_signal t = 00:16:59 verbose #18475 > > !\\(value, $'$"leptos::create_rw_signal($0)"') 00:16:59 verbose #18476 > > 00:16:59 verbose #18477 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:59 verbose #18478 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:59 verbose #18479 > > │ ### read_only │ 00:16:59 verbose #18480 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:59 verbose #18481 > > 00:16:59 verbose #18482 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:59 verbose #18483 > > inl read_only forall t. (value : rw_signal t) : read_signal t = 00:16:59 verbose #18484 > > !\\(value, $'$"leptos::RwSignal::read_only(&$0)"') 00:16:59 verbose #18485 > > 00:16:59 verbose #18486 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:59 verbose #18487 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:59 verbose #18488 > > │ ### write_only │ 00:16:59 verbose #18489 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:59 verbose #18490 > > 00:16:59 verbose #18491 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:59 verbose #18492 > > inl write_only forall t. (value : rw_signal t) : write_signal t = 00:16:59 verbose #18493 > > !\\(value, $'$"leptos::RwSignal::write_only(&$0)"') 00:16:59 verbose #18494 > > 00:16:59 verbose #18495 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:59 verbose #18496 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:59 verbose #18497 > > │ ### typecheck_signal │ 00:16:59 verbose #18498 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:59 verbose #18499 > > 00:16:59 verbose #18500 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:59 verbose #18501 > > inl typecheck_signal forall (t : * -> *) u. (signal : t u) : () = 00:16:59 verbose #18502 > > real 00:16:59 verbose #18503 > > typecase t with 00:16:59 verbose #18504 > > | signal => () 00:16:59 verbose #18505 > > | rw_signal => () 00:16:59 verbose #18506 > > | read_signal => () 00:16:59 verbose #18507 > > | write_signal => () 00:16:59 verbose #18508 > > | memo => () 00:16:59 verbose #18509 > > | _ => error_type `(()) ("invalid signal", ``(t u)) 00:16:59 verbose #18510 > > 00:16:59 verbose #18511 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:59 verbose #18512 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:16:59 verbose #18513 > > │ ### memo_get' │ 00:16:59 verbose #18514 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:16:59 verbose #18515 > > 00:16:59 verbose #18516 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:59 verbose #18517 > > inl memo_get' forall t. (memo : memo t) : t = 00:16:59 verbose #18518 > > !\\(memo, $'$"$0()"') 00:17:00 verbose #18519 > > 00:17:00 verbose #18520 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:00 verbose #18521 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:00 verbose #18522 > > │ ### signal_get' │ 00:17:00 verbose #18523 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:00 verbose #18524 > > 00:17:00 verbose #18525 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:00 verbose #18526 > > inl signal_get' forall (t : * -> *) u. (signal : t u) : u = 00:17:00 verbose #18527 > > signal |> typecheck_signal 00:17:00 verbose #18528 > > !\\(signal, $'$"leptos::SignalGet::get(&$0)"') 00:17:00 verbose #18529 > > 00:17:00 verbose #18530 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:00 verbose #18531 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:00 verbose #18532 > > │ ### signal_get signal │ 00:17:00 verbose #18533 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:00 verbose #18534 > > 00:17:00 verbose #18535 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:00 verbose #18536 > > instance signal_get signal = signal_get' 00:17:00 verbose #18537 > > 00:17:00 verbose #18538 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:00 verbose #18539 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:00 verbose #18540 > > │ ### signal_get rw_signal │ 00:17:00 verbose #18541 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:00 verbose #18542 > > 00:17:00 verbose #18543 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:00 verbose #18544 > > instance signal_get rw_signal = signal_get' 00:17:00 verbose #18545 > > 00:17:00 verbose #18546 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:00 verbose #18547 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:00 verbose #18548 > > │ ### signal_get read_signal │ 00:17:00 verbose #18549 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:00 verbose #18550 > > 00:17:00 verbose #18551 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:00 verbose #18552 > > instance signal_get read_signal = signal_get' 00:17:00 verbose #18553 > > 00:17:00 verbose #18554 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:00 verbose #18555 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:00 verbose #18556 > > │ ### signal_get memo │ 00:17:00 verbose #18557 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:00 verbose #18558 > > 00:17:00 verbose #18559 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:00 verbose #18560 > > instance signal_get memo = memo_get' 00:17:00 verbose #18561 > > 00:17:00 verbose #18562 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:00 verbose #18563 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:00 verbose #18564 > > │ ### signal_update' │ 00:17:00 verbose #18565 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:00 verbose #18566 > > 00:17:00 verbose #18567 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:00 verbose #18568 > > inl signal_update' forall (t : * -> *) u. (fn : u -> u) (signal : t u) : () = 00:17:00 verbose #18569 > > signal |> typecheck_signal 00:17:00 verbose #18570 > > (!\\((signal, fn), $'"true; leptos::SignalUpdate::update(&$0, |x| { *x = 00:17:00 verbose #18571 > > $1(x.clone()) });"') : bool) |> ignore 00:17:00 verbose #18572 > > 00:17:00 verbose #18573 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:00 verbose #18574 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:00 verbose #18575 > > │ ### signal_update rw_signal │ 00:17:00 verbose #18576 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:00 verbose #18577 > > 00:17:00 verbose #18578 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:00 verbose #18579 > > instance signal_update rw_signal = signal_update' 00:17:00 verbose #18580 > > 00:17:00 verbose #18581 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:00 verbose #18582 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:00 verbose #18583 > > │ ### signal_update write_signal │ 00:17:00 verbose #18584 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:00 verbose #18585 > > 00:17:00 verbose #18586 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:00 verbose #18587 > > instance signal_update write_signal = signal_update' 00:17:00 verbose #18588 > > 00:17:00 verbose #18589 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:00 verbose #18590 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:00 verbose #18591 > > │ ### signal_get_untracked' │ 00:17:00 verbose #18592 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:00 verbose #18593 > > 00:17:00 verbose #18594 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:00 verbose #18595 > > inl signal_get_untracked' forall (t : * -> *) u. (signal : t u) : u = 00:17:00 verbose #18596 > > signal |> typecheck_signal 00:17:00 verbose #18597 > > !\\(signal, $'$"leptos::SignalGetUntracked::get_untracked(&$0)"') 00:17:00 verbose #18598 > > 00:17:00 verbose #18599 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:00 verbose #18600 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:00 verbose #18601 > > │ ### signal_get_untracked rw_signal │ 00:17:00 verbose #18602 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:00 verbose #18603 > > 00:17:00 verbose #18604 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:00 verbose #18605 > > instance signal_get_untracked rw_signal = signal_get_untracked' 00:17:01 verbose #18606 > > 00:17:01 verbose #18607 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:01 verbose #18608 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:01 verbose #18609 > > │ ### signal_get_untracked read_signal │ 00:17:01 verbose #18610 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:01 verbose #18611 > > 00:17:01 verbose #18612 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:01 verbose #18613 > > instance signal_get_untracked read_signal = signal_get_untracked' 00:17:01 verbose #18614 > > 00:17:01 verbose #18615 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:01 verbose #18616 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:01 verbose #18617 > > │ ### signal_get_untracked memo │ 00:17:01 verbose #18618 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:01 verbose #18619 > > 00:17:01 verbose #18620 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:01 verbose #18621 > > instance signal_get_untracked memo = signal_get_untracked' 00:17:01 verbose #18622 > > 00:17:01 verbose #18623 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:01 verbose #18624 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:01 verbose #18625 > > │ ### signal_set' │ 00:17:01 verbose #18626 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:01 verbose #18627 > > 00:17:01 verbose #18628 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:01 verbose #18629 > > inl signal_set' forall (t : * -> *) u. (value : u) (signal : t u) = 00:17:01 verbose #18630 > > signal |> typecheck_signal 00:17:01 verbose #18631 > > (!\\((signal, value), $'$"true; leptos::SignalSet::set(&$0, $1);"') : bool) 00:17:01 verbose #18632 > > |> ignore 00:17:01 verbose #18633 > > 00:17:01 verbose #18634 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:01 verbose #18635 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:01 verbose #18636 > > │ ### signal_set rw_signal │ 00:17:01 verbose #18637 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:01 verbose #18638 > > 00:17:01 verbose #18639 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:01 verbose #18640 > > instance signal_set rw_signal = signal_set' 00:17:02 verbose #18641 > > 00:17:02 verbose #18642 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:02 verbose #18643 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:02 verbose #18644 > > │ ### signal_set write_signal │ 00:17:02 verbose #18645 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:02 verbose #18646 > > 00:17:02 verbose #18647 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:02 verbose #18648 > > instance signal_set write_signal = signal_set' 00:17:02 verbose #18649 > > 00:17:02 verbose #18650 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:02 verbose #18651 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:02 verbose #18652 > > │ ### create_local_resource │ 00:17:02 verbose #18653 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:02 verbose #18654 > > 00:17:02 verbose #18655 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:02 verbose #18656 > > inl create_local_resource forall t u. 00:17:02 verbose #18657 > > (source : () -> t) 00:17:02 verbose #18658 > > (fetcher : t -> async.future_pin u) 00:17:02 verbose #18659 > > : resource t u 00:17:02 verbose #18660 > > = 00:17:02 verbose #18661 > > // inl fetcher x = rust.move fun () => 00:17:02 verbose #18662 > > // fetcher x 00:17:02 verbose #18663 > > // inl fetcher = join fetcher 00:17:02 verbose #18664 > > // !\($'"leptos::create_local_resource(move || !source(), move |x| async 00:17:02 verbose #18665 > > move { !fetcher(x)().await })"') 00:17:02 verbose #18666 > > 00:17:02 verbose #18667 > > // --- 00:17:02 verbose #18668 > > 00:17:02 verbose #18669 > > // inl fn x = async.new_future fun () => 00:17:02 verbose #18670 > > // inl x' = fetcher x 00:17:02 verbose #18671 > > // x' |> async.await 00:17:02 verbose #18672 > > 00:17:02 verbose #18673 > > // !\\((source, fn), $'"leptos::create_local_resource(move || $0(), |x| 00:17:02 verbose #18674 > > async move { $1(x).await })"') 00:17:02 verbose #18675 > > 00:17:02 verbose #18676 > > 00:17:02 verbose #18677 > > join 00:17:02 verbose #18678 > > !\\(source, $'"let __create_local_resource = 00:17:02 verbose #18679 > > leptos::create_local_resource(move || $0(), |x| async move { //"') 00:17:02 verbose #18680 > > 00:17:02 verbose #18681 > > inl x = !\($'"x"') 00:17:02 verbose #18682 > > inl x' = fetcher x 00:17:02 verbose #18683 > > inl x' = join x' 00:17:02 verbose #18684 > > inl x' = x' |> async.await 00:17:02 verbose #18685 > > 00:17:02 verbose #18686 > > inl closure_fix = 2u8, 1u8 00:17:02 verbose #18687 > > x' |> rust.fix_closure closure_fix 00:17:02 verbose #18688 > > 00:17:02 verbose #18689 > > !\($'"__create_local_resource"') 00:17:02 verbose #18690 > > 00:17:02 verbose #18691 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:02 verbose #18692 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:02 verbose #18693 > > │ ### create_resource │ 00:17:02 verbose #18694 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:02 verbose #18695 > > 00:17:02 verbose #18696 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:02 verbose #18697 > > // inl create_resource forall t u. (source : () -> t) (fetcher : t -> 00:17:02 verbose #18698 > > async.future_pin u) : resource t u = 00:17:02 verbose #18699 > > // inl source = join source 00:17:02 verbose #18700 > > // !\\(fetcher, $'"leptos::create_resource(move || !source(), |x| async move 00:17:02 verbose #18701 > > { $0(x).await })"') 00:17:02 verbose #18702 > > 00:17:02 verbose #18703 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:02 verbose #18704 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:02 verbose #18705 > > │ ### create_action │ 00:17:02 verbose #18706 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:02 verbose #18707 > > 00:17:02 verbose #18708 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:02 verbose #18709 > > inl create_action forall t u. (action_fn : t -> async.future_pin u) : action t u 00:17:02 verbose #18710 > > = 00:17:02 verbose #18711 > > !\\(action_fn, $'"leptos::create_action(move |value: &std::sync::Arc<`t>| 00:17:02 verbose #18712 > > $0(value.clone()))"') 00:17:02 verbose #18713 > > 00:17:02 verbose #18714 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:02 verbose #18715 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:02 verbose #18716 > > │ ### action_dispatch │ 00:17:02 verbose #18717 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:02 verbose #18718 > > 00:17:02 verbose #18719 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:02 verbose #18720 > > inl action_dispatch forall t u. (value : heap t) (action : action (heap t) u) : 00:17:02 verbose #18721 > > () = 00:17:02 verbose #18722 > > (!\\((action, value), $'"true; leptos::Action::dispatch(&$0, $1.clone())"') 00:17:02 verbose #18723 > > : bool) |> ignore 00:17:02 verbose #18724 > > 00:17:02 verbose #18725 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:02 verbose #18726 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:02 verbose #18727 > > │ ### action_input │ 00:17:02 verbose #18728 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:02 verbose #18729 > > 00:17:02 verbose #18730 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:02 verbose #18731 > > inl action_input forall t u. (action : action (heap t) u) : rw_signal 00:17:02 verbose #18732 > > (optionm'.option' t) = 00:17:02 verbose #18733 > > !\\(action, $'"leptos::Action::input(&$0)"') 00:17:02 verbose #18734 > > 00:17:02 verbose #18735 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:02 verbose #18736 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:02 verbose #18737 > > │ ### action_pending │ 00:17:02 verbose #18738 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:02 verbose #18739 > > 00:17:02 verbose #18740 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:02 verbose #18741 > > inl action_pending forall t u. (action : action (heap t) u) : read_signal bool = 00:17:02 verbose #18742 > > !\\(action, $'"leptos::Action::pending(&$0)"') 00:17:02 verbose #18743 > > 00:17:02 verbose #18744 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:02 verbose #18745 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:02 verbose #18746 > > │ ### action_value │ 00:17:02 verbose #18747 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:02 verbose #18748 > > 00:17:02 verbose #18749 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:02 verbose #18750 > > inl action_value forall t u. (action : action (heap t) u) : rw_signal 00:17:02 verbose #18751 > > (optionm'.option' u) = 00:17:02 verbose #18752 > > !\\(action, $'"leptos::Action::value(&$0)"') 00:17:02 verbose #18753 > > 00:17:02 verbose #18754 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:02 verbose #18755 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:02 verbose #18756 > > │ ### use_context │ 00:17:02 verbose #18757 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:02 verbose #18758 > > 00:17:02 verbose #18759 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:02 verbose #18760 > > inl use_context forall t. () : optionm'.option' t = 00:17:02 verbose #18761 > > !\($'"leptos::use_context::<std::sync::Arc<`t>>()"') 00:17:02 verbose #18762 > > 00:17:02 verbose #18763 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:02 verbose #18764 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:02 verbose #18765 > > │ ### resource_loading │ 00:17:02 verbose #18766 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:02 verbose #18767 > > 00:17:02 verbose #18768 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:02 verbose #18769 > > inl resource_loading forall t u. (resource : resource t u) : signal bool = 00:17:02 verbose #18770 > > !\\(resource, $'$"leptos::Resource::loading(&$0)"') 00:17:03 verbose #18771 > > 00:17:03 verbose #18772 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:03 verbose #18773 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:03 verbose #18774 > > │ ### resource_get │ 00:17:03 verbose #18775 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:03 verbose #18776 > > 00:17:03 verbose #18777 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:03 verbose #18778 > > inl resource_get forall t u. (resource : resource t u) : optionm'.option' u = 00:17:03 verbose #18779 > > !\\(resource, $'$"leptos::SignalGet::get(&$0)"') 00:17:03 verbose #18780 > > 00:17:03 verbose #18781 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:03 verbose #18782 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:03 verbose #18783 > > │ ### resource_with │ 00:17:03 verbose #18784 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:03 verbose #18785 > > 00:17:03 verbose #18786 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:03 verbose #18787 > > inl resource_with forall t u v. (resource : resource t u) (fn : optionm'.option' 00:17:03 verbose #18788 > > u -> v) : v = 00:17:03 verbose #18789 > > !\\((resource, fn), $'$"leptos::SignalWith::with(&$0, |x| $1(x.clone()))"') 00:17:03 verbose #18790 > > 00:17:03 verbose #18791 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:03 verbose #18792 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:03 verbose #18793 > > │ ### create_effect │ 00:17:03 verbose #18794 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:03 verbose #18795 > > 00:17:03 verbose #18796 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:03 verbose #18797 > > inl create_effect (fn : () -> ()) : () = 00:17:03 verbose #18798 > > inl fn = fn |> rust.emit 00:17:03 verbose #18799 > > (!\($'"true; leptos::create_effect(move |_| { !fn(()) })"') : bool) |> 00:17:03 verbose #18800 > > ignore 00:17:03 verbose #18801 > > 00:17:03 verbose #18802 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:03 verbose #18803 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:03 verbose #18804 > > │ ### create_effect' │ 00:17:03 verbose #18805 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:03 verbose #18806 > > 00:17:03 verbose #18807 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:03 verbose #18808 > > inl create_effect' forall t. (fn : optionm'.option' t -> t) : () = 00:17:03 verbose #18809 > > (!\\(fn, $'"true; leptos::create_effect(move |x| { $0(x) })"') : bool) |> 00:17:03 verbose #18810 > > ignore 00:17:03 verbose #18811 > > 00:17:03 verbose #18812 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:03 verbose #18813 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:03 verbose #18814 > > │ ### interval_handle_clear │ 00:17:03 verbose #18815 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:03 verbose #18816 > > 00:17:03 verbose #18817 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:03 verbose #18818 > > inl interval_handle_clear (interval_handle : interval_handle) = 00:17:03 verbose #18819 > > (!\\(interval_handle, $'$"true; 00:17:03 verbose #18820 > > leptos::leptos_dom::helpers::IntervalHandle::clear(&$0)"') : bool) |> ignore 00:17:03 verbose #18821 > > 00:17:03 verbose #18822 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:03 verbose #18823 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:03 verbose #18824 > > │ ### set_interval_with_handle │ 00:17:03 verbose #18825 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:03 verbose #18826 > > 00:17:03 verbose #18827 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:03 verbose #18828 > > inl set_interval_with_handle 00:17:03 verbose #18829 > > (fn : () -> ()) 00:17:03 verbose #18830 > > (interval_millis : date_time.duration) 00:17:03 verbose #18831 > > : resultm.result' interval_handle wasm.js_value 00:17:03 verbose #18832 > > = 00:17:03 verbose #18833 > > !\\((fn, interval_millis), $'$"leptos::set_interval_with_handle(move || 00:17:03 verbose #18834 > > $0(), $1)"') 00:17:03 verbose #18835 > > 00:17:03 verbose #18836 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:03 verbose #18837 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:03 verbose #18838 > > │ ### create_memo │ 00:17:03 verbose #18839 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:03 verbose #18840 > > 00:17:03 verbose #18841 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:03 verbose #18842 > > inl create_memo forall t. (fn : () -> t) : memo t = 00:17:03 verbose #18843 > > inl fn = fn |> rust.emit 00:17:03 verbose #18844 > > !\($'"leptos::create_memo(move |_| { !fn(()) })"') 00:17:03 verbose #18845 > > 00:17:03 verbose #18846 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:03 verbose #18847 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:03 verbose #18848 > > │ ### window │ 00:17:03 verbose #18849 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:03 verbose #18850 > > 00:17:03 verbose #18851 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:03 verbose #18852 > > let window () : wasm.window = 00:17:03 verbose #18853 > > !\($'"leptos::leptos_dom::window()"') 00:17:03 verbose #18854 > > 00:17:03 verbose #18855 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:03 verbose #18856 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:03 verbose #18857 > > │ ### bool_prop │ 00:17:03 verbose #18858 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:03 verbose #18859 > > 00:17:03 verbose #18860 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:03 verbose #18861 > > inl bool_prop (prop : string) (fn : () -> bool) : string = 00:17:03 verbose #18862 > > inl fn = join fn 00:17:03 verbose #18863 > > $'"" + !prop + "={move || !fn()}"' 00:17:03 verbose #18864 > > 00:17:03 verbose #18865 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:03 verbose #18866 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:03 verbose #18867 > > │ ### concat_props │ 00:17:03 verbose #18868 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:03 verbose #18869 > > 00:17:03 verbose #18870 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:03 verbose #18871 > > inl concat_props props = 00:17:03 verbose #18872 > > ("", props) 00:17:03 verbose #18873 > > ||> listm.fold fun acc (x : string) => 00:17:03 verbose #18874 > > $'" " + !x + !acc + ""' 00:17:04 verbose #18875 > > 00:17:04 verbose #18876 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:04 verbose #18877 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:04 verbose #18878 > > │ ### move_to_fragment │ 00:17:04 verbose #18879 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:04 verbose #18880 > > 00:17:04 verbose #18881 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:04 verbose #18882 > > inl move_to_fragment fn = 00:17:04 verbose #18883 > > rust.move fn 00:17:04 verbose #18884 > > |> closure_to_fragment 00:17:04 verbose #18885 > > 00:17:04 verbose #18886 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:04 verbose #18887 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:04 verbose #18888 > > │ ### tag_raw │ 00:17:04 verbose #18889 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:04 verbose #18890 > > 00:17:04 verbose #18891 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:04 verbose #18892 > > inl tag_raw tag props children = 00:17:04 verbose #18893 > > inl tag : string = tag 00:17:04 verbose #18894 > > inl props = props |> concat_props 00:17:04 verbose #18895 > > inl children = join children 00:17:04 verbose #18896 > > inl children = fun () => children |> move_to_fragment 00:17:04 verbose #18897 > > inl children : () -> fragment = join children 00:17:04 verbose #18898 > > $'"<" + !tag + " " + !props + ">{!children()}</" + !tag + ">"' 00:17:04 verbose #18899 > > 00:17:04 verbose #18900 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:04 verbose #18901 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:04 verbose #18902 > > │ ### tag_element │ 00:17:04 verbose #18903 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:04 verbose #18904 > > 00:17:04 verbose #18905 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:04 verbose #18906 > > inl tag_element tag props children : html_element _ = 00:17:04 verbose #18907 > > inl children = join children 00:17:04 verbose #18908 > > tag_raw tag props children 00:17:04 verbose #18909 > > |> macro_to_element 00:17:04 verbose #18910 > > 00:17:04 verbose #18911 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:04 verbose #18912 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:04 verbose #18913 > > │ ### tag_closed_raw │ 00:17:04 verbose #18914 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:04 verbose #18915 > > 00:17:04 verbose #18916 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:04 verbose #18917 > > inl tag_closed_raw tag props = 00:17:04 verbose #18918 > > inl tag : string = tag 00:17:04 verbose #18919 > > inl props = props |> concat_props 00:17:04 verbose #18920 > > $'"<" + !tag + " " + !props + " />"' 00:17:04 verbose #18921 > > 00:17:04 verbose #18922 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:04 verbose #18923 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:04 verbose #18924 > > │ ### tag_closed │ 00:17:04 verbose #18925 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:04 verbose #18926 > > 00:17:04 verbose #18927 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:04 verbose #18928 > > inl tag_closed tag props : html_element _ = 00:17:04 verbose #18929 > > tag_closed_raw tag props 00:17:04 verbose #18930 > > |> macro_to_element 00:17:04 verbose #18931 > > 00:17:04 verbose #18932 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:04 verbose #18933 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:04 verbose #18934 > > │ ### for │ 00:17:04 verbose #18935 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:04 verbose #18936 > > 00:17:04 verbose #18937 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:04 verbose #18938 > > inl for props : view = 00:17:04 verbose #18939 > > tag_closed_raw "leptos::For" props 00:17:04 verbose #18940 > > |> macro_to_view 00:17:04 verbose #18941 > > 00:17:04 verbose #18942 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:04 verbose #18943 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:04 verbose #18944 > > │ ### for │ 00:17:04 verbose #18945 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:04 verbose #18946 > > 00:17:04 verbose #18947 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:04 verbose #18948 > > inl for forall t u (signal : * -> *). 00:17:04 verbose #18949 > > (signal : signal (am'.vec t)) 00:17:04 verbose #18950 > > (key_fn : t -> u) 00:17:04 verbose #18951 > > (children' : t -> fragment) 00:17:04 verbose #18952 > > : view 00:17:04 verbose #18953 > > = 00:17:04 verbose #18954 > > inl signal = join signal 00:17:04 verbose #18955 > > signal |> typecheck_signal 00:17:04 verbose #18956 > > inl key_fn = join key_fn 00:17:04 verbose #18957 > > inl children' = join children' 00:17:04 verbose #18958 > > for [[ 00:17:04 verbose #18959 > > $'"each=!signal"' 00:17:04 verbose #18960 > > $'"key=move |x| !key_fn(x.to_owned())"' 00:17:04 verbose #18961 > > $'"let:x"' 00:17:04 verbose #18962 > > $'"children=move |x| !children'(x)"' 00:17:04 verbose #18963 > > ]] 00:17:04 verbose #18964 > > 00:17:04 verbose #18965 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:04 verbose #18966 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:04 verbose #18967 > > │ ### show │ 00:17:04 verbose #18968 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:04 verbose #18969 > > 00:17:04 verbose #18970 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:04 verbose #18971 > > inl show props : view = 00:17:04 verbose #18972 > > tag_closed_raw "leptos::Show" props 00:17:04 verbose #18973 > > |> macro_to_view 00:17:04 verbose #18974 > > 00:17:04 verbose #18975 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:04 verbose #18976 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:04 verbose #18977 > > │ ### show │ 00:17:04 verbose #18978 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:04 verbose #18979 > > 00:17:04 verbose #18980 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:04 verbose #18981 > > inl show (when_fn : () -> bool) (fallback : () -> view) (children : () -> 00:17:04 verbose #18982 > > fragment) : view = 00:17:04 verbose #18983 > > inl when_fn = join when_fn 00:17:04 verbose #18984 > > inl when_fn = join when_fn 00:17:04 verbose #18985 > > inl fallback = join fallback 00:17:04 verbose #18986 > > inl children = join children 00:17:04 verbose #18987 > > show [[ 00:17:04 verbose #18988 > > $'"when=move || !when_fn()"' 00:17:04 verbose #18989 > > $'"fallback=move || !fallback()"' 00:17:04 verbose #18990 > > $'"children=std::rc::Rc::new(move || !children())"' 00:17:04 verbose #18991 > > ]] 00:17:05 verbose #18992 > > 00:17:05 verbose #18993 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:05 verbose #18994 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:05 verbose #18995 > > │ ### use_location │ 00:17:05 verbose #18996 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:05 verbose #18997 > > 00:17:05 verbose #18998 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:05 verbose #18999 > > inl use_location () : location = 00:17:05 verbose #19000 > > !\($'"leptos_router::use_location()"') 00:17:05 verbose #19001 > > 00:17:05 verbose #19002 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:05 verbose #19003 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:05 verbose #19004 > > │ ### use_navigate │ 00:17:05 verbose #19005 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:05 verbose #19006 > > 00:17:05 verbose #19007 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:05 verbose #19008 > > inl use_navigate () : string -> () = 00:17:05 verbose #19009 > > inl navigate : threading.arc (rust.dyn' (rust.action_fn2 (rust.ref sm'.str) 00:17:05 verbose #19010 > > navigate_options)) = 00:17:05 verbose #19011 > > !\($'"std::sync::Arc::new(leptos_router::use_navigate())"') 00:17:05 verbose #19012 > > fun url => 00:17:05 verbose #19013 > > inl url = url |> sm'.as_str 00:17:05 verbose #19014 > > !\\(navigate, $'"$0(!url, Default::default())"') 00:17:05 verbose #19015 > > 00:17:05 verbose #19016 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:05 verbose #19017 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:05 verbose #19018 > > │ ### location_hash │ 00:17:05 verbose #19019 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:05 verbose #19020 > > 00:17:05 verbose #19021 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:05 verbose #19022 > > inl location_hash (location : location) : memo sm'.std_string = 00:17:05 verbose #19023 > > !\\(location, $'"$0.hash"') 00:17:05 verbose #19024 > > 00:17:05 verbose #19025 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:05 verbose #19026 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:05 verbose #19027 > > │ ### location_pathname │ 00:17:05 verbose #19028 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:05 verbose #19029 > > 00:17:05 verbose #19030 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:05 verbose #19031 > > inl location_pathname (location : location) : memo sm'.std_string = 00:17:05 verbose #19032 > > !\\(location, $'"$0.pathname"') 00:17:05 verbose #19033 > > 00:17:05 verbose #19034 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:05 verbose #19035 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:05 verbose #19036 > > │ ### location_search │ 00:17:05 verbose #19037 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:05 verbose #19038 > > 00:17:05 verbose #19039 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:05 verbose #19040 > > inl location_search (location : location) : memo sm'.std_string = 00:17:05 verbose #19041 > > !\\(location, $'"$0.search"') 00:17:05 verbose #19042 > > 00:17:05 verbose #19043 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:05 verbose #19044 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:05 verbose #19045 > > │ ### url_try_from │ 00:17:05 verbose #19046 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:05 verbose #19047 > > 00:17:05 verbose #19048 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:05 verbose #19049 > > inl url_try_from (s : rust.ref sm'.str) : resultm.result' url sm'.std_string = 00:17:05 verbose #19050 > > !\\(s, $'"leptos_router::Url::try_from($0)"') 00:17:05 verbose #19051 > > 00:17:05 verbose #19052 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:05 verbose #19053 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:05 verbose #19054 > > │ ### url_pathname │ 00:17:05 verbose #19055 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:05 verbose #19056 > > 00:17:05 verbose #19057 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:05 verbose #19058 > > inl url_pathname (url : url) : sm'.std_string = 00:17:05 verbose #19059 > > !\\(url, $'"$0.pathname"') 00:17:05 verbose #19060 > > 00:17:05 verbose #19061 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:05 verbose #19062 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:05 verbose #19063 > > │ ### use_url │ 00:17:05 verbose #19064 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:05 verbose #19065 > > 00:17:05 verbose #19066 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:05 verbose #19067 > > inl use_url () = 00:17:05 verbose #19068 > > inl location = use_location () 00:17:05 verbose #19069 > > 00:17:05 verbose #19070 > > create_memo fun () => 00:17:05 verbose #19071 > > inl url_pathname = location |> location_pathname |> signal_get |> 00:17:05 verbose #19072 > > sm'.from_std_string 00:17:05 verbose #19073 > > inl url_search = location |> location_search |> signal_get |> 00:17:05 verbose #19074 > > sm'.from_std_string 00:17:05 verbose #19075 > > inl url_search = 00:17:05 verbose #19076 > > if url_search = "" 00:17:05 verbose #19077 > > then "" 00:17:05 verbose #19078 > > else $'$"?{!url_search}"' 00:17:05 verbose #19079 > > url_pathname +. url_search 00:17:05 verbose #19080 > > 00:17:05 verbose #19081 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:05 verbose #19082 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:05 verbose #19083 > > │ ### route │ 00:17:05 verbose #19084 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:05 verbose #19085 > > 00:17:05 verbose #19086 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:05 verbose #19087 > > inl route path view children : view = 00:17:05 verbose #19088 > > inl path = join path 00:17:05 verbose #19089 > > inl path = path |> sm'.to_std_string 00:17:05 verbose #19090 > > inl view : () -> fragment = join view 00:17:05 verbose #19091 > > inl children : () -> fragment = join children 00:17:05 verbose #19092 > > tag_closed_raw "leptos_router::Route" [[ 00:17:05 verbose #19093 > > $'"path=!path"' 00:17:05 verbose #19094 > > $'"view=move || !view()"' 00:17:05 verbose #19095 > > $'"children=Box::new(move || !children())"' 00:17:05 verbose #19096 > > ]] 00:17:05 verbose #19097 > > |> macro_to_view 00:17:06 verbose #19098 > > 00:17:06 verbose #19099 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:06 verbose #19100 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:06 verbose #19101 > > │ ### router │ 00:17:06 verbose #19102 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:06 verbose #19103 > > 00:17:06 verbose #19104 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:06 verbose #19105 > > inl router children : view = 00:17:06 verbose #19106 > > inl children () = 00:17:06 verbose #19107 > > children () 00:17:06 verbose #19108 > > inl children : () -> fragment = join children 00:17:06 verbose #19109 > > tag_closed_raw "leptos_router::Router" [[ 00:17:06 verbose #19110 > > $'"children=Box::new(move || !children())"' 00:17:06 verbose #19111 > > ]] 00:17:06 verbose #19112 > > |> macro_to_view 00:17:06 verbose #19113 > > 00:17:06 verbose #19114 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:06 verbose #19115 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:06 verbose #19116 > > │ ### routes │ 00:17:06 verbose #19117 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:06 verbose #19118 > > 00:17:06 verbose #19119 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:06 verbose #19120 > > inl routes children : view = 00:17:06 verbose #19121 > > inl children : () -> fragment = children |> rust.emit 00:17:06 verbose #19122 > > tag_closed_raw "leptos_router::Routes" [[ 00:17:06 verbose #19123 > > $'"children=Box::new(move || !children(()))"' 00:17:06 verbose #19124 > > ]] 00:17:06 verbose #19125 > > |> macro_to_view 00:17:06 verbose #19126 > > 00:17:06 verbose #19127 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:06 verbose #19128 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:06 verbose #19129 > > │ ### a' │ 00:17:06 verbose #19130 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:06 verbose #19131 > > 00:17:06 verbose #19132 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:06 verbose #19133 > > inl a' props children : _ a' = 00:17:06 verbose #19134 > > tag_element "a" props children 00:17:06 verbose #19135 > > 00:17:06 verbose #19136 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:06 verbose #19137 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:06 verbose #19138 > > │ ### button │ 00:17:06 verbose #19139 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:06 verbose #19140 > > 00:17:06 verbose #19141 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:06 verbose #19142 > > inl button props children : _ button = 00:17:06 verbose #19143 > > tag_element "button" props children 00:17:06 verbose #19144 > > 00:17:06 verbose #19145 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:06 verbose #19146 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:06 verbose #19147 > > │ ### details │ 00:17:06 verbose #19148 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:06 verbose #19149 > > 00:17:06 verbose #19150 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:06 verbose #19151 > > inl details props children : _ details = 00:17:06 verbose #19152 > > tag_element "details" props children 00:17:06 verbose #19153 > > 00:17:06 verbose #19154 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:07 verbose #19155 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:07 verbose #19156 > > │ ### div │ 00:17:07 verbose #19157 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:07 verbose #19158 > > 00:17:07 verbose #19159 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:07 verbose #19160 > > inl div props children : _ div = 00:17:07 verbose #19161 > > tag_element "div" props children 00:17:07 verbose #19162 > > 00:17:07 verbose #19163 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:07 verbose #19164 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:07 verbose #19165 > > │ ### footer │ 00:17:07 verbose #19166 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:07 verbose #19167 > > 00:17:07 verbose #19168 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:07 verbose #19169 > > inl footer props children : _ footer = 00:17:07 verbose #19170 > > tag_element "footer" props children 00:17:07 verbose #19171 > > 00:17:07 verbose #19172 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:07 verbose #19173 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:07 verbose #19174 > > │ ### header │ 00:17:07 verbose #19175 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:07 verbose #19176 > > 00:17:07 verbose #19177 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:07 verbose #19178 > > inl header props children : _ header = 00:17:07 verbose #19179 > > tag_element "header" props children 00:17:07 verbose #19180 > > 00:17:07 verbose #19181 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:07 verbose #19182 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:07 verbose #19183 > > │ ### label │ 00:17:07 verbose #19184 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:07 verbose #19185 > > 00:17:07 verbose #19186 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:07 verbose #19187 > > inl label props children : _ label = 00:17:07 verbose #19188 > > tag_element "label" props children 00:17:07 verbose #19189 > > 00:17:07 verbose #19190 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:07 verbose #19191 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:07 verbose #19192 > > │ ### main │ 00:17:07 verbose #19193 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:07 verbose #19194 > > 00:17:07 verbose #19195 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:07 verbose #19196 > > inl main props children : _ main = 00:17:07 verbose #19197 > > tag_element "main" props children 00:17:07 verbose #19198 > > 00:17:07 verbose #19199 > > inl main' () = () 00:17:07 verbose #19200 > > 00:17:07 verbose #19201 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:07 verbose #19202 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:07 verbose #19203 > > │ ### nav │ 00:17:07 verbose #19204 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:07 verbose #19205 > > 00:17:07 verbose #19206 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:07 verbose #19207 > > inl nav props children : _ nav = 00:17:07 verbose #19208 > > tag_element "nav" props children 00:17:07 verbose #19209 > > 00:17:07 verbose #19210 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:07 verbose #19211 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:07 verbose #19212 > > │ ### option' │ 00:17:07 verbose #19213 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:07 verbose #19214 > > 00:17:07 verbose #19215 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:07 verbose #19216 > > inl option' props children : _ option' = 00:17:07 verbose #19217 > > tag_element "option" props children 00:17:07 verbose #19218 > > 00:17:07 verbose #19219 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:07 verbose #19220 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:07 verbose #19221 > > │ ### option' │ 00:17:07 verbose #19222 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:07 verbose #19223 > > 00:17:07 verbose #19224 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:07 verbose #19225 > > inl option' select children : _ option' = 00:17:07 verbose #19226 > > inl select : () -> bool = join select 00:17:07 verbose #19227 > > option' [[ 00:17:07 verbose #19228 > > $'"select=!select()"' 00:17:07 verbose #19229 > > 00:17:07 verbose #19230 > > ]] fun () => 00:17:07 verbose #19231 > > children |> new_text |> text_to_fragment 00:17:07 verbose #19232 > > 00:17:07 verbose #19233 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:07 verbose #19234 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:07 verbose #19235 > > │ ### pre │ 00:17:07 verbose #19236 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:07 verbose #19237 > > 00:17:07 verbose #19238 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:07 verbose #19239 > > inl pre props children : _ pre = 00:17:07 verbose #19240 > > tag_element "pre" props children 00:17:08 verbose #19241 > > 00:17:08 verbose #19242 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:08 verbose #19243 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:08 verbose #19244 > > │ ### select │ 00:17:08 verbose #19245 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:08 verbose #19246 > > 00:17:08 verbose #19247 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:08 verbose #19248 > > inl select props children : _ select = 00:17:08 verbose #19249 > > tag_element "select" props children 00:17:08 verbose #19250 > > 00:17:08 verbose #19251 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:08 verbose #19252 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:08 verbose #19253 > > │ ### span │ 00:17:08 verbose #19254 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:08 verbose #19255 > > 00:17:08 verbose #19256 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:08 verbose #19257 > > inl span props children : _ span = 00:17:08 verbose #19258 > > tag_element "span" props children 00:17:08 verbose #19259 > > 00:17:08 verbose #19260 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:08 verbose #19261 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:08 verbose #19262 > > │ ### summary │ 00:17:08 verbose #19263 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:08 verbose #19264 > > 00:17:08 verbose #19265 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:08 verbose #19266 > > inl summary props children : _ summary = 00:17:08 verbose #19267 > > tag_element "summary" props children 00:17:08 verbose #19268 > > 00:17:08 verbose #19269 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:08 verbose #19270 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:08 verbose #19271 > > │ ### table │ 00:17:08 verbose #19272 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:08 verbose #19273 > > 00:17:08 verbose #19274 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:08 verbose #19275 > > inl table props children : _ table = 00:17:08 verbose #19276 > > tag_element "table" props children 00:17:08 verbose #19277 > > 00:17:08 verbose #19278 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:08 verbose #19279 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:08 verbose #19280 > > │ ### thead │ 00:17:08 verbose #19281 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:08 verbose #19282 > > 00:17:08 verbose #19283 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:08 verbose #19284 > > inl thead props children : _ thead = 00:17:08 verbose #19285 > > tag_element "thead" props children 00:17:08 verbose #19286 > > 00:17:08 verbose #19287 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:08 verbose #19288 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:08 verbose #19289 > > │ ### tbody │ 00:17:08 verbose #19290 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:08 verbose #19291 > > 00:17:08 verbose #19292 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:08 verbose #19293 > > inl tbody props children : _ tbody = 00:17:08 verbose #19294 > > tag_element "tbody" props children 00:17:08 verbose #19295 > > 00:17:08 verbose #19296 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:08 verbose #19297 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:08 verbose #19298 > > │ ### tr │ 00:17:08 verbose #19299 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:08 verbose #19300 > > 00:17:08 verbose #19301 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:08 verbose #19302 > > inl tr props children : _ tr = 00:17:08 verbose #19303 > > tag_element "tr" props children 00:17:08 verbose #19304 > > 00:17:08 verbose #19305 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:08 verbose #19306 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:08 verbose #19307 > > │ ### th │ 00:17:08 verbose #19308 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:08 verbose #19309 > > 00:17:08 verbose #19310 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:08 verbose #19311 > > inl th props children : _ th = 00:17:08 verbose #19312 > > tag_element "th" props children 00:17:08 verbose #19313 > > 00:17:08 verbose #19314 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:08 verbose #19315 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:08 verbose #19316 > > │ ### td │ 00:17:08 verbose #19317 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:08 verbose #19318 > > 00:17:08 verbose #19319 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:08 verbose #19320 > > inl td props children : _ td = 00:17:08 verbose #19321 > > tag_element "td" props children 00:17:09 verbose #19322 > > 00:17:09 verbose #19323 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:09 verbose #19324 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:09 verbose #19325 > > │ ### svg │ 00:17:09 verbose #19326 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:09 verbose #19327 > > 00:17:09 verbose #19328 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:09 verbose #19329 > > inl svg props children : _ svg = 00:17:09 verbose #19330 > > tag_element "svg" props children 00:17:09 verbose #19331 > > 00:17:09 verbose #19332 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:09 verbose #19333 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:09 verbose #19334 > > │ ### path │ 00:17:09 verbose #19335 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:09 verbose #19336 > > 00:17:09 verbose #19337 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:09 verbose #19338 > > inl path props : _ path = 00:17:09 verbose #19339 > > tag_element "path" props (fun () => ;[[]] |> view_array_to_fragment) 00:17:09 verbose #19340 > > 00:17:09 verbose #19341 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:09 verbose #19342 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:09 verbose #19343 > > │ ### circle │ 00:17:09 verbose #19344 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:09 verbose #19345 > > 00:17:09 verbose #19346 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:09 verbose #19347 > > inl circle props : _ circle = 00:17:09 verbose #19348 > > tag_element "circle" props (fun () => ;[[]] |> view_array_to_fragment) 00:17:09 verbose #19349 > > 00:17:09 verbose #19350 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:09 verbose #19351 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:09 verbose #19352 > > │ ### rect │ 00:17:09 verbose #19353 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:09 verbose #19354 > > 00:17:09 verbose #19355 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:09 verbose #19356 > > inl rect props children : _ rect = 00:17:09 verbose #19357 > > tag_element "rect" props children 00:17:09 verbose #19358 > > 00:17:09 verbose #19359 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:09 verbose #19360 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:09 verbose #19361 > > │ ### animate │ 00:17:09 verbose #19362 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:09 verbose #19363 > > 00:17:09 verbose #19364 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:09 verbose #19365 > > inl animate props : _ animate = 00:17:09 verbose #19366 > > tag_element "animate" props (fun () => ;[[]] |> view_array_to_fragment) 00:17:09 verbose #19367 > > 00:17:09 verbose #19368 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:09 verbose #19369 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:09 verbose #19370 > > │ ### input │ 00:17:09 verbose #19371 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:09 verbose #19372 > > 00:17:09 verbose #19373 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:09 verbose #19374 > > inl input props : _ input = 00:17:09 verbose #19375 > > tag_closed "input" props 00:17:09 verbose #19376 > > 00:17:09 verbose #19377 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:09 verbose #19378 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:09 verbose #19379 > > │ ### dd │ 00:17:09 verbose #19380 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:09 verbose #19381 > > 00:17:09 verbose #19382 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:09 verbose #19383 > > inl dd props children : _ dd = 00:17:09 verbose #19384 > > tag_element "dd" props children 00:17:09 verbose #19385 > > 00:17:09 verbose #19386 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:09 verbose #19387 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:09 verbose #19388 > > │ ### dl │ 00:17:09 verbose #19389 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:09 verbose #19390 > > 00:17:09 verbose #19391 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:09 verbose #19392 > > inl dl props children : _ dl = 00:17:09 verbose #19393 > > tag_element "dl" props children 00:17:09 verbose #19394 > > 00:17:09 verbose #19395 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:09 verbose #19396 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:09 verbose #19397 > > │ ### dt │ 00:17:09 verbose #19398 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:09 verbose #19399 > > 00:17:09 verbose #19400 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:09 verbose #19401 > > inl dt props children : _ dt = 00:17:09 verbose #19402 > > tag_element "dt" props children 00:17:10 verbose #19403 > 00:00:25 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 123917 } 00:17:10 verbose #19404 > 00:00:25 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:17:10 verbose #19405 > "nbconvert", 00:17:10 verbose #19406 > "/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.ipynb", 00:17:10 verbose #19407 > "--to", 00:17:10 verbose #19408 > "html", 00:17:10 verbose #19409 > "--HTMLExporter.theme=dark", 00:17:10 verbose #19410 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:10 verbose #19411 > 00:00:25 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.ipynb to html 00:17:10 verbose #19412 > 00:00:25 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:17:10 verbose #19413 > 00:00:25 verbose #7 ! validate(nb) 00:17:11 verbose #19414 > 00:00:26 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:17:11 verbose #19415 > 00:00:26 verbose #9 ! return _pygments_highlight( 00:17:12 verbose #19416 > 00:00:27 verbose #10 ! [NbConvertApp] Writing 594343 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.html 00:17:12 verbose #19417 > 00:00:27 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 910 } 00:17:12 verbose #19418 > 00:00:27 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 910 } 00:17:12 verbose #19419 > 00:00:27 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:17:12 verbose #19420 > "-c", 00:17:12 verbose #19421 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:17:12 verbose #19422 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:12 verbose #19423 > 00:00:27 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:17:12 verbose #19424 > 00:00:27 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:17:12 verbose #19425 > 00:00:27 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 124886 } 00:17:12 debug #19426 runtime.execute_with_options_async / { exit_code = 0; output_length = 132109 } 00:17:12 debug #24 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path leptos/leptos.dib --retries 3 00:17:12 debug #19427 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path util.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:12 verbose #19428 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "util.dib", "--retries", "3"])) } 00:17:12 verbose #19429 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:17:12 verbose #19430 > "repl", 00:17:12 verbose #19431 > "--exit-after-run", 00:17:12 verbose #19432 > "--run", 00:17:12 verbose #19433 > "/home/runner/work/polyglot/polyglot/lib/spiral/util.dib", 00:17:12 verbose #19434 > "--output-path", 00:17:12 verbose #19435 > "/home/runner/work/polyglot/polyglot/lib/spiral/util.dib.ipynb", 00:17:12 verbose #19436 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/util.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/util.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:17:14 verbose #19437 > > 00:17:14 verbose #19438 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:14 verbose #19439 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:14 verbose #19440 > > │ # util │ 00:17:14 verbose #19441 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:16 verbose #19442 > > 00:17:16 verbose #19443 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:16 verbose #19444 > > //// test 00:17:16 verbose #19445 > > 00:17:16 verbose #19446 > > open testing 00:17:17 verbose #19447 > > 00:17:17 verbose #19448 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:17 verbose #19449 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:17 verbose #19450 > > │ ### ski │ 00:17:17 verbose #19451 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:17 verbose #19452 > > 00:17:17 verbose #19453 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:17 verbose #19454 > > union rec ski = 00:17:17 verbose #19455 > > | I 00:17:17 verbose #19456 > > | K 00:17:17 verbose #19457 > > | S 00:17:17 verbose #19458 > > | App : ski * ski 00:17:17 verbose #19459 > > 00:17:17 verbose #19460 > > inl rec eval ski = 00:17:17 verbose #19461 > > match ski with 00:17:17 verbose #19462 > > | App (App (K, x), y) => x |> eval 00:17:17 verbose #19463 > > | App (App (App (S, x), y), z) => App (App (x, z), App (y, z)) |> eval 00:17:17 verbose #19464 > > | App (I, x) => x |> eval 00:17:17 verbose #19465 > > | App (K, x) => App (K, eval x) 00:17:17 verbose #19466 > > | App (f, x) => App (eval f, x) |> eval 00:17:17 verbose #19467 > > | _ => ski 00:17:17 verbose #19468 > > 00:17:17 verbose #19469 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:17 verbose #19470 > > //// test 00:17:17 verbose #19471 > > 00:17:17 verbose #19472 > > eval I 00:17:17 verbose #19473 > > |> _assert_eq I 00:17:17 verbose #19474 > > 00:17:17 verbose #19475 > > App (I, I) 00:17:17 verbose #19476 > > |> eval 00:17:17 verbose #19477 > > |> _assert_eq I 00:17:17 verbose #19478 > > 00:17:17 verbose #19479 > > App (I, App (I, I)) 00:17:17 verbose #19480 > > |> eval 00:17:17 verbose #19481 > > |> _assert_eq I 00:17:17 verbose #19482 > > 00:17:17 verbose #19483 > > App (App (I, I), I) 00:17:17 verbose #19484 > > |> eval 00:17:17 verbose #19485 > > |> _assert_eq I 00:17:17 verbose #19486 > > 00:17:17 verbose #19487 > > App (App (App (I, I), I), I) 00:17:17 verbose #19488 > > |> eval 00:17:17 verbose #19489 > > |> _assert_eq I 00:17:17 verbose #19490 > > 00:17:17 verbose #19491 > > eval K 00:17:17 verbose #19492 > > |> _assert_eq K 00:17:17 verbose #19493 > > 00:17:17 verbose #19494 > > App (K, I) 00:17:17 verbose #19495 > > |> eval 00:17:17 verbose #19496 > > |> _assert_eq (App (K, I)) 00:17:17 verbose #19497 > > 00:17:17 verbose #19498 > > App (K, K) 00:17:17 verbose #19499 > > |> eval 00:17:17 verbose #19500 > > |> _assert_eq (App (K, K)) 00:17:17 verbose #19501 > > 00:17:17 verbose #19502 > > App (App (K, I), K) 00:17:17 verbose #19503 > > |> eval 00:17:17 verbose #19504 > > |> _assert_eq I 00:17:17 verbose #19505 > > 00:17:17 verbose #19506 > > App (App (K, K), I) 00:17:17 verbose #19507 > > |> eval 00:17:17 verbose #19508 > > |> _assert_eq K 00:17:17 verbose #19509 > > 00:17:17 verbose #19510 > > App (App (App (App (K, K), I), S), K) 00:17:17 verbose #19511 > > |> eval 00:17:17 verbose #19512 > > |> _assert_eq S 00:17:17 verbose #19513 > > 00:17:17 verbose #19514 > > eval S 00:17:17 verbose #19515 > > |> _assert_eq S 00:17:17 verbose #19516 > > 00:17:17 verbose #19517 > > App (App (App (S, I), I), I) 00:17:17 verbose #19518 > > |> eval 00:17:17 verbose #19519 > > |> _assert_eq I 00:17:17 verbose #19520 > > 00:17:17 verbose #19521 > > App (App (App (S, K), K), I) 00:17:17 verbose #19522 > > |> eval 00:17:17 verbose #19523 > > |> _assert_eq I 00:17:17 verbose #19524 > > 00:17:17 verbose #19525 > > App (App (App (S, K), I), (App (App (K, I), S))) 00:17:17 verbose #19526 > > |> eval 00:17:17 verbose #19527 > > |> _assert_eq I 00:17:17 verbose #19528 > > 00:17:17 verbose #19529 > > App (App (K, S), App (I, App (App (App (S, K), S), I))) 00:17:17 verbose #19530 > > |> eval 00:17:17 verbose #19531 > > |> _assert_eq S 00:17:17 verbose #19532 > > 00:17:17 verbose #19533 > > App (App (App (S, K), I), K) 00:17:17 verbose #19534 > > |> eval 00:17:17 verbose #19535 > > |> _assert_eq K 00:17:18 verbose #19536 > > 00:17:18 verbose #19537 > > ╭─[ 1.06s - stdout ]───────────────────────────────────────────────────────────╮ 00:17:18 verbose #19538 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0 │ 00:17:18 verbose #19539 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0 │ 00:17:18 verbose #19540 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0 │ 00:17:18 verbose #19541 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0 │ 00:17:18 verbose #19542 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0 │ 00:17:18 verbose #19543 > > │ __assert_eq / actual: UH0_1 / expected: UH0_1 │ 00:17:18 verbose #19544 > > │ __assert_eq / actual: UH0_3 (UH0_1, UH0_0) / expected: UH0_3 (UH0_1, UH0_0) │ 00:17:18 verbose #19545 > > │ __assert_eq / actual: UH0_3 (UH0_1, UH0_1) / expected: UH0_3 (UH0_1, UH0_1) │ 00:17:18 verbose #19546 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0 │ 00:17:18 verbose #19547 > > │ __assert_eq / actual: UH0_1 / expected: UH0_1 │ 00:17:18 verbose #19548 > > │ __assert_eq / actual: UH0_2 / expected: UH0_2 │ 00:17:18 verbose #19549 > > │ __assert_eq / actual: UH0_2 / expected: UH0_2 │ 00:17:18 verbose #19550 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0 │ 00:17:18 verbose #19551 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0 │ 00:17:18 verbose #19552 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0 │ 00:17:18 verbose #19553 > > │ __assert_eq / actual: UH0_2 / expected: UH0_2 │ 00:17:18 verbose #19554 > > │ __assert_eq / actual: UH0_1 / expected: UH0_1 │ 00:17:18 verbose #19555 > > │ │ 00:17:18 verbose #19556 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:18 verbose #19557 > 00:00:05 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 4395 } 00:17:18 verbose #19558 > 00:00:05 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:17:18 verbose #19559 > "nbconvert", 00:17:18 verbose #19560 > "/home/runner/work/polyglot/polyglot/lib/spiral/util.dib.ipynb", 00:17:18 verbose #19561 > "--to", 00:17:18 verbose #19562 > "html", 00:17:18 verbose #19563 > "--HTMLExporter.theme=dark", 00:17:18 verbose #19564 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/util.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:18 verbose #19565 > 00:00:06 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/util.dib.ipynb to html 00:17:18 verbose #19566 > 00:00:06 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:17:18 verbose #19567 > 00:00:06 verbose #7 ! validate(nb) 00:17:19 verbose #19568 > 00:00:06 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:17:19 verbose #19569 > 00:00:06 verbose #9 ! return _pygments_highlight( 00:17:19 verbose #19570 > 00:00:06 verbose #10 ! [NbConvertApp] Writing 284330 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/util.dib.html 00:17:19 verbose #19571 > 00:00:06 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 } 00:17:19 verbose #19572 > 00:00:06 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 } 00:17:19 verbose #19573 > 00:00:06 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:17:19 verbose #19574 > "-c", 00:17:19 verbose #19575 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/util.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:17:19 verbose #19576 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/util.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:19 verbose #19577 > 00:00:07 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:17:19 verbose #19578 > 00:00:07 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:17:19 verbose #19579 > 00:00:07 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 5346 } 00:17:19 debug #19580 runtime.execute_with_options_async / { exit_code = 0; output_length = 8410 } 00:17:19 debug #25 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path util.dib --retries 3 00:17:19 debug #19581 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path platform.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:19 verbose #19582 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "platform.dib", "--retries", "3"])) } 00:17:19 verbose #19583 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:17:19 verbose #19584 > "repl", 00:17:19 verbose #19585 > "--exit-after-run", 00:17:19 verbose #19586 > "--run", 00:17:19 verbose #19587 > "/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib", 00:17:19 verbose #19588 > "--output-path", 00:17:19 verbose #19589 > "/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.ipynb", 00:17:19 verbose #19590 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:17:21 verbose #19591 > > 00:17:21 verbose #19592 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:21 verbose #19593 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:21 verbose #19594 > > │ # platform │ 00:17:21 verbose #19595 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:23 verbose #19596 > > 00:17:23 verbose #19597 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:23 verbose #19598 > > open rust.rust_operators 00:17:24 verbose #19599 > > 00:17:24 verbose #19600 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:24 verbose #19601 > > //// test 00:17:24 verbose #19602 > > 00:17:24 verbose #19603 > > open testing 00:17:24 verbose #19604 > > 00:17:24 verbose #19605 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:24 verbose #19606 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:24 verbose #19607 > > │ ## fsharp │ 00:17:24 verbose #19608 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:24 verbose #19609 > > 00:17:24 verbose #19610 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:24 verbose #19611 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:24 verbose #19612 > > │ ### os_platform │ 00:17:24 verbose #19613 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:24 verbose #19614 > > 00:17:24 verbose #19615 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:24 verbose #19616 > > nominal os_platform' = $'System.Runtime.InteropServices.OSPlatform' 00:17:24 verbose #19617 > > 00:17:24 verbose #19618 > > union os_platform = 00:17:24 verbose #19619 > > | FreeBSD 00:17:24 verbose #19620 > > | Linux 00:17:24 verbose #19621 > > | OSX 00:17:24 verbose #19622 > > | Windows 00:17:24 verbose #19623 > > 00:17:24 verbose #19624 > > inl os_platform = function 00:17:24 verbose #19625 > > | FreeBSD => $'`os_platform'.FreeBSD' : os_platform' 00:17:24 verbose #19626 > > | Linux => $'`os_platform'.Linux' : os_platform' 00:17:24 verbose #19627 > > | OSX => $'`os_platform'.OSX' : os_platform' 00:17:24 verbose #19628 > > | Windows => $'`os_platform'.Windows' : os_platform' 00:17:24 verbose #19629 > > 00:17:24 verbose #19630 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:24 verbose #19631 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:24 verbose #19632 > > │ ### run_platform │ 00:17:24 verbose #19633 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:24 verbose #19634 > > 00:17:24 verbose #19635 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:24 verbose #19636 > > inl run_platform forall t. (fn : os_platform -> (() -> t)) : t = 00:17:24 verbose #19637 > > inl result = dyn true 00:17:24 verbose #19638 > > $'let mutable _!result : `t option = None ' 00:17:24 verbose #19639 > > $'\n#if _FREEBSD' 00:17:24 verbose #19640 > > fn FreeBSD () |> emit_unit 00:17:24 verbose #19641 > > $'#endif\n#if _LINUX' 00:17:24 verbose #19642 > > fn Linux () |> emit_unit 00:17:24 verbose #19643 > > $'#endif\n#if _OSX' 00:17:24 verbose #19644 > > fn OSX () |> emit_unit 00:17:24 verbose #19645 > > $'#endif\n#if _WINDOWS' 00:17:24 verbose #19646 > > fn Windows () |> emit_unit 00:17:24 verbose #19647 > > $'#endif' 00:17:24 verbose #19648 > > $'|> fun x -> _!result <- Some x' 00:17:24 verbose #19649 > > $'match _!result with Some x -> x | None -> failwith "runtime.run_platform 00:17:24 verbose #19650 > > _!result=None"' 00:17:24 verbose #19651 > > 00:17:24 verbose #19652 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:24 verbose #19653 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:24 verbose #19654 > > │ ### is_os_platform │ 00:17:24 verbose #19655 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:24 verbose #19656 > > 00:17:24 verbose #19657 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:24 verbose #19658 > > inl is_os_platform (x : os_platform') : bool = 00:17:24 verbose #19659 > > x |> $'System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform' 00:17:24 verbose #19660 > > 00:17:24 verbose #19661 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:24 verbose #19662 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:24 verbose #19663 > > │ ### is_windows' │ 00:17:24 verbose #19664 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:24 verbose #19665 > > 00:17:24 verbose #19666 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:24 verbose #19667 > > inl is_windows' () : bool = 00:17:24 verbose #19668 > > run_platform function 00:17:24 verbose #19669 > > | Windows => fun () => true 00:17:24 verbose #19670 > > | _ => fun () => false 00:17:24 verbose #19671 > > 00:17:24 verbose #19672 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:24 verbose #19673 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:24 verbose #19674 > > │ ## platform │ 00:17:24 verbose #19675 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:24 verbose #19676 > > 00:17:24 verbose #19677 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:24 verbose #19678 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:24 verbose #19679 > > │ ### is_windows │ 00:17:24 verbose #19680 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:24 verbose #19681 > > 00:17:24 verbose #19682 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:24 verbose #19683 > > inl is_windows () : bool = 00:17:24 verbose #19684 > > run_target function 00:17:24 verbose #19685 > > | Rust _ => fun () => 00:17:24 verbose #19686 > > !\($'"cfg\!(windows)"') 00:17:24 verbose #19687 > > | Fsharp _ => fun () => 00:17:24 verbose #19688 > > Windows |> os_platform |> is_os_platform 00:17:24 verbose #19689 > > | target => fun () => failwith $'$"platform.is_windows / target: 00:17:24 verbose #19690 > > {!target}"' 00:17:24 verbose #19691 > > 00:17:24 verbose #19692 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:24 verbose #19693 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:24 verbose #19694 > > │ ### get_executable_suffix │ 00:17:24 verbose #19695 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:24 verbose #19696 > > 00:17:24 verbose #19697 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:24 verbose #19698 > > inl get_executable_suffix () = 00:17:24 verbose #19699 > > if is_windows () 00:17:24 verbose #19700 > > then ".exe" 00:17:24 verbose #19701 > > else "" 00:17:25 verbose #19702 > > 00:17:25 verbose #19703 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:25 verbose #19704 > > //// test 00:17:25 verbose #19705 > > 00:17:25 verbose #19706 > > get_executable_suffix () 00:17:25 verbose #19707 > > 00:17:25 verbose #19708 > > 00:17:25 verbose #19709 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:25 verbose #19710 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:25 verbose #19711 > > │ ## main │ 00:17:25 verbose #19712 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:25 verbose #19713 > > 00:17:25 verbose #19714 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:25 verbose #19715 > > inl main () = 00:17:25 verbose #19716 > > $'let is_windows () = !is_windows ()' : () 00:17:25 verbose #19717 > > $'let get_executable_suffix () = !get_executable_suffix ()' : () 00:17:26 verbose #19718 > 00:00:06 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 6685 } 00:17:26 verbose #19719 > 00:00:06 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:17:26 verbose #19720 > "nbconvert", 00:17:26 verbose #19721 > "/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.ipynb", 00:17:26 verbose #19722 > "--to", 00:17:26 verbose #19723 > "html", 00:17:26 verbose #19724 > "--HTMLExporter.theme=dark", 00:17:26 verbose #19725 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:26 verbose #19726 > 00:00:07 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.ipynb to html 00:17:26 verbose #19727 > 00:00:07 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:17:26 verbose #19728 > 00:00:07 verbose #7 ! validate(nb) 00:17:27 verbose #19729 > 00:00:07 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:17:27 verbose #19730 > 00:00:07 verbose #9 ! return _pygments_highlight( 00:17:27 verbose #19731 > 00:00:07 verbose #10 ! [NbConvertApp] Writing 288024 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.html 00:17:27 verbose #19732 > 00:00:07 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 900 } 00:17:27 verbose #19733 > 00:00:07 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 900 } 00:17:27 verbose #19734 > 00:00:07 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:17:27 verbose #19735 > "-c", 00:17:27 verbose #19736 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:17:27 verbose #19737 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:27 verbose #19738 > 00:00:08 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:17:27 verbose #19739 > 00:00:08 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:17:27 verbose #19740 > 00:00:08 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 7644 } 00:17:27 debug #19741 runtime.execute_with_options_async / { exit_code = 0; output_length = 10758 } 00:17:27 debug #26 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path platform.dib --retries 3 00:17:27 debug #19742 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path stream.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:27 verbose #19743 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "stream.dib", "--retries", "3"])) } 00:17:27 verbose #19744 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:17:27 verbose #19745 > "repl", 00:17:27 verbose #19746 > "--exit-after-run", 00:17:27 verbose #19747 > "--run", 00:17:27 verbose #19748 > "/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib", 00:17:27 verbose #19749 > "--output-path", 00:17:27 verbose #19750 > "/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.ipynb", 00:17:27 verbose #19751 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:17:29 verbose #19752 > > 00:17:29 verbose #19753 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:29 verbose #19754 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:29 verbose #19755 > > │ # stream │ 00:17:29 verbose #19756 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:31 verbose #19757 > > 00:17:31 verbose #19758 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:31 verbose #19759 > > open rust.rust_operators 00:17:32 verbose #19760 > > 00:17:32 verbose #19761 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:32 verbose #19762 > > //// test 00:17:32 verbose #19763 > > 00:17:32 verbose #19764 > > open testing 00:17:32 verbose #19765 > > 00:17:32 verbose #19766 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:32 verbose #19767 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:32 verbose #19768 > > │ ## stream │ 00:17:32 verbose #19769 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:32 verbose #19770 > > 00:17:32 verbose #19771 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:32 verbose #19772 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:32 verbose #19773 > > │ ### stream │ 00:17:32 verbose #19774 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:32 verbose #19775 > > 00:17:32 verbose #19776 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:32 verbose #19777 > > union rec stream t = 00:17:32 verbose #19778 > > | StreamCons : t * (() -> stream t) 00:17:32 verbose #19779 > > | StreamNil 00:17:32 verbose #19780 > > 00:17:32 verbose #19781 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:32 verbose #19782 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:32 verbose #19783 > > │ ### fold │ 00:17:32 verbose #19784 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:32 verbose #19785 > > 00:17:32 verbose #19786 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:32 verbose #19787 > > inl fold fn init s = 00:17:32 verbose #19788 > > inl rec body acc = function 00:17:32 verbose #19789 > > | StreamCons (st, fn') => loop (fn acc st) (fn' ()) 00:17:32 verbose #19790 > > | StreamNil => acc 00:17:32 verbose #19791 > > and inl loop acc = join_body body acc 00:17:32 verbose #19792 > > loop init s 00:17:32 verbose #19793 > > 00:17:32 verbose #19794 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:32 verbose #19795 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:32 verbose #19796 > > │ ### fold_back │ 00:17:32 verbose #19797 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:32 verbose #19798 > > 00:17:32 verbose #19799 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:32 verbose #19800 > > inl fold_back fn s init = 00:17:32 verbose #19801 > > inl rec body acc = function 00:17:32 verbose #19802 > > | StreamCons (st, fn') => fn st (loop acc (fn' ())) 00:17:32 verbose #19803 > > | StreamNil => acc 00:17:32 verbose #19804 > > and inl loop acc = join_body body acc 00:17:32 verbose #19805 > > loop init s 00:17:32 verbose #19806 > > 00:17:32 verbose #19807 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:32 verbose #19808 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:32 verbose #19809 > > │ ### to_list │ 00:17:32 verbose #19810 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:32 verbose #19811 > > 00:17:32 verbose #19812 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:32 verbose #19813 > > inl to_list s = 00:17:32 verbose #19814 > > (s, [[]]) 00:17:32 verbose #19815 > > ||> fold_back fun x acc => 00:17:32 verbose #19816 > > x :: acc 00:17:32 verbose #19817 > > 00:17:32 verbose #19818 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:32 verbose #19819 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:32 verbose #19820 > > │ ### rev │ 00:17:32 verbose #19821 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:32 verbose #19822 > > 00:17:32 verbose #19823 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:32 verbose #19824 > > inl rev s = 00:17:32 verbose #19825 > > (StreamNil, s) 00:17:32 verbose #19826 > > ||> fold fun s x => 00:17:32 verbose #19827 > > StreamCons (x, fun () => s) 00:17:33 verbose #19828 > > 00:17:33 verbose #19829 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:33 verbose #19830 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:33 verbose #19831 > > │ ### from_list │ 00:17:33 verbose #19832 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:33 verbose #19833 > > 00:17:33 verbose #19834 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:33 verbose #19835 > > inl from_list list = 00:17:33 verbose #19836 > > (list, StreamNil) 00:17:33 verbose #19837 > > ||> listm.foldBack fun x acc => 00:17:33 verbose #19838 > > StreamCons (x, fun () => acc) 00:17:33 verbose #19839 > > 00:17:33 verbose #19840 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:33 verbose #19841 > > //// test 00:17:33 verbose #19842 > > 00:17:33 verbose #19843 > > listm.init 3i32 id 00:17:33 verbose #19844 > > |> from_list 00:17:33 verbose #19845 > > |> rev 00:17:33 verbose #19846 > > |> to_list 00:17:33 verbose #19847 > > |> _assert_eq [[ 2; 1; 0 ]] 00:17:33 verbose #19848 > > 00:17:33 verbose #19849 > > ╭─[ 792.93ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:33 verbose #19850 > > │ __assert_eq / actual: UH0_1 (2, UH0_1 (1, UH0_1 (0, UH0_0))) / expected: │ 00:17:33 verbose #19851 > > │ UH0_1 (2, UH0_1 (1, UH0_1 (0, UH0_0))) │ 00:17:33 verbose #19852 > > │ │ 00:17:33 verbose #19853 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:33 verbose #19854 > > 00:17:33 verbose #19855 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:33 verbose #19856 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:33 verbose #19857 > > │ ### try_item │ 00:17:33 verbose #19858 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:33 verbose #19859 > > 00:17:33 verbose #19860 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:33 verbose #19861 > > inl try_item i s = 00:17:33 verbose #19862 > > inl rec body i = function 00:17:33 verbose #19863 > > | StreamCons (x, _) when i <= 0 => Some x 00:17:33 verbose #19864 > > | StreamCons (_, fn) => loop (i - 1) (fn ()) 00:17:33 verbose #19865 > > | StreamNil => None 00:17:33 verbose #19866 > > and inl loop acc s' = 00:17:33 verbose #19867 > > match var_is acc, var_is s' with 00:17:33 verbose #19868 > > | false, false => body acc s' 00:17:33 verbose #19869 > > | _ => 00:17:33 verbose #19870 > > inl acc = dyn acc 00:17:33 verbose #19871 > > inl s' = dyn s' 00:17:33 verbose #19872 > > join body acc s' 00:17:33 verbose #19873 > > loop i s 00:17:33 verbose #19874 > > 00:17:33 verbose #19875 > > inl item i = 00:17:33 verbose #19876 > > try_item i >> optionm.value 00:17:33 verbose #19877 > > 00:17:33 verbose #19878 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:33 verbose #19879 > > //// test 00:17:33 verbose #19880 > > 00:17:33 verbose #19881 > > listm.init 10i32 id 00:17:33 verbose #19882 > > |> from_list 00:17:33 verbose #19883 > > |> item 9i32 00:17:33 verbose #19884 > > |> _assert_eq 9 00:17:34 verbose #19885 > > 00:17:34 verbose #19886 > > ╭─[ 94.40ms - stdout ]─────────────────────────────────────────────────────────╮ 00:17:34 verbose #19887 > > │ __assert_eq / actual: 9 / expected: 9 │ 00:17:34 verbose #19888 > > │ │ 00:17:34 verbose #19889 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:34 verbose #19890 > > 00:17:34 verbose #19891 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:34 verbose #19892 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:34 verbose #19893 > > │ ### new_infinite_stream │ 00:17:34 verbose #19894 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:34 verbose #19895 > > 00:17:34 verbose #19896 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:34 verbose #19897 > > inl new_infinite_stream fn = 00:17:34 verbose #19898 > > inl rec loop n = 00:17:34 verbose #19899 > > StreamCons (fn n, fun () => loop (n + 1)) 00:17:34 verbose #19900 > > loop 0 00:17:34 verbose #19901 > > 00:17:34 verbose #19902 > > inl new_infinite_stream_ fn = 00:17:34 verbose #19903 > > let rec loop n = 00:17:34 verbose #19904 > > StreamCons (fn n, fun () => loop (n + 1)) 00:17:34 verbose #19905 > > loop 0 00:17:34 verbose #19906 > > 00:17:34 verbose #19907 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:34 verbose #19908 > > //// test 00:17:34 verbose #19909 > > 00:17:34 verbose #19910 > > new_infinite_stream print_and_return 00:17:34 verbose #19911 > > |> item 4i32 00:17:34 verbose #19912 > > |> _assert_eq 4i32 00:17:34 verbose #19913 > > 00:17:34 verbose #19914 > > ╭─[ 120.01ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:34 verbose #19915 > > │ print_and_return / x: 0 │ 00:17:34 verbose #19916 > > │ print_and_return / x: 1 │ 00:17:34 verbose #19917 > > │ print_and_return / x: 2 │ 00:17:34 verbose #19918 > > │ print_and_return / x: 3 │ 00:17:34 verbose #19919 > > │ print_and_return / x: 4 │ 00:17:34 verbose #19920 > > │ __assert_eq / actual: 4 / expected: 4 │ 00:17:34 verbose #19921 > > │ │ 00:17:34 verbose #19922 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:34 verbose #19923 > > 00:17:34 verbose #19924 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:34 verbose #19925 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:34 verbose #19926 > > │ ### new_finite_stream │ 00:17:34 verbose #19927 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:34 verbose #19928 > > 00:17:34 verbose #19929 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:34 verbose #19930 > > inl new_finite_stream fn max = 00:17:34 verbose #19931 > > inl rec loop n = 00:17:34 verbose #19932 > > if n >= max 00:17:34 verbose #19933 > > then StreamNil 00:17:34 verbose #19934 > > else StreamCons (fn n, fun () => loop (n + 1)) 00:17:34 verbose #19935 > > loop 0 00:17:34 verbose #19936 > > 00:17:34 verbose #19937 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:34 verbose #19938 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:34 verbose #19939 > > │ ### memoize │ 00:17:34 verbose #19940 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:34 verbose #19941 > > 00:17:34 verbose #19942 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:34 verbose #19943 > > union memoized_stream t = 00:17:34 verbose #19944 > > | NotComputed : () -> stream t 00:17:34 verbose #19945 > > | Computed : stream t 00:17:34 verbose #19946 > > 00:17:34 verbose #19947 > > inl memoize s = 00:17:34 verbose #19948 > > inl rec body s = 00:17:34 verbose #19949 > > inl state = mut (NotComputed s) 00:17:34 verbose #19950 > > fun () => 00:17:34 verbose #19951 > > match *state with 00:17:34 verbose #19952 > > | Computed x => x 00:17:34 verbose #19953 > > | NotComputed fn => 00:17:34 verbose #19954 > > inl new_state = 00:17:34 verbose #19955 > > match fn () with 00:17:34 verbose #19956 > > | StreamNil => StreamNil 00:17:34 verbose #19957 > > | StreamCons (x, fn) => StreamCons (x, loop fn) 00:17:34 verbose #19958 > > state <- Computed new_state 00:17:34 verbose #19959 > > new_state 00:17:34 verbose #19960 > > and inl loop s' = join_body_unit body s s' 00:17:34 verbose #19961 > > loop (fun () => s) 00:17:34 verbose #19962 > > 00:17:34 verbose #19963 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:34 verbose #19964 > > //// test 00:17:34 verbose #19965 > > 00:17:34 verbose #19966 > > inl memo_stream = new_finite_stream print_and_return 10 |> memoize 00:17:34 verbose #19967 > > 00:17:34 verbose #19968 > > memo_stream () 00:17:34 verbose #19969 > > |> item 3i32 00:17:34 verbose #19970 > > |> _assert_eq 3i32 00:17:34 verbose #19971 > > 00:17:34 verbose #19972 > > memo_stream () 00:17:34 verbose #19973 > > |> item 5i32 00:17:34 verbose #19974 > > |> _assert_eq 5i32 00:17:34 verbose #19975 > > 00:17:34 verbose #19976 > > ╭─[ 365.04ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:34 verbose #19977 > > │ print_and_return / x: 0 │ 00:17:34 verbose #19978 > > │ print_and_return / x: 1 │ 00:17:34 verbose #19979 > > │ print_and_return / x: 2 │ 00:17:34 verbose #19980 > > │ print_and_return / x: 3 │ 00:17:34 verbose #19981 > > │ __assert_eq / actual: 3 / expected: 3 │ 00:17:34 verbose #19982 > > │ print_and_return / x: 4 │ 00:17:34 verbose #19983 > > │ print_and_return / x: 5 │ 00:17:34 verbose #19984 > > │ __assert_eq / actual: 5 / expected: 5 │ 00:17:34 verbose #19985 > > │ │ 00:17:34 verbose #19986 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:34 verbose #19987 > > 00:17:34 verbose #19988 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:34 verbose #19989 > > //// test 00:17:34 verbose #19990 > > 00:17:34 verbose #19991 > > inl memo_stream = new_infinite_stream_ print_and_return |> memoize 00:17:34 verbose #19992 > > 00:17:34 verbose #19993 > > memo_stream () 00:17:34 verbose #19994 > > |> item 3i32 00:17:34 verbose #19995 > > |> _assert_eq 3i32 00:17:34 verbose #19996 > > 00:17:34 verbose #19997 > > memo_stream () 00:17:34 verbose #19998 > > |> item 5i32 00:17:34 verbose #19999 > > |> _assert_eq 5i32 00:17:34 verbose #20000 > > 00:17:34 verbose #20001 > > ╭─[ 158.13ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:34 verbose #20002 > > │ print_and_return / x: 0 │ 00:17:34 verbose #20003 > > │ print_and_return / x: 1 │ 00:17:34 verbose #20004 > > │ print_and_return / x: 2 │ 00:17:34 verbose #20005 > > │ print_and_return / x: 3 │ 00:17:34 verbose #20006 > > │ __assert_eq / actual: 3 / expected: 3 │ 00:17:34 verbose #20007 > > │ print_and_return / x: 4 │ 00:17:34 verbose #20008 > > │ print_and_return / x: 5 │ 00:17:34 verbose #20009 > > │ __assert_eq / actual: 5 / expected: 5 │ 00:17:34 verbose #20010 > > │ │ 00:17:34 verbose #20011 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:34 verbose #20012 > > 00:17:34 verbose #20013 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:34 verbose #20014 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:34 verbose #20015 > > │ ### unfold │ 00:17:34 verbose #20016 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:34 verbose #20017 > > 00:17:34 verbose #20018 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:34 verbose #20019 > > inl unfold f x0 = 00:17:34 verbose #20020 > > inl rec body x = 00:17:34 verbose #20021 > > match f x with 00:17:34 verbose #20022 > > | Some (x', y) => StreamCons (x', fun () => loop y) 00:17:34 verbose #20023 > > | None => StreamNil 00:17:34 verbose #20024 > > and inl loop x = join_body_unit body x0 x 00:17:34 verbose #20025 > > loop x0 00:17:35 verbose #20026 > > 00:17:35 verbose #20027 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:35 verbose #20028 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:35 verbose #20029 > > │ ### iterate │ 00:17:35 verbose #20030 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:35 verbose #20031 > > 00:17:35 verbose #20032 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:35 verbose #20033 > > inl iterate f = 00:17:35 verbose #20034 > > unfold (fun x => Some (x, f x)) 00:17:35 verbose #20035 > > 00:17:35 verbose #20036 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:35 verbose #20037 > > //// test 00:17:35 verbose #20038 > > 00:17:35 verbose #20039 > > iterate ((*) 2) 1i32 00:17:35 verbose #20040 > > |> item 10i32 00:17:35 verbose #20041 > > |> _assert_eq 1024 00:17:35 verbose #20042 > > 00:17:35 verbose #20043 > > ╭─[ 96.64ms - stdout ]─────────────────────────────────────────────────────────╮ 00:17:35 verbose #20044 > > │ __assert_eq / actual: 1024 / expected: 1024 │ 00:17:35 verbose #20045 > > │ │ 00:17:35 verbose #20046 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:35 verbose #20047 > > 00:17:35 verbose #20048 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:35 verbose #20049 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:35 verbose #20050 > > │ ### take_while │ 00:17:35 verbose #20051 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:35 verbose #20052 > > 00:17:35 verbose #20053 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:35 verbose #20054 > > inl take_while cond s = 00:17:35 verbose #20055 > > inl rec body i = function 00:17:35 verbose #20056 > > | StreamCons (st, fn) when cond st i => StreamCons (st, fun () => loop 00:17:35 verbose #20057 > > (i + 1) (fn ())) 00:17:35 verbose #20058 > > | _ => StreamNil 00:17:35 verbose #20059 > > and inl loop i = join_body body i 00:17:35 verbose #20060 > > loop 0 s 00:17:35 verbose #20061 > > 00:17:35 verbose #20062 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:35 verbose #20063 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:35 verbose #20064 > > │ ### sum │ 00:17:35 verbose #20065 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:35 verbose #20066 > > 00:17:35 verbose #20067 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:35 verbose #20068 > > inl sum seq = 00:17:35 verbose #20069 > > seq |> fold (+) 0 00:17:35 verbose #20070 > > 00:17:35 verbose #20071 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:35 verbose #20072 > > //// test 00:17:35 verbose #20073 > > 00:17:35 verbose #20074 > > listm.init 10i32 id 00:17:35 verbose #20075 > > |> from_list 00:17:35 verbose #20076 > > |> sum 00:17:35 verbose #20077 > > |> _assert_eq 45 00:17:35 verbose #20078 > > 00:17:35 verbose #20079 > > ╭─[ 101.84ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:35 verbose #20080 > > │ __assert_eq / actual: 45 / expected: 45 │ 00:17:35 verbose #20081 > > │ │ 00:17:35 verbose #20082 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:35 verbose #20083 > > 00:17:35 verbose #20084 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:35 verbose #20085 > > //// test 00:17:35 verbose #20086 > > 00:17:35 verbose #20087 > > new_finite_stream print_and_return 10i32 00:17:35 verbose #20088 > > |> take_while (fun n (_ : i32) => n < 5) 00:17:35 verbose #20089 > > |> sum 00:17:35 verbose #20090 > > |> _assert_eq 10 00:17:35 verbose #20091 > > 00:17:35 verbose #20092 > > ╭─[ 115.06ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:35 verbose #20093 > > │ print_and_return / x: 0 │ 00:17:35 verbose #20094 > > │ print_and_return / x: 1 │ 00:17:35 verbose #20095 > > │ print_and_return / x: 2 │ 00:17:35 verbose #20096 > > │ print_and_return / x: 3 │ 00:17:35 verbose #20097 > > │ print_and_return / x: 4 │ 00:17:35 verbose #20098 > > │ print_and_return / x: 5 │ 00:17:35 verbose #20099 > > │ __assert_eq / actual: 10 / expected: 10 │ 00:17:35 verbose #20100 > > │ │ 00:17:35 verbose #20101 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:35 verbose #20102 > > 00:17:35 verbose #20103 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:35 verbose #20104 > > //// test 00:17:35 verbose #20105 > > 00:17:35 verbose #20106 > > new_infinite_stream print_and_return 00:17:35 verbose #20107 > > |> take_while (fun n (_ : i32) => n < 5i32) 00:17:35 verbose #20108 > > |> sum 00:17:35 verbose #20109 > > |> _assert_eq 10 00:17:35 verbose #20110 > > 00:17:35 verbose #20111 > > ╭─[ 109.47ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:35 verbose #20112 > > │ print_and_return / x: 0 │ 00:17:35 verbose #20113 > > │ print_and_return / x: 1 │ 00:17:35 verbose #20114 > > │ print_and_return / x: 2 │ 00:17:35 verbose #20115 > > │ print_and_return / x: 3 │ 00:17:35 verbose #20116 > > │ print_and_return / x: 4 │ 00:17:35 verbose #20117 > > │ print_and_return / x: 5 │ 00:17:35 verbose #20118 > > │ __assert_eq / actual: 10 / expected: 10 │ 00:17:35 verbose #20119 > > │ │ 00:17:35 verbose #20120 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:35 verbose #20121 > > 00:17:35 verbose #20122 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:35 verbose #20123 > > //// test 00:17:35 verbose #20124 > > 00:17:35 verbose #20125 > > iterate ((*) 6) 1i32 00:17:35 verbose #20126 > > |> take_while (fun _ i => i <= 7i32) 00:17:35 verbose #20127 > > |> to_list 00:17:35 verbose #20128 > > |> _assert_eq [[ 1i32; 6; 36; 216; 1296; 7776; 46656; 279936 ]] 00:17:35 verbose #20129 > > 00:17:35 verbose #20130 > > ╭─[ 146.19ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:35 verbose #20131 > > │ __assert_eq / actual: UH0_1 │ 00:17:35 verbose #20132 > > │ (1, │ 00:17:35 verbose #20133 > > │ UH0_1 │ 00:17:35 verbose #20134 > > │ (6, │ 00:17:35 verbose #20135 > > │ UH0_1 │ 00:17:35 verbose #20136 > > │ (36, │ 00:17:35 verbose #20137 > > │ UH0_1 │ 00:17:35 verbose #20138 > > │ (216, │ 00:17:35 verbose #20139 > > │ UH0_1 (1296, UH0_1 (7776, UH0_1 (46656, UH0_1 (279936, │ 00:17:35 verbose #20140 > > │ UH0_0)))))))) / expected: UH0_1 │ 00:17:35 verbose #20141 > > │ (1, │ 00:17:35 verbose #20142 > > │ UH0_1 │ 00:17:35 verbose #20143 > > │ (6, │ 00:17:35 verbose #20144 > > │ UH0_1 │ 00:17:35 verbose #20145 > > │ (36, │ 00:17:35 verbose #20146 > > │ UH0_1 │ 00:17:35 verbose #20147 > > │ (216, │ 00:17:35 verbose #20148 > > │ UH0_1 (1296, UH0_1 (7776, UH0_1 (46656, UH0_1 (279936, │ 00:17:35 verbose #20149 > > │ UH0_0)))))))) │ 00:17:35 verbose #20150 > > │ │ 00:17:35 verbose #20151 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:35 verbose #20152 > > 00:17:35 verbose #20153 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:35 verbose #20154 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:35 verbose #20155 > > │ ### indexed │ 00:17:35 verbose #20156 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:35 verbose #20157 > > 00:17:35 verbose #20158 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:35 verbose #20159 > > inl indexed s = 00:17:35 verbose #20160 > > ((StreamNil, 0), s) 00:17:35 verbose #20161 > > ||> fold fun (acc, i) x => 00:17:35 verbose #20162 > > StreamCons ((i, x), fun () => acc), i + 1 00:17:35 verbose #20163 > > |> fst 00:17:35 verbose #20164 > > |> rev 00:17:36 verbose #20165 > > 00:17:36 verbose #20166 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:36 verbose #20167 > > //// test 00:17:36 verbose #20168 > > 00:17:36 verbose #20169 > > listm.init 10i32 ((*) 2) 00:17:36 verbose #20170 > > |> from_list 00:17:36 verbose #20171 > > |> indexed 00:17:36 verbose #20172 > > |> item 5i32 00:17:36 verbose #20173 > > |> _assert_eq (5i32, 10i32) 00:17:36 verbose #20174 > > 00:17:36 verbose #20175 > > ╭─[ 105.17ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:36 verbose #20176 > > │ __assert_eq / actual: struct (5, 10) / expected: struct (5, 10) │ 00:17:36 verbose #20177 > > │ │ 00:17:36 verbose #20178 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:36 verbose #20179 > > 00:17:36 verbose #20180 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:36 verbose #20181 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:36 verbose #20182 > > │ ### map │ 00:17:36 verbose #20183 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:36 verbose #20184 > > 00:17:36 verbose #20185 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:36 verbose #20186 > > inl map fn s = 00:17:36 verbose #20187 > > (s, StreamNil) 00:17:36 verbose #20188 > > ||> fold_back fun x acc => 00:17:36 verbose #20189 > > StreamCons (fn x, fun () => acc) 00:17:36 verbose #20190 > > 00:17:36 verbose #20191 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:36 verbose #20192 > > //// test 00:17:36 verbose #20193 > > 00:17:36 verbose #20194 > > listm.init 10i32 id 00:17:36 verbose #20195 > > |> from_list 00:17:36 verbose #20196 > > |> map ((*) 2) 00:17:36 verbose #20197 > > |> item 5i32 00:17:36 verbose #20198 > > |> _assert_eq 10i32 00:17:36 verbose #20199 > > 00:17:36 verbose #20200 > > ╭─[ 100.76ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:36 verbose #20201 > > │ __assert_eq / actual: 10 / expected: 10 │ 00:17:36 verbose #20202 > > │ │ 00:17:36 verbose #20203 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:36 verbose #20204 > > 00:17:36 verbose #20205 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:36 verbose #20206 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:36 verbose #20207 > > │ ### zip_with │ 00:17:36 verbose #20208 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:36 verbose #20209 > > 00:17:36 verbose #20210 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:36 verbose #20211 > > inl zip_with fn s1 s2 = 00:17:36 verbose #20212 > > inl rec loop s1 s2 = 00:17:36 verbose #20213 > > match s1, s2 with 00:17:36 verbose #20214 > > | StreamCons (st1, fn1), StreamCons (st2, fn2) => 00:17:36 verbose #20215 > > StreamCons (fn st1 st2, fun () => loop (fn1 ()) (fn2 ())) 00:17:36 verbose #20216 > > | StreamNil, _ | _, StreamNil => StreamNil 00:17:36 verbose #20217 > > loop s1 s2 00:17:36 verbose #20218 > > 00:17:36 verbose #20219 > > inl zip_with_ fn s1 s2 = 00:17:36 verbose #20220 > > let rec loop s1 s2 = 00:17:36 verbose #20221 > > match s1, s2 with 00:17:36 verbose #20222 > > | StreamCons (st1, fn1), StreamCons (st2, fn2) => 00:17:36 verbose #20223 > > StreamCons (fn st1 st2, fun () => loop (fn1 ()) (fn2 ())) 00:17:36 verbose #20224 > > | StreamNil, _ | _, StreamNil => StreamNil 00:17:36 verbose #20225 > > loop s1 s2 00:17:36 verbose #20226 > > 00:17:36 verbose #20227 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:36 verbose #20228 > > //// test 00:17:36 verbose #20229 > > 00:17:36 verbose #20230 > > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list)) 00:17:36 verbose #20231 > > ||> zip_with (+) 00:17:36 verbose #20232 > > |> item 2i32 00:17:36 verbose #20233 > > |> _assert_eq 6 00:17:36 verbose #20234 > > 00:17:36 verbose #20235 > > ╭─[ 98.95ms - stdout ]─────────────────────────────────────────────────────────╮ 00:17:36 verbose #20236 > > │ __assert_eq / actual: 6 / expected: 6 │ 00:17:36 verbose #20237 > > │ │ 00:17:36 verbose #20238 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:36 verbose #20239 > > 00:17:36 verbose #20240 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:36 verbose #20241 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:36 verbose #20242 > > │ ### zip │ 00:17:36 verbose #20243 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:36 verbose #20244 > > 00:17:36 verbose #20245 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:36 verbose #20246 > > inl zip s1 s2 = 00:17:36 verbose #20247 > > zip_with pair s1 s2 00:17:36 verbose #20248 > > 00:17:36 verbose #20249 > > inl zip_ s1 s2 = 00:17:36 verbose #20250 > > zip_with_ pair s1 s2 00:17:36 verbose #20251 > > 00:17:36 verbose #20252 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:36 verbose #20253 > > //// test 00:17:36 verbose #20254 > > 00:17:36 verbose #20255 > > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list)) 00:17:36 verbose #20256 > > ||> zip 00:17:36 verbose #20257 > > |> item 5i32 00:17:36 verbose #20258 > > |> _assert_eq (5, 10) 00:17:36 verbose #20259 > > 00:17:36 verbose #20260 > > ╭─[ 100.86ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:36 verbose #20261 > > │ __assert_eq / actual: struct (5, 10) / expected: struct (5, 10) │ 00:17:36 verbose #20262 > > │ │ 00:17:36 verbose #20263 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:36 verbose #20264 > > 00:17:36 verbose #20265 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:36 verbose #20266 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:36 verbose #20267 > > │ ### unzip │ 00:17:36 verbose #20268 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:36 verbose #20269 > > 00:17:36 verbose #20270 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:36 verbose #20271 > > inl unzip s = 00:17:36 verbose #20272 > > inl rec body s = 00:17:36 verbose #20273 > > match s with 00:17:36 verbose #20274 > > | StreamCons ((x, y), fn) => 00:17:36 verbose #20275 > > inl xs, ys = loop (fn ()) 00:17:36 verbose #20276 > > StreamCons (x, fun () => xs), StreamCons (y, fun () => ys) 00:17:36 verbose #20277 > > | StreamNil => pair StreamNil StreamNil 00:17:36 verbose #20278 > > and inl loop x = 00:17:36 verbose #20279 > > if var_is x |> not 00:17:36 verbose #20280 > > then body x 00:17:36 verbose #20281 > > else 00:17:36 verbose #20282 > > inl x = dyn x 00:17:36 verbose #20283 > > join body x 00:17:36 verbose #20284 > > loop s 00:17:36 verbose #20285 > > 00:17:36 verbose #20286 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:36 verbose #20287 > > //// test 00:17:36 verbose #20288 > > 00:17:36 verbose #20289 > > listm.init 10i32 id 00:17:36 verbose #20290 > > |> listm.map (fun x => x, x) 00:17:36 verbose #20291 > > |> from_list 00:17:36 verbose #20292 > > |> unzip 00:17:36 verbose #20293 > > |> fun x, y => 00:17:36 verbose #20294 > > x |> sum 00:17:36 verbose #20295 > > |> _assert_eq 45 00:17:36 verbose #20296 > > 00:17:36 verbose #20297 > > y |> sum 00:17:36 verbose #20298 > > |> _assert_eq 45 00:17:36 verbose #20299 > > 00:17:36 verbose #20300 > > ╭─[ 106.99ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:36 verbose #20301 > > │ __assert_eq / actual: 45 / expected: 45 │ 00:17:36 verbose #20302 > > │ __assert_eq / actual: 45 / expected: 45 │ 00:17:36 verbose #20303 > > │ │ 00:17:36 verbose #20304 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:36 verbose #20305 > > 00:17:36 verbose #20306 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:36 verbose #20307 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:36 verbose #20308 > > │ ## rust │ 00:17:36 verbose #20309 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:36 verbose #20310 > > 00:17:36 verbose #20311 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:36 verbose #20312 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:36 verbose #20313 > > │ ### io_error │ 00:17:36 verbose #20314 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:36 verbose #20315 > > 00:17:36 verbose #20316 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:36 verbose #20317 > > nominal io_error = 00:17:36 verbose #20318 > > `( 00:17:36 verbose #20319 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:17:36 verbose #20320 > > Fable.Core.Emit(\"std::io::Error\")>]]\n#endif\ntype std_io_Error = class end" 00:17:36 verbose #20321 > > $'' : $'std_io_Error' 00:17:36 verbose #20322 > > ) 00:17:37 verbose #20323 > > 00:17:37 verbose #20324 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:37 verbose #20325 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:37 verbose #20326 > > │ ### buf_reader │ 00:17:37 verbose #20327 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:37 verbose #20328 > > 00:17:37 verbose #20329 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:37 verbose #20330 > > nominal buf_reader t = 00:17:37 verbose #20331 > > `( 00:17:37 verbose #20332 > > backend_switch `(()) `({}) { 00:17:37 verbose #20333 > > Fsharp = 00:17:37 verbose #20334 > > (fun () => 00:17:37 verbose #20335 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:17:37 verbose #20336 > > Fable.Core.Emit(\"std::io::BufReader<$0>\")>]]\n#endif\ntype 00:17:37 verbose #20337 > > std_io_BufReader<'T> = class end" 00:17:37 verbose #20338 > > ) : () -> () 00:17:37 verbose #20339 > > } 00:17:37 verbose #20340 > > $'' : $'std_io_BufReader<`t>' 00:17:37 verbose #20341 > > ) 00:17:37 verbose #20342 > > 00:17:37 verbose #20343 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:37 verbose #20344 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:37 verbose #20345 > > │ ### cursor │ 00:17:37 verbose #20346 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:37 verbose #20347 > > 00:17:37 verbose #20348 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:37 verbose #20349 > > nominal cursor t = 00:17:37 verbose #20350 > > `( 00:17:37 verbose #20351 > > backend_switch `(()) `({}) { 00:17:37 verbose #20352 > > Fsharp = 00:17:37 verbose #20353 > > (fun () => 00:17:37 verbose #20354 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:17:37 verbose #20355 > > Fable.Core.Emit(\"std::io::Cursor<$0>\")>]]\n#endif\ntype std_io_Cursor<'T> = 00:17:37 verbose #20356 > > class end" 00:17:37 verbose #20357 > > ) : () -> () 00:17:37 verbose #20358 > > } 00:17:37 verbose #20359 > > $'' : $'std_io_Cursor<`t>' 00:17:37 verbose #20360 > > ) 00:17:37 verbose #20361 > > 00:17:37 verbose #20362 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:37 verbose #20363 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:37 verbose #20364 > > │ ### async_buf_reader │ 00:17:37 verbose #20365 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:37 verbose #20366 > > 00:17:37 verbose #20367 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:37 verbose #20368 > > nominal async_buf_reader t = 00:17:37 verbose #20369 > > `( 00:17:37 verbose #20370 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:17:37 verbose #20371 > > Fable.Core.Emit(\"tokio::io::BufReader<$0>\")>]]\n#endif\ntype 00:17:37 verbose #20372 > > tokio_io_BufReader<'T> = class end" 00:17:37 verbose #20373 > > $'' : $'tokio_io_BufReader<`t>' 00:17:37 verbose #20374 > > ) 00:17:37 verbose #20375 > > 00:17:37 verbose #20376 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:37 verbose #20377 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:37 verbose #20378 > > │ ### new_buf_reader │ 00:17:37 verbose #20379 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:37 verbose #20380 > > 00:17:37 verbose #20381 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:37 verbose #20382 > > inl new_buf_reader forall t. (x : t) : buf_reader t = 00:17:37 verbose #20383 > > !\($'"std::io::BufReader::new(!x)"') 00:17:37 verbose #20384 > > 00:17:37 verbose #20385 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:37 verbose #20386 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:37 verbose #20387 > > │ ### new_cursor │ 00:17:37 verbose #20388 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:37 verbose #20389 > > 00:17:37 verbose #20390 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:37 verbose #20391 > > inl new_cursor forall t. (x : t) : cursor t = 00:17:37 verbose #20392 > > !\($'"std::io::Cursor::new(!x)"') 00:17:37 verbose #20393 > > 00:17:37 verbose #20394 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:37 verbose #20395 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:37 verbose #20396 > > │ ### lines │ 00:17:37 verbose #20397 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:37 verbose #20398 > > 00:17:37 verbose #20399 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:37 verbose #20400 > > nominal lines t = 00:17:37 verbose #20401 > > `( 00:17:37 verbose #20402 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:17:37 verbose #20403 > > Fable.Core.Emit(\"std::io::Lines<$0>\")>]]\n#endif\ntype std_io_Lines<'T> = 00:17:37 verbose #20404 > > class end" 00:17:37 verbose #20405 > > $'' : $'std_io_Lines<`t>' 00:17:37 verbose #20406 > > ) 00:17:37 verbose #20407 > > 00:17:37 verbose #20408 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:37 verbose #20409 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:37 verbose #20410 > > │ ### buf_read_lines │ 00:17:37 verbose #20411 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:37 verbose #20412 > > 00:17:37 verbose #20413 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:37 verbose #20414 > > inl buf_read_lines forall t. (buf_reader : buf_reader t) : lines (buf_reader t) 00:17:37 verbose #20415 > > = 00:17:37 verbose #20416 > > !\($'"std::io::BufRead::lines(!buf_reader)"') 00:17:37 verbose #20417 > > 00:17:37 verbose #20418 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:37 verbose #20419 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:37 verbose #20420 > > │ ### decode_reader_bytes │ 00:17:37 verbose #20421 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:37 verbose #20422 > > 00:17:37 verbose #20423 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:37 verbose #20424 > > nominal decode_reader_bytes t u = 00:17:37 verbose #20425 > > `( 00:17:37 verbose #20426 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:17:37 verbose #20427 > > Fable.Core.Emit(\"encoding_rs_io::DecodeReaderBytes<$0, $1>\")>]]\n#endif\ntype 00:17:37 verbose #20428 > > encoding_rs_io_DecodeReaderBytes<'T, 'U> = class end" 00:17:37 verbose #20429 > > $'' : $'encoding_rs_io_DecodeReaderBytes<`t, `u>' 00:17:37 verbose #20430 > > ) 00:17:37 verbose #20431 > > 00:17:37 verbose #20432 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:37 verbose #20433 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:37 verbose #20434 > > │ ### decode_reader_bytes_build │ 00:17:37 verbose #20435 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:37 verbose #20436 > > 00:17:37 verbose #20437 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:37 verbose #20438 > > inl decode_reader_bytes_build forall t. (x : t) : decode_reader_bytes t (am'.vec 00:17:37 verbose #20439 > > u8) = 00:17:37 verbose #20440 > > 00:17:37 verbose #20441 > > !\($'"encoding_rs_io::DecodeReaderBytesBuilder::new().encoding(Some(encoding_rs: 00:17:37 verbose #20442 > > :UTF_8)).build(!x)"') 00:17:37 verbose #20443 > > 00:17:37 verbose #20444 > > !\($'"encoding_rs_io::DecodeReaderBytesBuilder::new().encoding(Some(encoding_rs: 00:17:37 verbose #20445 > > :UTF_8)).utf8_passthru(true).build(!x)"') 00:17:37 verbose #20446 > > !\\(x, 00:17:37 verbose #20447 > > $'"encoding_rs_io::DecodeReaderBytesBuilder::new().utf8_passthru(true).build($0) 00:17:37 verbose #20448 > > "') 00:17:37 verbose #20449 > > // !\($'"encoding_rs_io::DecodeReaderBytes::new(!x)"') 00:17:37 verbose #20450 > > 00:17:37 verbose #20451 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:37 verbose #20452 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:37 verbose #20453 > > │ ### buf_reader_read │ 00:17:37 verbose #20454 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:37 verbose #20455 > > 00:17:37 verbose #20456 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:37 verbose #20457 > > inl buf_reader_read forall el dim. (slice : am'.slice' el dim) (buf_reader : 00:17:37 verbose #20458 > > buf_reader el) : resultm.result' unativeint io_error = 00:17:37 verbose #20459 > > (!\($'"true; let mut !slice = !slice"') : bool) |> ignore 00:17:37 verbose #20460 > > !\($'"std::io::Read::read(&mut !buf_reader, &mut !slice)"') 00:17:37 verbose #20461 > > 00:17:37 verbose #20462 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:37 verbose #20463 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:37 verbose #20464 > > │ ### io_read_by_ref │ 00:17:37 verbose #20465 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:37 verbose #20466 > > 00:17:37 verbose #20467 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:37 verbose #20468 > > inl io_read_by_ref forall t. (lines : lines t) : lines t = 00:17:37 verbose #20469 > > !\\(lines, $'"std::io::Read::by_ref($0)"') 00:17:38 verbose #20470 > 00:00:10 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 38336 } 00:17:38 verbose #20471 > 00:00:10 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:17:38 verbose #20472 > "nbconvert", 00:17:38 verbose #20473 > "/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.ipynb", 00:17:38 verbose #20474 > "--to", 00:17:38 verbose #20475 > "html", 00:17:38 verbose #20476 > "--HTMLExporter.theme=dark", 00:17:38 verbose #20477 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:38 verbose #20478 > 00:00:10 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.ipynb to html 00:17:38 verbose #20479 > 00:00:10 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:17:38 verbose #20480 > 00:00:10 verbose #7 ! validate(nb) 00:17:39 verbose #20481 > 00:00:11 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:17:39 verbose #20482 > 00:00:11 verbose #9 ! return _pygments_highlight( 00:17:39 verbose #20483 > 00:00:11 verbose #10 ! [NbConvertApp] Writing 366652 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.html 00:17:39 verbose #20484 > 00:00:11 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 896 } 00:17:39 verbose #20485 > 00:00:11 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 896 } 00:17:39 verbose #20486 > 00:00:11 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:17:39 verbose #20487 > "-c", 00:17:39 verbose #20488 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:17:39 verbose #20489 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:39 verbose #20490 > 00:00:12 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:17:39 verbose #20491 > 00:00:12 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:17:39 verbose #20492 > 00:00:12 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 39291 } 00:17:39 debug #20493 runtime.execute_with_options_async / { exit_code = 0; output_length = 43571 } 00:17:39 debug #27 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path stream.dib --retries 3 00:17:39 debug #20494 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path parsing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:39 verbose #20495 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "parsing.dib", "--retries", "3"])) } 00:17:39 verbose #20496 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:17:39 verbose #20497 > "repl", 00:17:39 verbose #20498 > "--exit-after-run", 00:17:39 verbose #20499 > "--run", 00:17:39 verbose #20500 > "/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib", 00:17:39 verbose #20501 > "--output-path", 00:17:39 verbose #20502 > "/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.ipynb", 00:17:39 verbose #20503 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:17:41 verbose #20504 > > 00:17:41 verbose #20505 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:41 verbose #20506 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:41 verbose #20507 > > │ # parsing │ 00:17:41 verbose #20508 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:43 verbose #20509 > > 00:17:43 verbose #20510 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:43 verbose #20511 > > open rust.rust_operators 00:17:43 verbose #20512 > > open sm'_operators 00:17:44 verbose #20513 > > 00:17:44 verbose #20514 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:44 verbose #20515 > > //// test 00:17:44 verbose #20516 > > 00:17:44 verbose #20517 > > open testing 00:17:44 verbose #20518 > > 00:17:44 verbose #20519 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:44 verbose #20520 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:44 verbose #20521 > > │ ## fparsec │ 00:17:44 verbose #20522 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:44 verbose #20523 > > 00:17:44 verbose #20524 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:44 verbose #20525 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:44 verbose #20526 > > │ <div><div></div><div><strong>Installing │ 00:17:44 verbose #20527 > > │ Packages</strong><ul><li><span>FParsec</span></li></ul></div><div></div></di │ 00:17:44 verbose #20528 > > │ v> │ 00:17:44 verbose #20529 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:45 verbose #20530 > > 00:17:45 verbose #20531 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:45 verbose #20532 > > │ <div><div></div><div><strong>Installing │ 00:17:45 verbose #20533 > > │ Packages</strong><ul><li><span>FParsec.</span></li></ul></div><div></div></d │ 00:17:45 verbose #20534 > > │ iv> │ 00:17:45 verbose #20535 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:45 verbose #20536 > > 00:17:45 verbose #20537 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:45 verbose #20538 > > │ <div><div></div><div><strong>Installing │ 00:17:45 verbose #20539 > > │ Packages</strong><ul><li><span>FParsec..</span></li></ul></div><div></div></ │ 00:17:45 verbose #20540 > > │ div> │ 00:17:45 verbose #20541 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:46 verbose #20542 > > 00:17:46 verbose #20543 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:46 verbose #20544 > > │ <div><div></div><div><strong>Installing │ 00:17:46 verbose #20545 > > │ Packages</strong><ul><li><span>FParsec...</span></li></ul></div><div></div>< │ 00:17:46 verbose #20546 > > │ /div> │ 00:17:46 verbose #20547 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:46 verbose #20548 > > 00:17:46 verbose #20549 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:46 verbose #20550 > > │ <div><div></div><div><strong>Installing │ 00:17:46 verbose #20551 > > │ Packages</strong><ul><li><span>FParsec....</span></li></ul></div><div></div> │ 00:17:46 verbose #20552 > > │ </div> │ 00:17:46 verbose #20553 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:46 verbose #20554 > > 00:17:46 verbose #20555 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:46 verbose #20556 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:46 verbose #20557 > > │ Package added: fsharp.core,4.3.4 │ 00:17:46 verbose #20558 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:46 verbose #20559 > > 00:17:46 verbose #20560 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:46 verbose #20561 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:46 verbose #20562 > > │ Package added: FParsec,1.1.1 │ 00:17:46 verbose #20563 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:46 verbose #20564 > > 00:17:46 verbose #20565 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:46 verbose #20566 > > │ <div><div></div><div></div><div><strong>Installed │ 00:17:46 verbose #20567 > > │ Packages</strong><ul><li><span>FParsec, 1.1.1</span></li></ul></div></div> │ 00:17:46 verbose #20568 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:47 verbose #20569 > > 00:17:47 verbose #20570 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:47 verbose #20571 > > //// test 00:17:47 verbose #20572 > > 00:17:47 verbose #20573 > > nominal position_ = $'FParsec.Position' 00:17:47 verbose #20574 > > nominal parser_error_ = $'FParsec.Error.ParserError' 00:17:47 verbose #20575 > > 00:17:47 verbose #20576 > > nominal reply_ t = $'FParsec.Reply<`t>' 00:17:47 verbose #20577 > > 00:17:47 verbose #20578 > > nominal char_stream_ t = $'FParsec.CharStream<`t>' 00:17:47 verbose #20579 > > 00:17:47 verbose #20580 > > // nominal parser t u = char_stream u -> reply t 00:17:47 verbose #20581 > > nominal parser_ t u = $'FParsec.Primitives.Parser<`t, `u>' 00:17:47 verbose #20582 > > 00:17:47 verbose #20583 > > inl p_char_ forall t. (x : char) : parser_ char t = 00:17:47 verbose #20584 > > x |> $'FParsec.CharParsers.pchar' 00:17:47 verbose #20585 > > 00:17:47 verbose #20586 > > inl p_string_ forall t. (x : string) : parser_ string t = 00:17:47 verbose #20587 > > x |> $'FParsec.CharParsers.pstring' 00:17:47 verbose #20588 > > 00:17:47 verbose #20589 > > inl (>>.$) forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_ u v = 00:17:47 verbose #20590 > > b |> $'FParsec.Primitives.(>>.)' a 00:17:47 verbose #20591 > > 00:17:47 verbose #20592 > > inl (.>>$) forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_ t v = 00:17:47 verbose #20593 > > b |> $'FParsec.Primitives.(.>>)' a 00:17:47 verbose #20594 > > 00:17:47 verbose #20595 > > inl (.>>.$) forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_ (pair t 00:17:47 verbose #20596 > > u) v = 00:17:47 verbose #20597 > > b |> $'FParsec.Primitives.(.>>.)' a 00:17:47 verbose #20598 > > 00:17:47 verbose #20599 > > inl (>>%$) forall t u v. (a : parser_ t v) (b : u) : parser_ u v = 00:17:47 verbose #20600 > > b |> $'FParsec.Primitives.(>>%)' a 00:17:47 verbose #20601 > > 00:17:47 verbose #20602 > > inl (>>=$) forall t u v. (a : parser_ t v) (b : t -> parser_ u v) : parser_ u v 00:17:47 verbose #20603 > > = 00:17:47 verbose #20604 > > b |> $'FParsec.Primitives.(>>=)' a 00:17:47 verbose #20605 > > 00:17:47 verbose #20606 > > inl (|>>$) forall t u v. (a : parser_ t v) (b : t -> u) : parser_ u v = 00:17:47 verbose #20607 > > inl b = fun x => x |> b 00:17:47 verbose #20608 > > b |> $'FParsec.Primitives.(|>>)' a 00:17:47 verbose #20609 > > 00:17:47 verbose #20610 > > inl any_char_ () : parser_ char _ = 00:17:47 verbose #20611 > > $'FParsec.CharParsers.anyChar' 00:17:47 verbose #20612 > > 00:17:47 verbose #20613 > > inl any_string_ () : parser_ string _ = 00:17:47 verbose #20614 > > $'FParsec.CharParsers.anyString' 00:17:47 verbose #20615 > > 00:17:47 verbose #20616 > > inl any_string__ (n : i32) : parser_ string _ = 00:17:47 verbose #20617 > > n |> $'FParsec.CharParsers.anyString' 00:17:47 verbose #20618 > > 00:17:47 verbose #20619 > > inl eof_ () : parser_ () _ = 00:17:47 verbose #20620 > > $'FParsec.CharParsers.eof' 00:17:47 verbose #20621 > > 00:17:47 verbose #20622 > > inl spaces_ () : parser_ () () = 00:17:47 verbose #20623 > > $'FParsec.CharParsers.spaces' 00:17:47 verbose #20624 > > 00:17:47 verbose #20625 > > inl spaces1_ () : parser_ () () = 00:17:47 verbose #20626 > > $'FParsec.CharParsers.spaces1' 00:17:47 verbose #20627 > > 00:17:47 verbose #20628 > > inl (<|>$) forall t u. (a : parser_ t u) (b : parser_ t u) : parser_ t u = 00:17:47 verbose #20629 > > b |> $'FParsec.Primitives.(<|>)' a 00:17:47 verbose #20630 > > 00:17:47 verbose #20631 > > inl many_satisfy_ forall t. (x : char -> bool) : parser_ string t = 00:17:47 verbose #20632 > > x |> $'FParsec.CharParsers.manySatisfy' 00:17:47 verbose #20633 > > 00:17:47 verbose #20634 > > inl satisfy_ forall t. (x : char -> bool) : parser_ char t = 00:17:47 verbose #20635 > > x |> $'FParsec.CharParsers.satisfy' 00:17:47 verbose #20636 > > 00:17:47 verbose #20637 > > inl none_of_ (x : list char) : parser_ char () = 00:17:47 verbose #20638 > > x 00:17:47 verbose #20639 > > |> listm'.box 00:17:47 verbose #20640 > > |> listm'.to_array' 00:17:47 verbose #20641 > > |> $'FParsec.CharParsers.noneOf' 00:17:47 verbose #20642 > > 00:17:47 verbose #20643 > > inl any_of_ (x : list char) : parser_ char () = 00:17:47 verbose #20644 > > x 00:17:47 verbose #20645 > > |> listm'.box 00:17:47 verbose #20646 > > |> listm'.to_array' 00:17:47 verbose #20647 > > |> $'FParsec.CharParsers.anyOf' 00:17:47 verbose #20648 > > 00:17:47 verbose #20649 > > inl skip_any_of_ (x : list char) : parser_ () () = 00:17:47 verbose #20650 > > x 00:17:47 verbose #20651 > > |> listm'.box 00:17:47 verbose #20652 > > |> listm'.to_array' 00:17:47 verbose #20653 > > |> $'FParsec.CharParsers.skipAnyOf' 00:17:47 verbose #20654 > > 00:17:47 verbose #20655 > > inl between_ forall t u v x. (a : parser_ t x) (b : parser_ u x) (c : parser_ v 00:17:47 verbose #20656 > > x) : parser_ v x = 00:17:47 verbose #20657 > > c |> $'FParsec.Primitives.between' a b 00:17:47 verbose #20658 > > 00:17:47 verbose #20659 > > inl many_chars_ forall t. (x : parser_ char t) : parser_ string t = 00:17:47 verbose #20660 > > x |> $'FParsec.CharParsers.manyChars' 00:17:47 verbose #20661 > > 00:17:47 verbose #20662 > > inl many1_chars_ forall t. (x : parser_ char t) : parser_ string t = 00:17:47 verbose #20663 > > x |> $'FParsec.CharParsers.many1Chars' 00:17:47 verbose #20664 > > 00:17:47 verbose #20665 > > inl many_strings_ forall t. (x : parser_ string t) : parser_ string t = 00:17:47 verbose #20666 > > x |> $'FParsec.CharParsers.manyStrings' 00:17:47 verbose #20667 > > 00:17:47 verbose #20668 > > inl skip_any_string_ forall t. (n : i32) : parser_ () t = 00:17:47 verbose #20669 > > n |> $'FParsec.CharParsers.skipAnyString' 00:17:47 verbose #20670 > > 00:17:47 verbose #20671 > > inl many1_strings_ forall t. (x : parser_ string t) : parser_ string t = 00:17:47 verbose #20672 > > x |> $'FParsec.CharParsers.many1Strings' 00:17:47 verbose #20673 > > 00:17:47 verbose #20674 > > inl opt_ forall t u. (a : parser_ t u) : parser_ (optionm'.option' t) u = 00:17:47 verbose #20675 > > a |> $'FParsec.Primitives.opt' 00:17:47 verbose #20676 > > 00:17:47 verbose #20677 > > inl choice_ forall t u. (a : list (parser_ t u)) : parser_ t u = 00:17:47 verbose #20678 > > a 00:17:47 verbose #20679 > > |> listm'.box 00:17:47 verbose #20680 > > |> seq.of_list' 00:17:47 verbose #20681 > > |> $'FParsec.Primitives.choice' 00:17:47 verbose #20682 > > 00:17:47 verbose #20683 > > inl delay_ forall t u. (fn : () -> parser_ t u) : parser_ t u = 00:17:47 verbose #20684 > > fn |> $'FParsec.Primitives.parse.Delay' 00:17:47 verbose #20685 > > 00:17:47 verbose #20686 > > inl peek_ forall t u. (a : parser_ t u) : parser_ char u = 00:17:47 verbose #20687 > > $'!a.Peek ()' 00:17:47 verbose #20688 > > 00:17:47 verbose #20689 > > inl not_followed_by_ forall t u. (a : parser_ t u) : parser_ () u = 00:17:47 verbose #20690 > > a |> $'FParsec.Primitives.notFollowedBy' 00:17:47 verbose #20691 > > 00:17:47 verbose #20692 > > inl sep_by_ forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_ 00:17:47 verbose #20693 > > (listm'.list' t) v = 00:17:47 verbose #20694 > > b |> $'FParsec.Primitives.sepBy' a 00:17:47 verbose #20695 > > 00:17:47 verbose #20696 > > inl sep_by1_ forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_ 00:17:47 verbose #20697 > > (listm'.list' t) v = 00:17:47 verbose #20698 > > b |> $'FParsec.Primitives.sepBy1' a 00:17:47 verbose #20699 > > 00:17:47 verbose #20700 > > inl sep_end_by_ forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_ 00:17:47 verbose #20701 > > (listm'.list' t) v = 00:17:47 verbose #20702 > > b |> $'FParsec.Primitives.sepEndBy' a 00:17:47 verbose #20703 > > 00:17:47 verbose #20704 > > inl many_ forall t u. (a : parser_ t u) : parser_ (listm'.list' t) u = 00:17:47 verbose #20705 > > a |> $'FParsec.Primitives.many' 00:17:47 verbose #20706 > > 00:17:47 verbose #20707 > > inl many1_ forall t u. (a : parser_ t u) : parser_ (listm'.list' t) u = 00:17:47 verbose #20708 > > a |> $'FParsec.Primitives.many1' 00:17:47 verbose #20709 > > 00:17:47 verbose #20710 > > inl many1_satisfy_ forall t. (x : char -> bool) : parser_ string t = 00:17:47 verbose #20711 > > x |> $'FParsec.CharParsers.many1Satisfy' 00:17:47 verbose #20712 > > 00:17:47 verbose #20713 > > nominal parser_result'_ t u = $'FParsec.CharParsers.ParserResult<`t, `u>' 00:17:47 verbose #20714 > > 00:17:47 verbose #20715 > > inl run_ forall t. (parser : parser_ t ()) (x : string) : parser_result'_ t () = 00:17:47 verbose #20716 > > x |> $'FParsec.CharParsers.run' parser 00:17:47 verbose #20717 > > 00:17:47 verbose #20718 > > union parser_result_ t u = 00:17:47 verbose #20719 > > | Success : t * u * position_ 00:17:47 verbose #20720 > > | Failure : string * parser_error_ * u 00:17:47 verbose #20721 > > 00:17:47 verbose #20722 > > inl parser_result_ forall t u. = function 00:17:47 verbose #20723 > > | Success (a, b, c) => $'`(parser_result'_ t u).Success (!a, !b, !c)' : 00:17:47 verbose #20724 > > parser_result'_ t u 00:17:47 verbose #20725 > > | Failure (a, b, c) => $'`(parser_result'_ t u).Failure (!a, !b, !c)' : 00:17:47 verbose #20726 > > parser_result'_ t u 00:17:47 verbose #20727 > > 00:17:47 verbose #20728 > > inl parser_result'_ forall t u. (x : parser_result'_ t u) : parser_result_ t u = 00:17:47 verbose #20729 > > $'let mutable _!x = None ' 00:17:47 verbose #20730 > > $'match !x with' 00:17:47 verbose #20731 > > $'| FParsec.CharParsers.Success (a, b, c) -> (' : () 00:17:47 verbose #20732 > > $'(fun () ->' 00:17:47 verbose #20733 > > $'(fun () ->' 00:17:47 verbose #20734 > > (Success ((dyn $'a'), dyn $'b', dyn $'c') : _ t u) |> emit_unit 00:17:47 verbose #20735 > > $')' 00:17:47 verbose #20736 > > $'|> fun x -> x ()' 00:17:47 verbose #20737 > > $') () ) | FParsec.CharParsers.Failure (a, b, c) -> (' : () 00:17:47 verbose #20738 > > $'(fun () ->' 00:17:47 verbose #20739 > > $'(fun () ->' 00:17:47 verbose #20740 > > (Failure ((dyn $'a'), dyn $'b', dyn $'c') : _ t u) |> emit_unit 00:17:47 verbose #20741 > > $')' 00:17:47 verbose #20742 > > $'|> fun x -> x ()' 00:17:47 verbose #20743 > > $') () )' : () 00:17:47 verbose #20744 > > $'|> fun x -> _!x <- Some x' 00:17:47 verbose #20745 > > $'match _!x with Some x -> x | None -> failwith "??? / _!x=None"' 00:17:47 verbose #20746 > > 00:17:47 verbose #20747 > > inl parse_ parser input : result _ _ = 00:17:47 verbose #20748 > > match input |> run_ parser |> parser_result'_ with 00:17:47 verbose #20749 > > | Success (result, b, c) => Ok (result, c) 00:17:47 verbose #20750 > > | Failure (error_msg, b, c) => Error (error_msg, b) 00:17:47 verbose #20751 > > 00:17:47 verbose #20752 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:47 verbose #20753 > > //// test 00:17:47 verbose #20754 > > 00:17:47 verbose #20755 > > inl split_args (args : string) : result (array_base (string * position_)) 00:17:47 verbose #20756 > > (string * parser_error_) = 00:17:47 verbose #20757 > > inl esc = [[ '\\'; '`' ]] 00:17:47 verbose #20758 > > inl quotes = [[ '"' ]] 00:17:47 verbose #20759 > > inl special = esc ++ quotes 00:17:47 verbose #20760 > > inl p_esc_char c = 00:17:47 verbose #20761 > > p_char_ c >>.$ any_char_ () |>>$ fun c' => $'$"{!c}{!c'}"' 00:17:47 verbose #20762 > > inl p_word = special |> none_of_ |>>$ sm'.obj_to_string 00:17:47 verbose #20763 > > inl p_plain = special ++ [[ ' ' ]] |> none_of_ |> many1_chars_ 00:17:47 verbose #20764 > > inl p_text = p_word |> many1_strings_ 00:17:47 verbose #20765 > > inl p_esc = esc |> listm.map p_esc_char |> choice_ 00:17:47 verbose #20766 > > inl p_quoted = (p_word <|>$ p_esc) |> many_ |>>$ (seq.of_list' >> sm'.concat 00:17:47 verbose #20767 > > "") 00:17:47 verbose #20768 > > inl p_quoted_all = p_quoted |> between_ (p_char_ '"') (p_char_ '"') 00:17:47 verbose #20769 > > inl p_esc_root = p_esc |>>$ (fun _ => "") >>.$ (p_word |> many_) |>>$ 00:17:47 verbose #20770 > > (seq.of_list' >> sm'.concat "") 00:17:47 verbose #20771 > > inl p_content = p_plain <|>$ p_quoted_all <|>$ p_esc_root 00:17:47 verbose #20772 > > inl p_args = spaces1_ () |> sep_by_ p_content 00:17:47 verbose #20773 > > args 00:17:47 verbose #20774 > > |> parse_ p_args 00:17:47 verbose #20775 > > |> resultm.map fun (a', b') => 00:17:47 verbose #20776 > > ( 00:17:47 verbose #20777 > > ( 00:17:47 verbose #20778 > > a' 00:17:47 verbose #20779 > > |> listm'.to_array' 00:17:47 verbose #20780 > > |> a 00:17:47 verbose #20781 > > |> am.map fun x => x, b' 00:17:47 verbose #20782 > > |> fun (a x : _ i32 _) => x 00:17:47 verbose #20783 > > ) 00:17:47 verbose #20784 > > ) 00:17:47 verbose #20785 > > 00:17:47 verbose #20786 > > [[ 00:17:47 verbose #20787 > > "a b c", 00:17:47 verbose #20788 > > ;[[ "a"; "b"; "c" ]] 00:17:47 verbose #20789 > > 00:17:47 verbose #20790 > > "e f \"g h\" i", 00:17:47 verbose #20791 > > ;[[ "e"; "f"; "g h"; "i" ]] 00:17:47 verbose #20792 > > 00:17:47 verbose #20793 > > "\"j k\" \"l\" \"m\"", 00:17:47 verbose #20794 > > ;[[ "j k"; "l"; "m" ]] 00:17:47 verbose #20795 > > 00:17:47 verbose #20796 > > "s -t \"u \`\"v\`\" w\"", 00:17:47 verbose #20797 > > ;[[ "s"; "-t"; "u \`\"v\`\" w" ]] 00:17:47 verbose #20798 > > 00:17:47 verbose #20799 > > "n -o \"p \\\"q\\\" r\"", 00:17:47 verbose #20800 > > ;[[ "n"; "-o"; "p \\\"q\\\" r" ]] 00:17:47 verbose #20801 > > 00:17:47 verbose #20802 > > "r -s \"t \\\"u\\\"\"", 00:17:47 verbose #20803 > > ;[[ "r"; "-s"; "t \\\"u\\\"" ]] 00:17:47 verbose #20804 > > 00:17:47 verbose #20805 > > $'$"x -y \\\"$z -a \'(b=\\\\\\"c-id=)[[a-fA-F0-9]]{{8}}\', {{ \`$_[[1]] + 00:17:47 verbose #20806 > > \`$d++ }}\\\""', 00:17:47 verbose #20807 > > ;[[ "x"; "-y"; "$z -a '(b=\\\"c-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$d++ }" 00:17:47 verbose #20808 > > ]] 00:17:47 verbose #20809 > > 00:17:47 verbose #20810 > > "e -f \"$g -h '(i=`\"j-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$k++ }\"", 00:17:47 verbose #20811 > > ;[[ "e"; "-f"; "$g -h '(i=`\"j-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$k++ }" 00:17:47 verbose #20812 > > ]] 00:17:47 verbose #20813 > > 00:17:47 verbose #20814 > > $'$"--l \\\\\\"\'\'\' m \'\'\'\\\\\\" "', 00:17:47 verbose #20815 > > ;[[ "--l"; "''' m '''" ]] 00:17:47 verbose #20816 > > 00:17:47 verbose #20817 > > $'$"n --o --p q --r \\\"s:/t u/v.w\\\" --x \\\"y:/z.a\\\" --b c.d 00:17:47 verbose #20818 > > \\\"\\\\e{{f-g}}\\\" h.i \\\"j (k)\\\""', 00:17:47 verbose #20819 > > ;[[ "n"; "--o"; "--p"; "q"; "--r"; "s:/t u/v.w"; "--x"; "y:/z.a"; "--b"; 00:17:47 verbose #20820 > > "c.d"; "\\e{f-g}"; "h.i"; "j (k)" ]] 00:17:47 verbose #20821 > > 00:17:47 verbose #20822 > > $'\@$"l ""m n:\\o.p"""', 00:17:47 verbose #20823 > > ;[[ "l"; "m n:\\o.p" ]] 00:17:47 verbose #20824 > > ]] 00:17:47 verbose #20825 > > |> listm.rev 00:17:47 verbose #20826 > > |> listm.map fun input, expected => 00:17:47 verbose #20827 > > input 00:17:47 verbose #20828 > > |> split_args 00:17:47 verbose #20829 > > |> fun x => 00:17:47 verbose #20830 > > try 00:17:47 verbose #20831 > > fun () => 00:17:47 verbose #20832 > > ($'$"\ninput: {!input}"' : string) 00:17:47 verbose #20833 > > |> console.write_line 00:17:47 verbose #20834 > > x 00:17:47 verbose #20835 > > |> resultm.get 00:17:47 verbose #20836 > > |> am'.map_base fst 00:17:47 verbose #20837 > > |> _assert_eq' expected 00:17:47 verbose #20838 > > false 00:17:47 verbose #20839 > > fun ex => 00:17:47 verbose #20840 > > ($'$"error / expected: %A{!expected} / ex: %A{!ex}"' : string) 00:17:47 verbose #20841 > > |> console.write_line 00:17:47 verbose #20842 > > Some true 00:17:47 verbose #20843 > > |> optionm.value 00:17:47 verbose #20844 > > |> listm'.filter id 00:17:47 verbose #20845 > > |> function 00:17:47 verbose #20846 > > | [[]] => () 00:17:47 verbose #20847 > > | x => failwith $'$"{!x}"' 00:17:49 verbose #20848 > > 00:17:49 verbose #20849 > > ╭─[ 2.55s - stdout ]───────────────────────────────────────────────────────────╮ 00:17:49 verbose #20850 > > │ │ 00:17:49 verbose #20851 > > │ input: a b c │ 00:17:49 verbose #20852 > > │ __assert_eq' / actual: [|"a"; "b"; "c"|] / expected: [|"a"; "b"; "c"|] │ 00:17:49 verbose #20853 > > │ │ 00:17:49 verbose #20854 > > │ input: e f "g h" i │ 00:17:49 verbose #20855 > > │ __assert_eq' / actual: [|"e"; "f"; "g h"; "i"|] / expected: [|"e"; "f"; "g │ 00:17:49 verbose #20856 > > │ h"; "i"|] │ 00:17:49 verbose #20857 > > │ │ 00:17:49 verbose #20858 > > │ input: "j k" "l" "m" │ 00:17:49 verbose #20859 > > │ __assert_eq' / actual: [|"j k"; "l"; "m"|] / expected: [|"j k"; "l"; "m"|] │ 00:17:49 verbose #20860 > > │ │ 00:17:49 verbose #20861 > > │ input: s -t "u `"v`" w" │ 00:17:49 verbose #20862 > > │ __assert_eq' / actual: [|"s"; "-t"; "u `"v`" w"|] / expected: [|"s"; "-t"; │ 00:17:49 verbose #20863 > > │ "u `"v`" w"|] │ 00:17:49 verbose #20864 > > │ │ 00:17:49 verbose #20865 > > │ input: n -o "p \"q\" r" │ 00:17:49 verbose #20866 > > │ __assert_eq' / actual: [|"n"; "-o"; "p \"q\" r"|] / expected: [|"n"; "-o"; │ 00:17:49 verbose #20867 > > │ "p \"q\" r"|] │ 00:17:49 verbose #20868 > > │ │ 00:17:49 verbose #20869 > > │ input: r -s "t \"u\"" │ 00:17:49 verbose #20870 > > │ __assert_eq' / actual: [|"r"; "-s"; "t \"u\""|] / expected: [|"r"; "-s"; "t │ 00:17:49 verbose #20871 > > │ \"u\""|] │ 00:17:49 verbose #20872 > > │ │ 00:17:49 verbose #20873 > > │ input: x -y "$z -a '(b=\"c-id=)[a-fA-F0-9]{8}', { `$_[1] + `$d++ }" │ 00:17:49 verbose #20874 > > │ __assert_eq' / actual: [|"x"; "-y"; "$z -a '(b=\"c-id=)[a-fA-F0-9]{8}', { │ 00:17:49 verbose #20875 > > │ `$_[1] + `$d++ }"|] / expected: [|"x"; "-y"; "$z -a '(b=\"c-id=)[ │ 00:17:49 verbose #20876 > > │ a-fA-F0-9]{8}', { `$_[1] + `$d++ }"|] │ 00:17:49 verbose #20877 > > │ │ 00:17:49 verbose #20878 > > │ input: e -f "$g -h '(i=`"j-id=)[a-fA-F0-9]{8}', { `$_[1] + `$k++ }" │ 00:17:49 verbose #20879 > > │ __assert_eq' / actual: [|"e"; "-f"; "$g -h '(i=`"j-id=)[a-fA-F0-9]{8}', { │ 00:17:49 verbose #20880 > > │ `$_[1] + `$k++ }"|] / expected: [|"e"; "-f"; "$g -h '(i=`"j-id=)[ │ 00:17:49 verbose #20881 > > │ a-fA-F0-9]{8}', { `$_[1] + `$k++ }"|] │ 00:17:49 verbose #20882 > > │ │ 00:17:49 verbose #20883 > > │ input: --l \"''' m '''\" │ 00:17:49 verbose #20884 > > │ __assert_eq' / actual: [|"--l"; "''' m '''"|] / expected: [|"--l"; "''' m │ 00:17:49 verbose #20885 > > │ '''"|] │ 00:17:49 verbose #20886 > > │ │ 00:17:49 verbose #20887 > > │ input: n --o --p q --r "s:/t u/v.w" --x "y:/z.a" --b c.d "\e{f-g}" h.i "j │ 00:17:49 verbose #20888 > > │ (k)" │ 00:17:49 verbose #20889 > > │ __assert_eq' / actual: [|"n"; "--o"; "--p"; "q"; "--r"; "s:/t u/v.w"; "--x"; │ 00:17:49 verbose #20890 > > │ "y:/z.a"; "--b"; "c.d"; │ 00:17:49 verbose #20891 > > │ "\e{f-g}"; "h.i"; "j (k)"|] / expected: [|"n"; "--o"; "--p"; "q"; "--r"; │ 00:17:49 verbose #20892 > > │ "s:/t u/v.w"; "--x"; "y:/z.a"; "--b"; "c.d"; │ 00:17:49 verbose #20893 > > │ "\e{f-g}"; "h.i"; "j (k)"|] │ 00:17:49 verbose #20894 > > │ │ 00:17:49 verbose #20895 > > │ input: l "m n:\o.p" │ 00:17:49 verbose #20896 > > │ __assert_eq' / actual: [|"l"; "m n:\o.p"|] / expected: [|"l"; "m n:\o.p"|] │ 00:17:49 verbose #20897 > > │ │ 00:17:49 verbose #20898 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:49 verbose #20899 > > 00:17:49 verbose #20900 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:49 verbose #20901 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:49 verbose #20902 > > │ ## parsing │ 00:17:49 verbose #20903 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:49 verbose #20904 > > 00:17:49 verbose #20905 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:49 verbose #20906 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:49 verbose #20907 > > │ ### range │ 00:17:49 verbose #20908 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:49 verbose #20909 > > 00:17:49 verbose #20910 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:49 verbose #20911 > > type range = 00:17:49 verbose #20912 > > { 00:17:49 verbose #20913 > > from : int 00:17:49 verbose #20914 > > to : int 00:17:49 verbose #20915 > > } 00:17:50 verbose #20916 > > 00:17:50 verbose #20917 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:50 verbose #20918 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:50 verbose #20919 > > │ ### position │ 00:17:50 verbose #20920 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:50 verbose #20921 > > 00:17:50 verbose #20922 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:50 verbose #20923 > > type position = 00:17:50 verbose #20924 > > { 00:17:50 verbose #20925 > > line : int 00:17:50 verbose #20926 > > col : int 00:17:50 verbose #20927 > > } 00:17:50 verbose #20928 > > 00:17:50 verbose #20929 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:50 verbose #20930 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:50 verbose #20931 > > │ ### parser_state │ 00:17:50 verbose #20932 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:50 verbose #20933 > > 00:17:50 verbose #20934 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:50 verbose #20935 > > nominal parser_state = 00:17:50 verbose #20936 > > { 00:17:50 verbose #20937 > > line_text : sm'.string_builder 00:17:50 verbose #20938 > > position : position 00:17:50 verbose #20939 > > } 00:17:50 verbose #20940 > > 00:17:50 verbose #20941 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:50 verbose #20942 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:50 verbose #20943 > > │ ### parser │ 00:17:50 verbose #20944 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:50 verbose #20945 > > 00:17:50 verbose #20946 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:50 verbose #20947 > > type parser t = string * parser_state -> result (t * string * parser_state) 00:17:50 verbose #20948 > > string 00:17:50 verbose #20949 > > 00:17:50 verbose #20950 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:50 verbose #20951 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:50 verbose #20952 > > │ ### parse │ 00:17:50 verbose #20953 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:50 verbose #20954 > > 00:17:50 verbose #20955 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:50 verbose #20956 > > inl parse forall t. (p : parser t) (input : string) : result (t * string * 00:17:50 verbose #20957 > > parser_state) string = 00:17:50 verbose #20958 > > inl input = 00:17:50 verbose #20959 > > input 00:17:50 verbose #20960 > > |> optionm'.of_obj 00:17:50 verbose #20961 > > |> optionm'.default_value' "" 00:17:50 verbose #20962 > > p (input, { line_text = "" |> sm'.string_builder; position = { line = 1; col 00:17:50 verbose #20963 > > = 1 } } |> parser_state) 00:17:50 verbose #20964 > > 00:17:50 verbose #20965 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:50 verbose #20966 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:50 verbose #20967 > > │ ### inc │ 00:17:50 verbose #20968 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:50 verbose #20969 > > 00:17:50 verbose #20970 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:50 verbose #20971 > > inl inc c (parser_state s) = 00:17:50 verbose #20972 > > match c with 00:17:50 verbose #20973 > > | '\n' => { line = s.position.line + 1; col = 1 } 00:17:50 verbose #20974 > > | _ => { s.position with col = s.position.col + 1 }.position 00:17:50 verbose #20975 > > 00:17:50 verbose #20976 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:50 verbose #20977 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:50 verbose #20978 > > │ ### update │ 00:17:50 verbose #20979 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:50 verbose #20980 > > 00:17:50 verbose #20981 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:50 verbose #20982 > > inl update result s = 00:17:50 verbose #20983 > > (s, result |> sm'.to_char_array |> a |> (fun x => x : _ int _) |> 00:17:50 verbose #20984 > > am'.to_list' |> listm'.unbox) 00:17:50 verbose #20985 > > ||> listm.fold fun (parser_state s) c => 00:17:50 verbose #20986 > > { s with 00:17:50 verbose #20987 > > position = s |> parser_state |> inc c 00:17:50 verbose #20988 > > line_text = 00:17:50 verbose #20989 > > match c with 00:17:50 verbose #20990 > > | '\n' => s.line_text |> sm'.builder_clear 00:17:50 verbose #20991 > > | c => s.line_text |> sm'.builder_append (sm'.obj_to_string c) 00:17:50 verbose #20992 > > } |> parser_state 00:17:50 verbose #20993 > > 00:17:50 verbose #20994 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:50 verbose #20995 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:50 verbose #20996 > > │ ### any_char │ 00:17:50 verbose #20997 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:50 verbose #20998 > > 00:17:50 verbose #20999 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:50 verbose #21000 > > inl any_char () : parser char = function 00:17:50 verbose #21001 > > | "", s => Error $'$"parsing.any_char / unexpected end of input / s: 00:17:50 verbose #21002 > > %A{!s}"' 00:17:50 verbose #21003 > > | x, s => 00:17:50 verbose #21004 > > inl first_char = x |> sm'.index 0i32 00:17:50 verbose #21005 > > inl rest = x |> sm'.range (am'.Start 1i32) (am'.End id) 00:17:50 verbose #21006 > > in Ok (first_char, rest, s |> update (sm'.obj_to_string first_char)) 00:17:50 verbose #21007 > > 00:17:50 verbose #21008 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:50 verbose #21009 > > //// test 00:17:50 verbose #21010 > > 00:17:50 verbose #21011 > > "abc" 00:17:50 verbose #21012 > > |> parse (any_char ()) 00:17:50 verbose #21013 > > |> resultm.get 00:17:50 verbose #21014 > > |> sm'.format_debug 00:17:50 verbose #21015 > > |> _assert_eq ( 00:17:50 verbose #21016 > > ('a', "bc", { line_text = "a" |> sm'.string_builder; position = { line = 00:17:50 verbose #21017 > > 1i32; col = 2i32 } }) 00:17:50 verbose #21018 > > |> sm'.format_debug 00:17:50 verbose #21019 > > ) 00:17:51 verbose #21020 > > 00:17:51 verbose #21021 > > ╭─[ 257.11ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:51 verbose #21022 > > │ __assert_eq / actual: "struct ('a', "bc", a, 1, 2)" / expected: "struct │ 00:17:51 verbose #21023 > > │ ('a', "bc", a, 1, 2)" │ 00:17:51 verbose #21024 > > │ │ 00:17:51 verbose #21025 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:51 verbose #21026 > > 00:17:51 verbose #21027 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:51 verbose #21028 > > //// test 00:17:51 verbose #21029 > > 00:17:51 verbose #21030 > > "abc" 00:17:51 verbose #21031 > > |> parse_ (any_char_ ()) 00:17:51 verbose #21032 > > |> resultm.get 00:17:51 verbose #21033 > > |> sm'.format_debug 00:17:51 verbose #21034 > > |> _assert_eq' (('a', ($'FParsec.Position (null, 0, 1, 2)' : position_)) |> 00:17:51 verbose #21035 > > sm'.format_debug) 00:17:51 verbose #21036 > > 00:17:51 verbose #21037 > > ╭─[ 163.66ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:51 verbose #21038 > > │ __assert_eq' / actual: "struct ('a', (Ln: 1, Col: 2))" / expected: "struct │ 00:17:51 verbose #21039 > > │ ('a', (Ln: 1, Col: 2))" │ 00:17:51 verbose #21040 > > │ │ 00:17:51 verbose #21041 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:51 verbose #21042 > > 00:17:51 verbose #21043 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:51 verbose #21044 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:51 verbose #21045 > > │ ### p_char │ 00:17:51 verbose #21046 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:51 verbose #21047 > > 00:17:51 verbose #21048 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:51 verbose #21049 > > inl p_char (c : char) : parser char = function 00:17:51 verbose #21050 > > | "", s => Error $'$"parsing.p_char / unexpected end of input / s: %A{!s}"' 00:17:51 verbose #21051 > > | input, parser_state ({ line_text position = { line col } } as s) => 00:17:51 verbose #21052 > > inl first_char = input |> sm'.index 0i32 00:17:51 verbose #21053 > > if first_char = c 00:17:51 verbose #21054 > > then Ok ( 00:17:51 verbose #21055 > > first_char, 00:17:51 verbose #21056 > > input |> sm'.range (am'.Start 1i32) (am'.End id), 00:17:51 verbose #21057 > > s |> parser_state |> update (sm'.obj_to_string first_char) 00:17:51 verbose #21058 > > ) 00:17:51 verbose #21059 > > else 00:17:51 verbose #21060 > > inl message : string = 00:17:51 verbose #21061 > > inl rest = 00:17:51 verbose #21062 > > input 00:17:51 verbose #21063 > > |> sm'.range 00:17:51 verbose #21064 > > (am'.Start 0i32) 00:17:51 verbose #21065 > > (am'.End fun l => 00:17:51 verbose #21066 > > match (input |> sm'.index_of "\n") - 1 with 00:17:51 verbose #21067 > > | -2 => l 00:17:51 verbose #21068 > > | l => l 00:17:51 verbose #21069 > > ) 00:17:51 verbose #21070 > > $'$"parsing.p_char / expected: \'{!c}\' / line: {!line} / col: 00:17:51 verbose #21071 > > {!col}\n{!line_text}{!rest}"' 00:17:51 verbose #21072 > > inl pointer_line = (sm'.replicate (col - 1) " ") +. "^" 00:17:51 verbose #21073 > > $'$"{!message}\n{!pointer_line}\n"' |> Error 00:17:51 verbose #21074 > > 00:17:51 verbose #21075 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:51 verbose #21076 > > //// test 00:17:51 verbose #21077 > > 00:17:51 verbose #21078 > > "abc" 00:17:51 verbose #21079 > > |> parse (p_char 'a') 00:17:51 verbose #21080 > > |> resultm.get 00:17:51 verbose #21081 > > |> sm'.format_debug 00:17:51 verbose #21082 > > |> _assert_eq ( 00:17:51 verbose #21083 > > ('a', "bc", { line_text = "a" |> sm'.string_builder; position = { line = 00:17:51 verbose #21084 > > 1i32; col = 2i32 } }) 00:17:51 verbose #21085 > > |> sm'.format_debug 00:17:51 verbose #21086 > > ) 00:17:51 verbose #21087 > > 00:17:51 verbose #21088 > > ╭─[ 199.55ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:51 verbose #21089 > > │ __assert_eq / actual: "struct ('a', "bc", a, 1, 2)" / expected: "struct │ 00:17:51 verbose #21090 > > │ ('a', "bc", a, 1, 2)" │ 00:17:51 verbose #21091 > > │ │ 00:17:51 verbose #21092 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:51 verbose #21093 > > 00:17:51 verbose #21094 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:51 verbose #21095 > > //// test 00:17:51 verbose #21096 > > 00:17:51 verbose #21097 > > "abc" 00:17:51 verbose #21098 > > |> parse_ (p_char_ 'a') 00:17:51 verbose #21099 > > |> resultm.get 00:17:51 verbose #21100 > > |> sm'.format_debug 00:17:51 verbose #21101 > > |> _assert_eq' (('a', ($'FParsec.Position (null, 0, 1, 2)' : position_)) |> 00:17:51 verbose #21102 > > sm'.format_debug) 00:17:51 verbose #21103 > > 00:17:51 verbose #21104 > > ╭─[ 154.68ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:51 verbose #21105 > > │ __assert_eq' / actual: "struct ('a', (Ln: 1, Col: 2))" / expected: "struct │ 00:17:51 verbose #21106 > > │ ('a', (Ln: 1, Col: 2))" │ 00:17:51 verbose #21107 > > │ │ 00:17:51 verbose #21108 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:51 verbose #21109 > > 00:17:51 verbose #21110 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:51 verbose #21111 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:51 verbose #21112 > > │ ### any_string │ 00:17:51 verbose #21113 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:51 verbose #21114 > > 00:17:51 verbose #21115 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:51 verbose #21116 > > inl any_string length : parser string = fun input, s => 00:17:51 verbose #21117 > > if sm'.length input < length 00:17:51 verbose #21118 > > then Error $'$"parsing.any_string / unexpected end of input / s: %A{!s}"' 00:17:51 verbose #21119 > > else 00:17:51 verbose #21120 > > inl result = input |> sm'.range (am'.Start 0i32) (am'.End fun _ => 00:17:51 verbose #21121 > > length - 1) 00:17:51 verbose #21122 > > inl rest = input |> sm'.range (am'.Start length) (am'.End id) 00:17:51 verbose #21123 > > Ok (result, rest, s |> update result) 00:17:51 verbose #21124 > > 00:17:51 verbose #21125 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:51 verbose #21126 > > //// test 00:17:51 verbose #21127 > > 00:17:51 verbose #21128 > > "abcdef" 00:17:51 verbose #21129 > > |> parse (any_string 3i32) 00:17:51 verbose #21130 > > |> resultm.get 00:17:51 verbose #21131 > > |> sm'.format_debug 00:17:51 verbose #21132 > > |> _assert_eq ( 00:17:51 verbose #21133 > > ("abc", "def", { line_text = "abc" |> sm'.string_builder; position = { line 00:17:51 verbose #21134 > > = 1i32; col = 4i32 } }) 00:17:51 verbose #21135 > > |> sm'.format_debug 00:17:51 verbose #21136 > > ) 00:17:52 verbose #21137 > > 00:17:52 verbose #21138 > > ╭─[ 221.23ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:52 verbose #21139 > > │ __assert_eq / actual: "struct ("abc", "def", abc, 1, 4)" / expected: "struct │ 00:17:52 verbose #21140 > > │ ("abc", "def", abc, 1, 4)" │ 00:17:52 verbose #21141 > > │ │ 00:17:52 verbose #21142 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:52 verbose #21143 > > 00:17:52 verbose #21144 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:52 verbose #21145 > > //// test 00:17:52 verbose #21146 > > 00:17:52 verbose #21147 > > "abcdef" 00:17:52 verbose #21148 > > |> parse_ (any_string__ 3) 00:17:52 verbose #21149 > > |> resultm.get 00:17:52 verbose #21150 > > |> sm'.obj_to_string 00:17:52 verbose #21151 > > |> _assert_eq' (("abc", ($'FParsec.Position (null, 0, 1, 4)' : position_)) |> 00:17:52 verbose #21152 > > sm'.obj_to_string) 00:17:52 verbose #21153 > > 00:17:52 verbose #21154 > > ╭─[ 153.90ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:52 verbose #21155 > > │ __assert_eq' / actual: "(abc, (Ln: 1, Col: 4))" / expected: "(abc, (Ln: 1, │ 00:17:52 verbose #21156 > > │ Col: 4))" │ 00:17:52 verbose #21157 > > │ │ 00:17:52 verbose #21158 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:52 verbose #21159 > > 00:17:52 verbose #21160 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:52 verbose #21161 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:52 verbose #21162 > > │ ### skip_any_string │ 00:17:52 verbose #21163 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:52 verbose #21164 > > 00:17:52 verbose #21165 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:52 verbose #21166 > > inl skip_any_string length : parser () = fun input, s => 00:17:52 verbose #21167 > > if sm'.length input < length 00:17:52 verbose #21168 > > then Error $'$"parsing.skip_any_string / unexpected end of input / s: 00:17:52 verbose #21169 > > %A{!s}"' 00:17:52 verbose #21170 > > else Ok ( 00:17:52 verbose #21171 > > (), 00:17:52 verbose #21172 > > input |> sm'.range (am'.Start length) (am'.End id), 00:17:52 verbose #21173 > > s |> update (input |> sm'.range (am'.Start 0i32) (am'.End fun _ => 00:17:52 verbose #21174 > > length - 1)) 00:17:52 verbose #21175 > > ) 00:17:52 verbose #21176 > > 00:17:52 verbose #21177 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:52 verbose #21178 > > //// test 00:17:52 verbose #21179 > > 00:17:52 verbose #21180 > > "abcdef" 00:17:52 verbose #21181 > > |> parse (skip_any_string 3i32) 00:17:52 verbose #21182 > > |> resultm.get 00:17:52 verbose #21183 > > |> sm'.format_debug 00:17:52 verbose #21184 > > |> _assert_eq ( 00:17:52 verbose #21185 > > ((), "def", { line_text = "abc" |> sm'.string_builder; position = { line = 00:17:52 verbose #21186 > > 1i32; col = 4i32 } }) 00:17:52 verbose #21187 > > |> sm'.format_debug 00:17:52 verbose #21188 > > ) 00:17:52 verbose #21189 > > 00:17:52 verbose #21190 > > ╭─[ 207.66ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:52 verbose #21191 > > │ __assert_eq / actual: "struct ("def", abc, 1, 4)" / expected: "struct │ 00:17:52 verbose #21192 > > │ ("def", abc, 1, 4)" │ 00:17:52 verbose #21193 > > │ │ 00:17:52 verbose #21194 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:52 verbose #21195 > > 00:17:52 verbose #21196 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:52 verbose #21197 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:52 verbose #21198 > > │ ### (>>.) │ 00:17:52 verbose #21199 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:52 verbose #21200 > > 00:17:52 verbose #21201 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:52 verbose #21202 > > inl (>>.) forall t u. (a : parser t) (b : parser u) : parser u = fun input, s => 00:17:52 verbose #21203 > > match a (input, s) with 00:17:52 verbose #21204 > > | Ok (_, rest, s) => b (rest, s) 00:17:52 verbose #21205 > > | Error e => Error e 00:17:52 verbose #21206 > > 00:17:52 verbose #21207 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:52 verbose #21208 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:52 verbose #21209 > > │ ### (>>.) │ 00:17:52 verbose #21210 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:52 verbose #21211 > > 00:17:52 verbose #21212 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:52 verbose #21213 > > inl (.>>) forall t u. (a : parser t) (b : parser u) : parser t = fun input, s => 00:17:52 verbose #21214 > > match a (input, s) with 00:17:52 verbose #21215 > > | Ok (result, rest, s) => 00:17:52 verbose #21216 > > match b (rest, s) with 00:17:52 verbose #21217 > > | Ok (_, rest, s) => Ok (result, rest, s) 00:17:52 verbose #21218 > > | Error e => Error e 00:17:52 verbose #21219 > > | Error e => Error e 00:17:52 verbose #21220 > > 00:17:52 verbose #21221 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:52 verbose #21222 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:52 verbose #21223 > > │ ### (.>>.) │ 00:17:52 verbose #21224 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:52 verbose #21225 > > 00:17:52 verbose #21226 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:52 verbose #21227 > > inl (.>>.) forall t u. (a : parser t) (b : parser u) : parser (t * u) = fun 00:17:52 verbose #21228 > > input, s => 00:17:52 verbose #21229 > > match a (input, s) with 00:17:52 verbose #21230 > > | Ok (result_a, rest, s) => 00:17:52 verbose #21231 > > match b (rest, s) with 00:17:52 verbose #21232 > > | Ok (result_b, rest, s) => Ok ((result_a, result_b), rest, s) 00:17:52 verbose #21233 > > | Error e => Error e 00:17:52 verbose #21234 > > | Error e => Error e 00:17:52 verbose #21235 > > 00:17:52 verbose #21236 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:52 verbose #21237 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:52 verbose #21238 > > │ ### (>>%) │ 00:17:52 verbose #21239 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:52 verbose #21240 > > 00:17:52 verbose #21241 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:52 verbose #21242 > > inl (>>%) forall t u. (a : parser t) (b : u) : parser u = fun input, s => 00:17:52 verbose #21243 > > match a (input, s) with 00:17:52 verbose #21244 > > | Ok (_, rest, s) => Ok (b, rest, s) 00:17:52 verbose #21245 > > | Error e => Error e 00:17:53 verbose #21246 > > 00:17:53 verbose #21247 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:53 verbose #21248 > > //// test 00:17:53 verbose #21249 > > 00:17:53 verbose #21250 > > "abc" 00:17:53 verbose #21251 > > |> parse (p_char 'a' >>. p_char 'b') 00:17:53 verbose #21252 > > |> resultm.get 00:17:53 verbose #21253 > > |> sm'.format_debug 00:17:53 verbose #21254 > > |> _assert_eq ( 00:17:53 verbose #21255 > > ('b', "c", { line_text = "ab" |> sm'.string_builder; position = { line = 00:17:53 verbose #21256 > > 1i32; col = 3i32 } }) 00:17:53 verbose #21257 > > |> sm'.format_debug 00:17:53 verbose #21258 > > ) 00:17:53 verbose #21259 > > 00:17:53 verbose #21260 > > "abc\ndef\nghi" 00:17:53 verbose #21261 > > |> parse (skip_any_string 5i32 >>. p_char 'a') 00:17:53 verbose #21262 > > |> _assert_eq (Error "parsing.p_char / expected: 'a' / line: 2 / col: 2\ndef\n 00:17:53 verbose #21263 > > ^\n") 00:17:53 verbose #21264 > > 00:17:53 verbose #21265 > > ╭─[ 322.94ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:53 verbose #21266 > > │ __assert_eq / actual: "struct ('b', "c", ab, 1, 3)" / expected: "struct │ 00:17:53 verbose #21267 > > │ ('b', "c", ab, 1, 3)" │ 00:17:53 verbose #21268 > > │ __assert_eq / actual: US0_1 "parsing.p_char / expected: 'a' / line: 2 / col: │ 00:17:53 verbose #21269 > > │ 2 │ 00:17:53 verbose #21270 > > │ def │ 00:17:53 verbose #21271 > > │ ^ │ 00:17:53 verbose #21272 > > │ " / expected: US0_1 "parsing.p_char / expected: 'a' / line: 2 / col: 2 │ 00:17:53 verbose #21273 > > │ def │ 00:17:53 verbose #21274 > > │ ^ │ 00:17:53 verbose #21275 > > │ " │ 00:17:53 verbose #21276 > > │ │ 00:17:53 verbose #21277 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:53 verbose #21278 > > 00:17:53 verbose #21279 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:53 verbose #21280 > > //// test 00:17:53 verbose #21281 > > 00:17:53 verbose #21282 > > "abc" 00:17:53 verbose #21283 > > |> parse_ (p_char_ 'a' >>.$ p_char_ 'b') 00:17:53 verbose #21284 > > |> resultm.get 00:17:53 verbose #21285 > > |> sm'.obj_to_string 00:17:53 verbose #21286 > > |> _assert_eq' (('b', ($'FParsec.Position (null, 0, 1, 3)' : position_)) |> 00:17:53 verbose #21287 > > sm'.obj_to_string) 00:17:53 verbose #21288 > > 00:17:53 verbose #21289 > > ╭─[ 195.01ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:53 verbose #21290 > > │ __assert_eq' / actual: "(b, (Ln: 1, Col: 3))" / expected: "(b, (Ln: 1, Col: │ 00:17:53 verbose #21291 > > │ 3))" │ 00:17:53 verbose #21292 > > │ │ 00:17:53 verbose #21293 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:53 verbose #21294 > > 00:17:53 verbose #21295 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:53 verbose #21296 > > //// test 00:17:53 verbose #21297 > > 00:17:53 verbose #21298 > > "abc\ndef\nghi" 00:17:53 verbose #21299 > > |> parse_ (skip_any_string_ 5 >>.$ p_char_ 'a') 00:17:53 verbose #21300 > > |> resultm.unwrap_err 00:17:53 verbose #21301 > > |> sm'.obj_to_string 00:17:53 verbose #21302 > > |> sm'.replace "\r\n" "\n" 00:17:53 verbose #21303 > > |> _assert_eq "(Error in Ln: 2 Col: 2\ndef\n ^\nExpecting: 'a'\n, Error in Ln: 2 00:17:53 verbose #21304 > > Col: 2\nExpecting: 'a'\n)" 00:17:53 verbose #21305 > > 00:17:53 verbose #21306 > > ╭─[ 172.39ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:53 verbose #21307 > > │ __assert_eq / actual: "(Error in Ln: 2 Col: 2 │ 00:17:53 verbose #21308 > > │ def │ 00:17:53 verbose #21309 > > │ ^ │ 00:17:53 verbose #21310 > > │ Expecting: 'a' │ 00:17:53 verbose #21311 > > │ , Error in Ln: 2 Col: 2 │ 00:17:53 verbose #21312 > > │ Expecting: 'a' │ 00:17:53 verbose #21313 > > │ )" / expected: "(Error in Ln: 2 Col: 2 │ 00:17:53 verbose #21314 > > │ def │ 00:17:53 verbose #21315 > > │ ^ │ 00:17:53 verbose #21316 > > │ Expecting: 'a' │ 00:17:53 verbose #21317 > > │ , Error in Ln: 2 Col: 2 │ 00:17:53 verbose #21318 > > │ Expecting: 'a' │ 00:17:53 verbose #21319 > > │ )" │ 00:17:53 verbose #21320 > > │ │ 00:17:53 verbose #21321 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:53 verbose #21322 > > 00:17:53 verbose #21323 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:53 verbose #21324 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:53 verbose #21325 > > │ ### none_of │ 00:17:53 verbose #21326 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:53 verbose #21327 > > 00:17:53 verbose #21328 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:53 verbose #21329 > > inl none_of (chars : list char) : parser char = function 00:17:53 verbose #21330 > > | "", s => 00:17:53 verbose #21331 > > inl chars = chars |> listm'.box |> listm'.to_array' 00:17:53 verbose #21332 > > Error $'$"parsing.none_of / unexpected end of input / chars: %A{!chars} 00:17:53 verbose #21333 > > / s: %A{!s}"' 00:17:53 verbose #21334 > > | x, s => 00:17:53 verbose #21335 > > inl first_char = x |> sm'.index 0i32 00:17:53 verbose #21336 > > inl rest = x |> sm'.range (am'.Start 1i32) (am'.End id) 00:17:53 verbose #21337 > > if chars |> listm'.exists' ((=) first_char) |> not 00:17:53 verbose #21338 > > then Ok (first_char, rest, s |> update (sm'.obj_to_string first_char)) 00:17:53 verbose #21339 > > else 00:17:53 verbose #21340 > > inl chars = chars |> listm'.box |> listm'.to_array' 00:17:53 verbose #21341 > > Error $'$"parsing.none_of / unexpected char: \'{!first_char}\' 00:17:53 verbose #21342 > > chars: %A{!chars} / s: %A{!s}"' 00:17:53 verbose #21343 > > 00:17:53 verbose #21344 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:53 verbose #21345 > > //// test 00:17:53 verbose #21346 > > 00:17:53 verbose #21347 > > "abc" 00:17:53 verbose #21348 > > |> parse (none_of [['a'; 'b'; 'c']]) 00:17:53 verbose #21349 > > |> _assert_eq (Error "parsing.none_of / unexpected char: \'a\' / chars: [[|'a'; 00:17:53 verbose #21350 > > 'b'; 'c'|]] / s: struct (, 1, 1)") 00:17:53 verbose #21351 > > 00:17:53 verbose #21352 > > "def" 00:17:53 verbose #21353 > > |> parse (none_of [['a'; 'b'; 'c']]) 00:17:53 verbose #21354 > > |> resultm.get 00:17:53 verbose #21355 > > |> sm'.format_debug 00:17:53 verbose #21356 > > |> _assert_eq ( 00:17:53 verbose #21357 > > ('d', "ef", { line_text = "d" |> sm'.string_builder; position = { line = 00:17:53 verbose #21358 > > 1i32; col = 2i32 } }) 00:17:53 verbose #21359 > > |> sm'.format_debug 00:17:53 verbose #21360 > > ) 00:17:54 verbose #21361 > > 00:17:54 verbose #21362 > > ╭─[ 268.76ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:54 verbose #21363 > > │ __assert_eq / actual: US0_1 │ 00:17:54 verbose #21364 > > │ "parsing.none_of / unexpected char: 'a' / chars: [|'a'; 'b'; 'c'|] / s: │ 00:17:54 verbose #21365 > > │ struct (, 1, 1)" / expected: US0_1 │ 00:17:54 verbose #21366 > > │ "parsing.none_of / unexpected char: 'a' / chars: [|'a'; 'b'; 'c'|] / s: │ 00:17:54 verbose #21367 > > │ struct (, 1, 1)" │ 00:17:54 verbose #21368 > > │ __assert_eq / actual: "struct ('d', "ef", d, 1, 2)" / expected: "struct │ 00:17:54 verbose #21369 > > │ ('d', "ef", d, 1, 2)" │ 00:17:54 verbose #21370 > > │ │ 00:17:54 verbose #21371 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:54 verbose #21372 > > 00:17:54 verbose #21373 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:54 verbose #21374 > > //// test 00:17:54 verbose #21375 > > 00:17:54 verbose #21376 > > "abc" 00:17:54 verbose #21377 > > |> parse_ (none_of_ [['a'; 'b'; 'c']]) 00:17:54 verbose #21378 > > |> resultm.unwrap_err 00:17:54 verbose #21379 > > |> sm'.obj_to_string 00:17:54 verbose #21380 > > |> sm'.replace "\r\n" "\n" 00:17:54 verbose #21381 > > |> _assert_eq ($'"(Error in Ln: 1 Col: 1\nabc\n^\nExpecting: any char not in 00:17:54 verbose #21382 > > ‘abc’\n, Error in Ln: 1 Col: 1\nExpecting: any char not in ‘abc’\n)"') 00:17:54 verbose #21383 > > 00:17:54 verbose #21384 > > "def" 00:17:54 verbose #21385 > > |> parse_ (none_of_ [['a'; 'b'; 'c']]) 00:17:54 verbose #21386 > > |> resultm.get 00:17:54 verbose #21387 > > |> sm'.obj_to_string 00:17:54 verbose #21388 > > |> _assert_eq' (('d', ($'FParsec.Position (null, 0, 1, 2)' : position_)) |> 00:17:54 verbose #21389 > > sm'.obj_to_string) 00:17:54 verbose #21390 > > 00:17:54 verbose #21391 > > ╭─[ 217.32ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:54 verbose #21392 > > │ __assert_eq / actual: "(Error in Ln: 1 Col: 1 │ 00:17:54 verbose #21393 > > │ abc │ 00:17:54 verbose #21394 > > │ ^ │ 00:17:54 verbose #21395 > > │ Expecting: any char not in ‘abc’ │ 00:17:54 verbose #21396 > > │ , Error in Ln: 1 Col: 1 │ 00:17:54 verbose #21397 > > │ Expecting: any char not in ‘abc’ │ 00:17:54 verbose #21398 > > │ )" / expected: "(Error in Ln: 1 Col: 1 │ 00:17:54 verbose #21399 > > │ abc │ 00:17:54 verbose #21400 > > │ ^ │ 00:17:54 verbose #21401 > > │ Expecting: any char not in ‘abc’ │ 00:17:54 verbose #21402 > > │ , Error in Ln: 1 Col: 1 │ 00:17:54 verbose #21403 > > │ Expecting: any char not in ‘abc’ │ 00:17:54 verbose #21404 > > │ )" │ 00:17:54 verbose #21405 > > │ __assert_eq' / actual: "(d, (Ln: 1, Col: 2))" / expected: "(d, (Ln: 1, Col: │ 00:17:54 verbose #21406 > > │ 2))" │ 00:17:54 verbose #21407 > > │ │ 00:17:54 verbose #21408 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:54 verbose #21409 > > 00:17:54 verbose #21410 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:54 verbose #21411 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:54 verbose #21412 > > │ ### (<|>) │ 00:17:54 verbose #21413 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:54 verbose #21414 > > 00:17:54 verbose #21415 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:54 verbose #21416 > > inl (<|>) forall t. (a : parser t) (b : parser t) : parser t = fun input, s => 00:17:54 verbose #21417 > > match a (input, s) with 00:17:54 verbose #21418 > > | Ok _ as result => result 00:17:54 verbose #21419 > > | Error _ => b (input, s) 00:17:54 verbose #21420 > > 00:17:54 verbose #21421 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:54 verbose #21422 > > //// test 00:17:54 verbose #21423 > > 00:17:54 verbose #21424 > > "abc" 00:17:54 verbose #21425 > > |> parse (p_char 'a' <|> p_char 'b') 00:17:54 verbose #21426 > > |> resultm.get 00:17:54 verbose #21427 > > |> sm'.format_debug 00:17:54 verbose #21428 > > |> _assert_eq ( 00:17:54 verbose #21429 > > ('a', "bc", { line_text = "a" |> sm'.string_builder; position = { line = 00:17:54 verbose #21430 > > 1i32; col = 2i32 } }) 00:17:54 verbose #21431 > > |> sm'.format_debug 00:17:54 verbose #21432 > > ) 00:17:54 verbose #21433 > > 00:17:54 verbose #21434 > > "cba" 00:17:54 verbose #21435 > > |> parse (p_char 'a' <|> p_char 'b') 00:17:54 verbose #21436 > > |> _assert_eq (Error "parsing.p_char / expected: 'b' / line: 1 / col: 00:17:54 verbose #21437 > > 1\ncba\n^\n") 00:17:54 verbose #21438 > > 00:17:54 verbose #21439 > > ╭─[ 287.09ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:54 verbose #21440 > > │ __assert_eq / actual: "struct ('a', "bc", a, 1, 2)" / expected: "struct │ 00:17:54 verbose #21441 > > │ ('a', "bc", a, 1, 2)" │ 00:17:54 verbose #21442 > > │ __assert_eq / actual: US0_1 "parsing.p_char / expected: 'b' / line: 1 / col: │ 00:17:54 verbose #21443 > > │ 1 │ 00:17:54 verbose #21444 > > │ cba │ 00:17:54 verbose #21445 > > │ ^ │ 00:17:54 verbose #21446 > > │ " / expected: US0_1 "parsing.p_char / expected: 'b' / line: 1 / col: 1 │ 00:17:54 verbose #21447 > > │ cba │ 00:17:54 verbose #21448 > > │ ^ │ 00:17:54 verbose #21449 > > │ " │ 00:17:54 verbose #21450 > > │ │ 00:17:54 verbose #21451 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:54 verbose #21452 > > 00:17:54 verbose #21453 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:54 verbose #21454 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:54 verbose #21455 > > │ ### (|>>) │ 00:17:54 verbose #21456 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:54 verbose #21457 > > 00:17:54 verbose #21458 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:54 verbose #21459 > > inl (|>>) p f : parser _ = fun input => 00:17:54 verbose #21460 > > match p input with 00:17:54 verbose #21461 > > | Ok (result, rest) => Ok (f result, rest) 00:17:54 verbose #21462 > > | Error e => Error e 00:17:54 verbose #21463 > > 00:17:54 verbose #21464 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:54 verbose #21465 > > //// test 00:17:54 verbose #21466 > > 00:17:54 verbose #21467 > > "abc" 00:17:54 verbose #21468 > > |> parse (p_char 'a' |>> sm'.char_to_upper) 00:17:54 verbose #21469 > > |> resultm.get 00:17:54 verbose #21470 > > |> sm'.format_debug 00:17:54 verbose #21471 > > |> _assert_eq ( 00:17:54 verbose #21472 > > ('A', "bc", { line_text = "a" |> sm'.string_builder; position = { line = 00:17:54 verbose #21473 > > 1i32; col = 2i32 } }) 00:17:54 verbose #21474 > > |> sm'.format_debug 00:17:54 verbose #21475 > > ) 00:17:55 verbose #21476 > > 00:17:55 verbose #21477 > > ╭─[ 248.10ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:55 verbose #21478 > > │ __assert_eq / actual: "struct ('A', "bc", a, 1, 2)" / expected: "struct │ 00:17:55 verbose #21479 > > │ ('A', "bc", a, 1, 2)" │ 00:17:55 verbose #21480 > > │ │ 00:17:55 verbose #21481 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:55 verbose #21482 > > 00:17:55 verbose #21483 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:55 verbose #21484 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:55 verbose #21485 > > │ ### many │ 00:17:55 verbose #21486 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:55 verbose #21487 > > 00:17:55 verbose #21488 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:55 verbose #21489 > > inl many p : parser (list _) = fun input => 00:17:55 verbose #21490 > > let rec loop acc input = 00:17:55 verbose #21491 > > match p input with 00:17:55 verbose #21492 > > | Ok (result, rest) => loop (result :: acc) rest 00:17:55 verbose #21493 > > | Error _ => Ok (listm.rev acc, input) 00:17:55 verbose #21494 > > loop [[]] input 00:17:55 verbose #21495 > > 00:17:55 verbose #21496 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:55 verbose #21497 > > //// test 00:17:55 verbose #21498 > > 00:17:55 verbose #21499 > > "aaabbc" 00:17:55 verbose #21500 > > |> parse (many (p_char 'a' <|> p_char 'b')) 00:17:55 verbose #21501 > > |> resultm.get 00:17:55 verbose #21502 > > |> sm'.format_debug 00:17:55 verbose #21503 > > |> _assert_eq ( 00:17:55 verbose #21504 > > ([['a'; 'a'; 'a'; 'b'; 'b']], "c", { line_text = "aaabb" |> 00:17:55 verbose #21505 > > sm'.string_builder; position = { line = 1i32; col = 6i32 } }) 00:17:55 verbose #21506 > > |> sm'.format_debug 00:17:55 verbose #21507 > > ) 00:17:55 verbose #21508 > > 00:17:55 verbose #21509 > > ╭─[ 277.90ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:55 verbose #21510 > > │ __assert_eq / actual: "struct (UH0_1 ('a', UH0_1 ('a', UH0_1 ('a', UH0_1 │ 00:17:55 verbose #21511 > > │ ('b', UH0_1 ('b', UH0_0))))), │ 00:17:55 verbose #21512 > > │ "c", aaabb, 1, 6)" / expected: "struct (UH0_1 ('a', UH0_1 ('a', │ 00:17:55 verbose #21513 > > │ UH0_1 ('a', UH0_1 ('b', UH0_1 ('b', UH0_0))))), │ 00:17:55 verbose #21514 > > │ "c", aaabb, 1, 6)" │ 00:17:55 verbose #21515 > > │ │ 00:17:55 verbose #21516 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:55 verbose #21517 > > 00:17:55 verbose #21518 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:55 verbose #21519 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:55 verbose #21520 > > │ ### many1_chars │ 00:17:55 verbose #21521 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:55 verbose #21522 > > 00:17:55 verbose #21523 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:55 verbose #21524 > > inl many1_chars p : parser string = fun input => 00:17:55 verbose #21525 > > match p input with 00:17:55 verbose #21526 > > | Error e => Error e 00:17:55 verbose #21527 > > | Ok (first_result, rest) => 00:17:55 verbose #21528 > > let rec loop acc input = 00:17:55 verbose #21529 > > match p input with 00:17:55 verbose #21530 > > | Ok (result, rest) => loop (acc +. sm'.obj_to_string result) rest 00:17:55 verbose #21531 > > | Error _ => Ok (acc, input) 00:17:55 verbose #21532 > > loop (sm'.obj_to_string first_result) rest 00:17:55 verbose #21533 > > 00:17:55 verbose #21534 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:55 verbose #21535 > > //// test 00:17:55 verbose #21536 > > 00:17:55 verbose #21537 > > "aaabbc" 00:17:55 verbose #21538 > > |> parse (many1_chars (p_char 'a' <|> p_char 'b')) 00:17:55 verbose #21539 > > |> resultm.get 00:17:55 verbose #21540 > > |> sm'.format_debug 00:17:55 verbose #21541 > > |> _assert_eq ( 00:17:55 verbose #21542 > > ("aaabb", "c", { line_text = "aaabb" |> sm'.string_builder; position = { 00:17:55 verbose #21543 > > line = 1i32; col = 6i32 } }) 00:17:55 verbose #21544 > > |> sm'.format_debug 00:17:55 verbose #21545 > > ) 00:17:56 verbose #21546 > > 00:17:56 verbose #21547 > > ╭─[ 307.79ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:56 verbose #21548 > > │ __assert_eq / actual: "struct ("aaabb", "c", aaabb, 1, 6)" / expected: │ 00:17:56 verbose #21549 > > │ "struct ("aaabb", "c", aaabb, 1, 6)" │ 00:17:56 verbose #21550 > > │ │ 00:17:56 verbose #21551 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:56 verbose #21552 > > 00:17:56 verbose #21553 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:56 verbose #21554 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:56 verbose #21555 > > │ ### many_chars │ 00:17:56 verbose #21556 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:56 verbose #21557 > > 00:17:56 verbose #21558 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:56 verbose #21559 > > inl many_chars p : parser string = fun input => 00:17:56 verbose #21560 > > match many1_chars p input with 00:17:56 verbose #21561 > > | Ok (result, rest) => Ok (result, rest) 00:17:56 verbose #21562 > > | Error e => Ok ("", input) 00:17:56 verbose #21563 > > 00:17:56 verbose #21564 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:56 verbose #21565 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:56 verbose #21566 > > │ ### many_chars_till │ 00:17:56 verbose #21567 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:56 verbose #21568 > > 00:17:56 verbose #21569 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:56 verbose #21570 > > inl many_chars_till p end_p : parser string = fun input => 00:17:56 verbose #21571 > > match end_p input with 00:17:56 verbose #21572 > > | Ok _ => Ok ("", input) 00:17:56 verbose #21573 > > | Error _ => 00:17:56 verbose #21574 > > match many_chars p input with 00:17:56 verbose #21575 > > | Ok (result, rest) => Ok (result, rest) 00:17:56 verbose #21576 > > | Error e => Error e 00:17:56 verbose #21577 > > 00:17:56 verbose #21578 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:56 verbose #21579 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:56 verbose #21580 > > │ ### many1 │ 00:17:56 verbose #21581 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:56 verbose #21582 > > 00:17:56 verbose #21583 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:56 verbose #21584 > > inl many1 p : parser (list _) = fun input => 00:17:56 verbose #21585 > > match p input with 00:17:56 verbose #21586 > > | Error e => Error e 00:17:56 verbose #21587 > > | Ok (first_result, rest) => 00:17:56 verbose #21588 > > let rec loop acc input = 00:17:56 verbose #21589 > > match p input with 00:17:56 verbose #21590 > > | Ok (result, rest) => loop (result :: acc) rest 00:17:56 verbose #21591 > > | Error _ => Ok (listm.rev acc, input) 00:17:56 verbose #21592 > > loop [[ first_result ]] rest 00:17:56 verbose #21593 > > 00:17:56 verbose #21594 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:56 verbose #21595 > > //// test 00:17:56 verbose #21596 > > 00:17:56 verbose #21597 > > "aaabbc" 00:17:56 verbose #21598 > > |> parse (many1 (p_char 'a' <|> p_char 'b')) 00:17:56 verbose #21599 > > |> resultm.get 00:17:56 verbose #21600 > > |> sm'.format_debug 00:17:56 verbose #21601 > > |> _assert_eq ( 00:17:56 verbose #21602 > > ([['a'; 'a'; 'a'; 'b'; 'b']], "c", { line_text = "aaabb" |> 00:17:56 verbose #21603 > > sm'.string_builder; position = { line = 1i32; col = 6i32 } }) 00:17:56 verbose #21604 > > |> sm'.format_debug 00:17:56 verbose #21605 > > ) 00:17:56 verbose #21606 > > 00:17:56 verbose #21607 > > "bcc" 00:17:56 verbose #21608 > > |> parse (many1 (p_char 'a' <|> p_char 'b')) 00:17:56 verbose #21609 > > |> resultm.get 00:17:56 verbose #21610 > > |> sm'.format_debug 00:17:56 verbose #21611 > > |> _assert_eq ( 00:17:56 verbose #21612 > > ([['b']], "cc", { line_text = "b" |> sm'.string_builder; position = { line = 00:17:56 verbose #21613 > > 1i32; col = 2i32 } }) 00:17:56 verbose #21614 > > |> sm'.format_debug 00:17:56 verbose #21615 > > ) 00:17:56 verbose #21616 > > 00:17:56 verbose #21617 > > "cba" 00:17:56 verbose #21618 > > |> parse (many1 (p_char 'a' <|> p_char 'b')) 00:17:56 verbose #21619 > > |> _assert_eq (Error "parsing.p_char / expected: 'b' / line: 1 / col: 00:17:56 verbose #21620 > > 1\ncba\n^\n") 00:17:57 verbose #21621 > > 00:17:57 verbose #21622 > > ╭─[ 939.12ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:57 verbose #21623 > > │ __assert_eq / actual: "struct (UH0_1 ('a', UH0_1 ('a', UH0_1 ('a', UH0_1 │ 00:17:57 verbose #21624 > > │ ('b', UH0_1 ('b', UH0_0))))), │ 00:17:57 verbose #21625 > > │ "c", aaabb, 1, 6)" / expected: "struct (UH0_1 ('a', UH0_1 ('a', │ 00:17:57 verbose #21626 > > │ UH0_1 ('a', UH0_1 ('b', UH0_1 ('b', UH0_0))))), │ 00:17:57 verbose #21627 > > │ "c", aaabb, 1, 6)" │ 00:17:57 verbose #21628 > > │ __assert_eq / actual: "struct (UH0_1 ('b', UH0_0), "cc", b, 1, 2)" / │ 00:17:57 verbose #21629 > > │ expected: "struct (UH0_1 ('b', UH0_0), "cc", b, 1, 2)" │ 00:17:57 verbose #21630 > > │ __assert_eq / actual: US1_1 "parsing.p_char / expected: 'b' / line: 1 / col: │ 00:17:57 verbose #21631 > > │ 1 │ 00:17:57 verbose #21632 > > │ cba │ 00:17:57 verbose #21633 > > │ ^ │ 00:17:57 verbose #21634 > > │ " / expected: US1_1 "parsing.p_char / expected: 'b' / line: 1 / col: 1 │ 00:17:57 verbose #21635 > > │ cba │ 00:17:57 verbose #21636 > > │ ^ │ 00:17:57 verbose #21637 > > │ " │ 00:17:57 verbose #21638 > > │ │ 00:17:57 verbose #21639 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:57 verbose #21640 > > 00:17:57 verbose #21641 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:57 verbose #21642 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:57 verbose #21643 > > │ ### many1_strings │ 00:17:57 verbose #21644 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:57 verbose #21645 > > 00:17:57 verbose #21646 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:57 verbose #21647 > > inl many1_strings p : parser string = fun input => 00:17:57 verbose #21648 > > match many1 p input with 00:17:57 verbose #21649 > > | Ok (results, rest) => 00:17:57 verbose #21650 > > Ok (results |> listm.map sm'.obj_to_string |> listm'.box |> seq.of_list' 00:17:57 verbose #21651 > > |> sm'.concat "", rest) 00:17:57 verbose #21652 > > | Error e => Error e 00:17:57 verbose #21653 > > 00:17:57 verbose #21654 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:57 verbose #21655 > > //// test 00:17:57 verbose #21656 > > 00:17:57 verbose #21657 > > "aaabbc" 00:17:57 verbose #21658 > > |> parse (many1_strings (p_char 'a' <|> p_char 'b')) 00:17:57 verbose #21659 > > |> resultm.get 00:17:57 verbose #21660 > > |> sm'.format_debug 00:17:57 verbose #21661 > > |> _assert_eq ( 00:17:57 verbose #21662 > > ("aaabb", "c", { line_text = "aaabb" |> sm'.string_builder; position = { 00:17:57 verbose #21663 > > line = 1i32; col = 6i32 } }) 00:17:57 verbose #21664 > > |> sm'.format_debug 00:17:57 verbose #21665 > > ) 00:17:57 verbose #21666 > > 00:17:57 verbose #21667 > > ╭─[ 483.99ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:57 verbose #21668 > > │ __assert_eq / actual: "struct ("aaabb", "c", aaabb, 1, 6)" / expected: │ 00:17:57 verbose #21669 > > │ "struct ("aaabb", "c", aaabb, 1, 6)" │ 00:17:57 verbose #21670 > > │ │ 00:17:57 verbose #21671 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:57 verbose #21672 > > 00:17:57 verbose #21673 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:57 verbose #21674 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:57 verbose #21675 > > │ ### many_strings │ 00:17:57 verbose #21676 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:57 verbose #21677 > > 00:17:57 verbose #21678 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:57 verbose #21679 > > inl many_strings p : parser string = fun input => 00:17:57 verbose #21680 > > match many p input with 00:17:57 verbose #21681 > > | Ok (results, rest) => 00:17:57 verbose #21682 > > Ok (results |> listm.map sm'.obj_to_string |> listm'.box |> seq.of_list' 00:17:57 verbose #21683 > > |> sm'.concat "", rest) 00:17:57 verbose #21684 > > | Error e => Ok ("", input) 00:17:58 verbose #21685 > > 00:17:58 verbose #21686 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:58 verbose #21687 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:58 verbose #21688 > > │ ### choice │ 00:17:58 verbose #21689 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:58 verbose #21690 > > 00:17:58 verbose #21691 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:58 verbose #21692 > > inl choice parsers : parser _ = fun input => 00:17:58 verbose #21693 > > let rec loop = function 00:17:58 verbose #21694 > > | [[]] => Error "choice / no parsers succeeded" 00:17:58 verbose #21695 > > | p :: ps => 00:17:58 verbose #21696 > > match p input with 00:17:58 verbose #21697 > > | Ok _ as result => result 00:17:58 verbose #21698 > > | Error _ => loop ps 00:17:58 verbose #21699 > > loop parsers 00:17:58 verbose #21700 > > 00:17:58 verbose #21701 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:58 verbose #21702 > > //// test 00:17:58 verbose #21703 > > 00:17:58 verbose #21704 > > "bca" 00:17:58 verbose #21705 > > |> parse (choice [[p_char 'a'; p_char 'b'; p_char 'c']]) 00:17:58 verbose #21706 > > |> resultm.get 00:17:58 verbose #21707 > > |> sm'.format_debug 00:17:58 verbose #21708 > > |> _assert_eq ( 00:17:58 verbose #21709 > > ('b', "ca", { line_text = "b" |> sm'.string_builder; position = { line = 00:17:58 verbose #21710 > > 1i32; col = 2i32 } }) 00:17:58 verbose #21711 > > |> sm'.format_debug 00:17:58 verbose #21712 > > ) 00:17:58 verbose #21713 > > 00:17:58 verbose #21714 > > "cba" 00:17:58 verbose #21715 > > |> parse (choice [[p_char 'a'; p_char 'b'; p_char 'c']]) 00:17:58 verbose #21716 > > |> resultm.get 00:17:58 verbose #21717 > > |> sm'.format_debug 00:17:58 verbose #21718 > > |> _assert_eq ( 00:17:58 verbose #21719 > > ('c', "ba", { line_text = "c" |> sm'.string_builder; position = { line = 00:17:58 verbose #21720 > > 1i32; col = 2i32 } }) 00:17:58 verbose #21721 > > |> sm'.format_debug 00:17:58 verbose #21722 > > ) 00:17:58 verbose #21723 > > 00:17:58 verbose #21724 > > ╭─[ 313.17ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:58 verbose #21725 > > │ __assert_eq / actual: "struct ('b', "ca", b, 1, 2)" / expected: "struct │ 00:17:58 verbose #21726 > > │ ('b', "ca", b, 1, 2)" │ 00:17:58 verbose #21727 > > │ __assert_eq / actual: "struct ('c', "ba", c, 1, 2)" / expected: "struct │ 00:17:58 verbose #21728 > > │ ('c', "ba", c, 1, 2)" │ 00:17:58 verbose #21729 > > │ │ 00:17:58 verbose #21730 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:58 verbose #21731 > > 00:17:58 verbose #21732 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:58 verbose #21733 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:58 verbose #21734 > > │ ### between │ 00:17:58 verbose #21735 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:58 verbose #21736 > > 00:17:58 verbose #21737 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:58 verbose #21738 > > inl between p_open p_close p_content : parser _ = fun input => 00:17:58 verbose #21739 > > match p_open input with 00:17:58 verbose #21740 > > | Ok (_, rest1) => 00:17:58 verbose #21741 > > match p_content rest1 with 00:17:58 verbose #21742 > > | Ok (result, rest2) => 00:17:58 verbose #21743 > > match p_close rest2 with 00:17:58 verbose #21744 > > | Ok (_, rest3) => Ok (result, rest3) 00:17:58 verbose #21745 > > | Error e => Error $'$"between / expected closing delimiter / e: 00:17:58 verbose #21746 > > %A{!e} / input: %A{!input} / rest1: %A{!rest1} / rest2: %A{!rest2}"' 00:17:58 verbose #21747 > > | Error _ => Error "between / expected content" 00:17:58 verbose #21748 > > | Error e => Error e 00:17:58 verbose #21749 > > 00:17:58 verbose #21750 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:58 verbose #21751 > > //// test 00:17:58 verbose #21752 > > 00:17:58 verbose #21753 > > "[[aaabb]]" 00:17:58 verbose #21754 > > |> parse (between (p_char '[[') (p_char ']]') (many1_chars (p_char 'a' <|> 00:17:58 verbose #21755 > > p_char 'b'))) 00:17:58 verbose #21756 > > |> resultm.get 00:17:58 verbose #21757 > > |> sm'.format_debug 00:17:58 verbose #21758 > > |> _assert_eq ( 00:17:58 verbose #21759 > > ("aaabb", "", { line_text = "[[aaabb]]" |> sm'.string_builder; position = { 00:17:58 verbose #21760 > > line = 1i32; col = 8i32 } }) 00:17:58 verbose #21761 > > |> sm'.format_debug 00:17:58 verbose #21762 > > ) 00:17:58 verbose #21763 > > 00:17:58 verbose #21764 > > "[[aaabb" 00:17:58 verbose #21765 > > |> parse (between (p_char '[[') (p_char ']]') (many1_chars (p_char 'a' <|> 00:17:58 verbose #21766 > > p_char 'b'))) 00:17:58 verbose #21767 > > |> resultm.unwrap_err 00:17:58 verbose #21768 > > |> sm'.format_debug 00:17:58 verbose #21769 > > |> _assert_eq "\"between / expected closing delimiter / e: \"parsing.p_char 00:17:58 verbose #21770 > > unexpected end of input / s: struct ([[aaabb, 1, 7)\" / input: struct 00:17:58 verbose #21771 > > (\"[[aaabb\", [[aaabb, 1, 1) / rest1: struct (\"aaabb\", [[aaabb, 1, 2) / rest2: 00:17:58 verbose #21772 > > struct (\"\", [[aaabb, 1, 7)\"" 00:17:59 verbose #21773 > > 00:17:59 verbose #21774 > > ╭─[ 593.73ms - stdout ]────────────────────────────────────────────────────────╮ 00:17:59 verbose #21775 > > │ __assert_eq / actual: "struct ("aaabb", "", [aaabb], 1, 8)" / expected: │ 00:17:59 verbose #21776 > > │ "struct ("aaabb", "", [aaabb], 1, 8)" │ 00:17:59 verbose #21777 > > │ __assert_eq / actual: ""between / expected closing delimiter / e: │ 00:17:59 verbose #21778 > > │ "parsing.p_char / unexpected end of input / s: struct ([aaabb, 1, 7)" / │ 00:17:59 verbose #21779 > > │ input: struct ("[aaabb", [aaabb, 1, 1) / rest1: struct ("aaabb", [aaabb, 1, │ 00:17:59 verbose #21780 > > │ 2) / rest2: struct ("", [aaabb, 1, 7)"" / expected: ""between / expected │ 00:17:59 verbose #21781 > > │ closing delimiter / e: "parsing.p_char / unexpected end of input / s: struct │ 00:17:59 verbose #21782 > > │ ([aaabb, 1, 7)" / input: struct ("[aaabb", [aaabb, 1, 1) / rest1: struct │ 00:17:59 verbose #21783 > > │ ("aaabb", [aaabb, 1, 2) / rest2: struct ("", [aaabb, 1, 7)"" │ 00:17:59 verbose #21784 > > │ │ 00:17:59 verbose #21785 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:59 verbose #21786 > > 00:17:59 verbose #21787 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:59 verbose #21788 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:59 verbose #21789 > > │ ### sep_by │ 00:17:59 verbose #21790 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:59 verbose #21791 > > 00:17:59 verbose #21792 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:59 verbose #21793 > > inl sep_by p sep : parser (list _) = fun input, s => 00:17:59 verbose #21794 > > let rec loop acc input s = 00:17:59 verbose #21795 > > match p (input, s) with 00:17:59 verbose #21796 > > | Error _ => Ok (acc |> listm.rev, input, s) 00:17:59 verbose #21797 > > | Ok (result, rest, s) => 00:17:59 verbose #21798 > > match sep (rest, s) with 00:17:59 verbose #21799 > > | Error _ => Ok ((result :: acc) |> listm.rev, rest, s) 00:17:59 verbose #21800 > > | Ok (_, rest, s) => loop (result :: acc) rest s 00:17:59 verbose #21801 > > loop [[]] input s 00:17:59 verbose #21802 > > 00:17:59 verbose #21803 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:59 verbose #21804 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:59 verbose #21805 > > │ ### span │ 00:17:59 verbose #21806 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:59 verbose #21807 > > 00:17:59 verbose #21808 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:59 verbose #21809 > > inl span pred str = 00:17:59 verbose #21810 > > let rec loop i = 00:17:59 verbose #21811 > > if i >= sm'.length str 00:17:59 verbose #21812 > > then i 00:17:59 verbose #21813 > > elif pred (str |> sm'.index i) 00:17:59 verbose #21814 > > then loop (i + 1) 00:17:59 verbose #21815 > > else i 00:17:59 verbose #21816 > > loop 0 00:17:59 verbose #21817 > > 00:17:59 verbose #21818 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:59 verbose #21819 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:59 verbose #21820 > > │ ### spaces1 │ 00:17:59 verbose #21821 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:59 verbose #21822 > > 00:17:59 verbose #21823 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:59 verbose #21824 > > inl spaces1 () : parser () = fun input, s => 00:17:59 verbose #21825 > > match input |> span fun c => c = ' ' with 00:17:59 verbose #21826 > > | 0i32 => Error "spaces1 / expected at least one space" 00:17:59 verbose #21827 > > | n => Ok ((), input |> sm'.range (am'.Start n) (am'.End id), s) 00:17:59 verbose #21828 > > 00:17:59 verbose #21829 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:59 verbose #21830 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:59 verbose #21831 > > │ ### spaces │ 00:17:59 verbose #21832 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:59 verbose #21833 > > 00:17:59 verbose #21834 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:59 verbose #21835 > > inl spaces () : parser () = fun input, s => 00:17:59 verbose #21836 > > input 00:17:59 verbose #21837 > > |> span fun c => c = ' ' 00:17:59 verbose #21838 > > |> fun (n : i32) => Ok ((), input |> sm'.range (am'.Start n) (am'.End id), 00:17:59 verbose #21839 > > s) 00:17:59 verbose #21840 > > 00:17:59 verbose #21841 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:59 verbose #21842 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:17:59 verbose #21843 > > │ ### p_digit │ 00:17:59 verbose #21844 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:17:59 verbose #21845 > > 00:17:59 verbose #21846 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:59 verbose #21847 > > inl p_digit () : parser char = fun input, s => 00:17:59 verbose #21848 > > match input |> sm'.index 0i32 with 00:17:59 verbose #21849 > > | ('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') as c => 00:17:59 verbose #21850 > > Ok (c, input |> sm'.range (am'.Start 1i32) (am'.End id), s) 00:17:59 verbose #21851 > > | c => Error $'$"p_digit / unexpected char: {!c}"' 00:17:59 verbose #21852 > > 00:17:59 verbose #21853 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:59 verbose #21854 > > //// test 00:17:59 verbose #21855 > > 00:17:59 verbose #21856 > > "1 2 3" 00:17:59 verbose #21857 > > |> parse (sep_by (p_digit ()) (spaces1 ())) 00:17:59 verbose #21858 > > |> resultm.get 00:17:59 verbose #21859 > > |> sm'.format_debug 00:17:59 verbose #21860 > > |> _assert_eq ( 00:17:59 verbose #21861 > > ([['1'; '2'; '3']], "", { line_text = "" |> sm'.string_builder; position = { 00:17:59 verbose #21862 > > col = 1i32; line = 1i32 } }) 00:17:59 verbose #21863 > > |> sm'.format_debug 00:17:59 verbose #21864 > > ) 00:18:00 verbose #21865 > > 00:18:00 verbose #21866 > > ╭─[ 295.65ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:00 verbose #21867 > > │ __assert_eq / actual: "struct (UH0_1 ('1', UH0_1 ('2', UH0_1 ('3', UH0_0))), │ 00:18:00 verbose #21868 > > │ "", , 1, 1)" / expected: "struct (UH0_1 ('1', UH0_1 ('2', UH0_1 ('3', │ 00:18:00 verbose #21869 > > │ UH0_0))), "", , 1, 1)" │ 00:18:00 verbose #21870 > > │ │ 00:18:00 verbose #21871 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:00 verbose #21872 > > 00:18:00 verbose #21873 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:00 verbose #21874 > > //// test 00:18:00 verbose #21875 > > 00:18:00 verbose #21876 > > "1 a 2" 00:18:00 verbose #21877 > > |> parse (sep_by (p_digit ()) (spaces1 ())) 00:18:00 verbose #21878 > > |> resultm.get 00:18:00 verbose #21879 > > |> sm'.format_debug 00:18:00 verbose #21880 > > |> _assert_eq ( 00:18:00 verbose #21881 > > ([['1']], "a 2", { line_text = "" |> sm'.string_builder; position = { col = 00:18:00 verbose #21882 > > 1i32; line = 1i32 } }) 00:18:00 verbose #21883 > > |> sm'.format_debug 00:18:00 verbose #21884 > > ) 00:18:00 verbose #21885 > > 00:18:00 verbose #21886 > > ╭─[ 279.78ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:00 verbose #21887 > > │ __assert_eq / actual: "struct (UH0_1 ('1', UH0_0), "a 2", , 1, 1)" / │ 00:18:00 verbose #21888 > > │ expected: "struct (UH0_1 ('1', UH0_0), "a 2", , 1, 1)" │ 00:18:00 verbose #21889 > > │ │ 00:18:00 verbose #21890 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:00 verbose #21891 > > 00:18:00 verbose #21892 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:00 verbose #21893 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:00 verbose #21894 > > │ ### opt │ 00:18:00 verbose #21895 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:00 verbose #21896 > > 00:18:00 verbose #21897 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:00 verbose #21898 > > inl opt p : parser (option _) = fun input, s => 00:18:00 verbose #21899 > > match p (input, s) with 00:18:00 verbose #21900 > > | Ok (result, rest, s) => Ok (Some result, rest, s) 00:18:00 verbose #21901 > > | Error _ => Ok (None, input, s) 00:18:00 verbose #21902 > > 00:18:00 verbose #21903 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:00 verbose #21904 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:00 verbose #21905 > > │ ### rest_of_line │ 00:18:00 verbose #21906 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:00 verbose #21907 > > 00:18:00 verbose #21908 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:00 verbose #21909 > > inl rest_of_line () : parser string = fun input, s => 00:18:00 verbose #21910 > > inl i : i32 = input |> span ((<>) '\n') 00:18:00 verbose #21911 > > Ok (input |> sm'.range (am'.Start i) (am'.End id), input |> sm'.range 00:18:00 verbose #21912 > > (am'.Start i) (am'.End id), s) 00:18:00 verbose #21913 > > 00:18:00 verbose #21914 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:00 verbose #21915 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:00 verbose #21916 > > │ ### eof │ 00:18:00 verbose #21917 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:00 verbose #21918 > > 00:18:00 verbose #21919 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:00 verbose #21920 > > inl eof () : parser () = fun input, s => 00:18:00 verbose #21921 > > if sm'.length input = 0i32 00:18:00 verbose #21922 > > then Ok ((), input, s) 00:18:00 verbose #21923 > > else Error $'$"parsing.eof / expected end of input / input: %A{!input}"' 00:18:01 verbose #21924 > 00:00:21 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 74369 } 00:18:01 verbose #21925 > 00:00:21 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:18:01 verbose #21926 > "nbconvert", 00:18:01 verbose #21927 > "/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.ipynb", 00:18:01 verbose #21928 > "--to", 00:18:01 verbose #21929 > "html", 00:18:01 verbose #21930 > "--HTMLExporter.theme=dark", 00:18:01 verbose #21931 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:01 verbose #21932 > 00:00:21 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.ipynb to html 00:18:01 verbose #21933 > 00:00:21 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:18:01 verbose #21934 > 00:00:21 verbose #7 ! validate(nb) 00:18:02 verbose #21935 > 00:00:22 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:18:02 verbose #21936 > 00:00:22 verbose #9 ! return _pygments_highlight( 00:18:02 verbose #21937 > 00:00:22 verbose #10 ! [NbConvertApp] Writing 479664 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.html 00:18:02 verbose #21938 > 00:00:23 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 } 00:18:02 verbose #21939 > 00:00:23 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 } 00:18:02 verbose #21940 > 00:00:23 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:18:02 verbose #21941 > "-c", 00:18:02 verbose #21942 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:18:02 verbose #21943 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:03 verbose #21944 > 00:00:23 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:18:03 verbose #21945 > 00:00:23 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:18:03 verbose #21946 > 00:00:23 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 75326 } 00:18:03 debug #21947 runtime.execute_with_options_async / { exit_code = 0; output_length = 81019 } 00:18:03 debug #28 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path parsing.dib --retries 3 00:18:03 debug #21948 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path threading.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:03 verbose #21949 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "threading.dib", "--retries", "3"])) } 00:18:03 verbose #21950 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:18:03 verbose #21951 > "repl", 00:18:03 verbose #21952 > "--exit-after-run", 00:18:03 verbose #21953 > "--run", 00:18:03 verbose #21954 > "/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib", 00:18:03 verbose #21955 > "--output-path", 00:18:03 verbose #21956 > "/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.ipynb", 00:18:03 verbose #21957 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:18:04 verbose #21958 > > 00:18:04 verbose #21959 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:04 verbose #21960 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:04 verbose #21961 > > │ # threading │ 00:18:04 verbose #21962 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:07 verbose #21963 > > 00:18:07 verbose #21964 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:07 verbose #21965 > > open rust 00:18:07 verbose #21966 > > open rust_operators 00:18:07 verbose #21967 > > 00:18:07 verbose #21968 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:07 verbose #21969 > > //// test 00:18:07 verbose #21970 > > 00:18:07 verbose #21971 > > open testing 00:18:07 verbose #21972 > > 00:18:07 verbose #21973 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:07 verbose #21974 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:07 verbose #21975 > > │ ## rust │ 00:18:07 verbose #21976 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:07 verbose #21977 > > 00:18:07 verbose #21978 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:07 verbose #21979 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:07 verbose #21980 > > │ ### sleep │ 00:18:07 verbose #21981 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:07 verbose #21982 > > 00:18:07 verbose #21983 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:07 verbose #21984 > > inl sleep (duration : date_time.duration) : () = 00:18:07 verbose #21985 > > inl duration = join duration 00:18:07 verbose #21986 > > !\($'"std::thread::sleep(!duration)"') 00:18:07 verbose #21987 > > 00:18:07 verbose #21988 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:07 verbose #21989 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:07 verbose #21990 > > │ ### join_handle │ 00:18:07 verbose #21991 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:07 verbose #21992 > > 00:18:07 verbose #21993 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:07 verbose #21994 > > nominal join_handle t = 00:18:07 verbose #21995 > > `( 00:18:07 verbose #21996 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:07 verbose #21997 > > Fable.Core.Emit(\"std::thread::JoinHandle<$0>\")>]]\n#endif\ntype 00:18:07 verbose #21998 > > std_thread_JoinHandle<'T> = class end" 00:18:07 verbose #21999 > > $'' : $'std_thread_JoinHandle<`t>' 00:18:07 verbose #22000 > > ) 00:18:07 verbose #22001 > > 00:18:07 verbose #22002 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:07 verbose #22003 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:07 verbose #22004 > > │ ### spawn │ 00:18:07 verbose #22005 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:07 verbose #22006 > > 00:18:07 verbose #22007 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:07 verbose #22008 > > inl spawn forall t. depth flag (x : () -> t) : join_handle t = 00:18:07 verbose #22009 > > if flag = 1u8 00:18:07 verbose #22010 > > then (!\($'"true; let __spawn = std::thread::spawn(move || { //"') : bool) 00:18:07 verbose #22011 > > |> ignore 00:18:07 verbose #22012 > > else (!\($'"true; let __spawn = std::thread::spawn(|| { //"') : bool) |> 00:18:07 verbose #22013 > > ignore 00:18:07 verbose #22014 > > 00:18:07 verbose #22015 > > let x' = x () 00:18:07 verbose #22016 > > inl x' = join x' 00:18:07 verbose #22017 > > 00:18:07 verbose #22018 > > x' |> rust.fix_closure depth 00:18:07 verbose #22019 > > 00:18:07 verbose #22020 > > !\($'"__spawn"') 00:18:08 verbose #22021 > > 00:18:08 verbose #22022 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:08 verbose #22023 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:08 verbose #22024 > > │ ### join' │ 00:18:08 verbose #22025 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:08 verbose #22026 > > 00:18:08 verbose #22027 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:08 verbose #22028 > > inl join' forall t. 00:18:08 verbose #22029 > > (x : join_handle t) 00:18:08 verbose #22030 > > : resultm.result' 00:18:08 verbose #22031 > > t 00:18:08 verbose #22032 > > ( 00:18:08 verbose #22033 > > rust.box ( 00:18:08 verbose #22034 > > rust.lifetime_ref 00:18:08 verbose #22035 > > rust.dyn' 00:18:08 verbose #22036 > > ( 00:18:08 verbose #22037 > > rust.lifetime_join 00:18:08 verbose #22038 > > rust.any 00:18:08 verbose #22039 > > ( 00:18:08 verbose #22040 > > rust.lifetime_ref 00:18:08 verbose #22041 > > rust.send 00:18:08 verbose #22042 > > rust.static_lifetime 00:18:08 verbose #22043 > > ) 00:18:08 verbose #22044 > > ) 00:18:08 verbose #22045 > > ) 00:18:08 verbose #22046 > > ) = 00:18:08 verbose #22047 > > !\\(x, $'"std::thread::JoinHandle::join($0)"') 00:18:08 verbose #22048 > > 00:18:08 verbose #22049 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:08 verbose #22050 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:08 verbose #22051 > > │ ### arc │ 00:18:08 verbose #22052 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:08 verbose #22053 > > 00:18:08 verbose #22054 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:08 verbose #22055 > > nominal arc t = 00:18:08 verbose #22056 > > `( 00:18:08 verbose #22057 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:08 verbose #22058 > > Fable.Core.Emit(\"std::sync::Arc<$0>\")>]]\n#endif\ntype std_sync_Arc<'T> = 00:18:08 verbose #22059 > > class end" 00:18:08 verbose #22060 > > $'' : $'std_sync_Arc<`t>' 00:18:08 verbose #22061 > > ) 00:18:08 verbose #22062 > > 00:18:08 verbose #22063 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:08 verbose #22064 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:08 verbose #22065 > > │ ### new_arc │ 00:18:08 verbose #22066 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:08 verbose #22067 > > 00:18:08 verbose #22068 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:08 verbose #22069 > > inl new_arc forall t. (x : t) : arc t = 00:18:08 verbose #22070 > > !\\(x, $'"std::sync::Arc::new($0)"') 00:18:08 verbose #22071 > > 00:18:08 verbose #22072 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:08 verbose #22073 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:08 verbose #22074 > > │ ### mutex │ 00:18:08 verbose #22075 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:08 verbose #22076 > > 00:18:08 verbose #22077 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:08 verbose #22078 > > nominal mutex t = 00:18:08 verbose #22079 > > `( 00:18:08 verbose #22080 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:08 verbose #22081 > > Fable.Core.Emit(\"std::sync::Mutex<$0>\")>]]\n#endif\ntype std_sync_Mutex<'T> = 00:18:08 verbose #22082 > > class end" 00:18:08 verbose #22083 > > $'' : $'std_sync_Mutex<`t>' 00:18:08 verbose #22084 > > ) 00:18:08 verbose #22085 > > 00:18:08 verbose #22086 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:08 verbose #22087 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:08 verbose #22088 > > │ ### new_mutex │ 00:18:08 verbose #22089 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:08 verbose #22090 > > 00:18:08 verbose #22091 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:08 verbose #22092 > > inl new_mutex forall t. (x : t) : mutex t = 00:18:08 verbose #22093 > > !\\(x, $'"std::sync::Mutex::new($0)"') 00:18:08 verbose #22094 > > 00:18:08 verbose #22095 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:08 verbose #22096 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:08 verbose #22097 > > │ ### rw_lock │ 00:18:08 verbose #22098 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:08 verbose #22099 > > 00:18:08 verbose #22100 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:08 verbose #22101 > > nominal rw_lock t = 00:18:08 verbose #22102 > > `( 00:18:08 verbose #22103 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:08 verbose #22104 > > Fable.Core.Emit(\"std::sync::RwLock<$0>\")>]]\n#endif\ntype std_sync_RwLock<'T> 00:18:08 verbose #22105 > > = class end" 00:18:08 verbose #22106 > > $'' : $'std_sync_RwLock<`t>' 00:18:08 verbose #22107 > > ) 00:18:08 verbose #22108 > > 00:18:08 verbose #22109 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:08 verbose #22110 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:08 verbose #22111 > > │ ### new_rw_lock │ 00:18:08 verbose #22112 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:08 verbose #22113 > > 00:18:08 verbose #22114 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:08 verbose #22115 > > inl new_rw_lock forall t. (x : t) : rw_lock t = 00:18:08 verbose #22116 > > !\\(x, $'"std::sync::RwLock::new($0)"') 00:18:08 verbose #22117 > > 00:18:08 verbose #22118 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:08 verbose #22119 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:08 verbose #22120 > > │ ### new_arc_mutex │ 00:18:08 verbose #22121 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:08 verbose #22122 > > 00:18:08 verbose #22123 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:08 verbose #22124 > > inl new_arc_mutex forall t. (x : t) : arc (mutex t) = 00:18:08 verbose #22125 > > x |> new_mutex |> new_arc 00:18:08 verbose #22126 > > 00:18:08 verbose #22127 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:08 verbose #22128 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:08 verbose #22129 > > │ ### new_arc_rw_lock │ 00:18:08 verbose #22130 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:08 verbose #22131 > > 00:18:08 verbose #22132 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:08 verbose #22133 > > inl new_arc_rw_lock forall t. (x : t) : arc (rw_lock t) = 00:18:08 verbose #22134 > > x |> new_rw_lock |> new_arc 00:18:08 verbose #22135 > > 00:18:08 verbose #22136 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:08 verbose #22137 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:08 verbose #22138 > > │ ### arc_clone │ 00:18:08 verbose #22139 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:08 verbose #22140 > > 00:18:08 verbose #22141 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:08 verbose #22142 > > inl arc_clone forall t. (x : arc t) : arc t = 00:18:08 verbose #22143 > > inl x = join x 00:18:08 verbose #22144 > > !\($'"std::sync::Arc::clone(&!x)"') 00:18:09 verbose #22145 > > 00:18:09 verbose #22146 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:09 verbose #22147 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:09 verbose #22148 > > │ ### arc_ptr_eq │ 00:18:09 verbose #22149 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:09 verbose #22150 > > 00:18:09 verbose #22151 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:09 verbose #22152 > > inl arc_ptr_eq forall t. (a : rust.ref (arc t)) (b : rust.ref (arc t)) : bool = 00:18:09 verbose #22153 > > !\\((a, b), $'"std::sync::Arc::ptr_eq($0, $1)"') 00:18:09 verbose #22154 > > 00:18:09 verbose #22155 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:09 verbose #22156 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:09 verbose #22157 > > │ ### arc_try_unwrap │ 00:18:09 verbose #22158 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:09 verbose #22159 > > 00:18:09 verbose #22160 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:09 verbose #22161 > > inl arc_try_unwrap forall t. (x : arc t) : resultm.result' t (arc t) = 00:18:09 verbose #22162 > > !\\(x, $'"std::sync::Arc::try_unwrap($0)"') 00:18:09 verbose #22163 > > 00:18:09 verbose #22164 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:09 verbose #22165 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:09 verbose #22166 > > │ ### arc_into_raw │ 00:18:09 verbose #22167 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:09 verbose #22168 > > 00:18:09 verbose #22169 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:09 verbose #22170 > > inl arc_into_raw forall t. (x : arc t) : rust.ptr t = 00:18:09 verbose #22171 > > !\\(x, $'"std::sync::Arc::into_raw($0)"') 00:18:09 verbose #22172 > > 00:18:09 verbose #22173 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:09 verbose #22174 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:09 verbose #22175 > > │ ### arc_from_raw │ 00:18:09 verbose #22176 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:09 verbose #22177 > > 00:18:09 verbose #22178 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:09 verbose #22179 > > inl arc_from_raw forall t. (x : rust.ptr t) : arc t = 00:18:09 verbose #22180 > > !\\(x, $'"std::sync::Arc::from_raw($0)"') 00:18:09 verbose #22181 > > 00:18:09 verbose #22182 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:09 verbose #22183 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:09 verbose #22184 > > │ ### partial_eq_wrapper_arc_eq │ 00:18:09 verbose #22185 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:09 verbose #22186 > > 00:18:09 verbose #22187 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:09 verbose #22188 > > inl partial_eq_wrapper_arc_eq forall t. 00:18:09 verbose #22189 > > (self : rust.ref (rust.partial_eq_wrapper (arc t))) 00:18:09 verbose #22190 > > (other : rust.ref (rust.partial_eq_wrapper (arc t))) 00:18:09 verbose #22191 > > = 00:18:09 verbose #22192 > > self 00:18:09 verbose #22193 > > |> rust.unwrap_0_ref 00:18:09 verbose #22194 > > |> arc_ptr_eq ( 00:18:09 verbose #22195 > > other 00:18:09 verbose #22196 > > |> rust.unwrap_0_ref 00:18:09 verbose #22197 > > ) 00:18:09 verbose #22198 > > 00:18:09 verbose #22199 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:09 verbose #22200 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:09 verbose #22201 > > │ ### new_partial_eq_wrapper_arc │ 00:18:09 verbose #22202 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:09 verbose #22203 > > 00:18:09 verbose #22204 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:09 verbose #22205 > > inl new_partial_eq_wrapper_arc forall t. (x : arc t) : rust.partial_eq_wrapper 00:18:09 verbose #22206 > > (arc t) = 00:18:09 verbose #22207 > > x |> rust.new_partial_eq_wrapper partial_eq_wrapper_arc_eq 00:18:09 verbose #22208 > > 00:18:09 verbose #22209 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:09 verbose #22210 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:09 verbose #22211 > > │ ### mutex_guard │ 00:18:09 verbose #22212 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:09 verbose #22213 > > 00:18:09 verbose #22214 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:09 verbose #22215 > > nominal mutex_guard t = 00:18:09 verbose #22216 > > `( 00:18:09 verbose #22217 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:09 verbose #22218 > > Fable.Core.Emit(\"std::sync::MutexGuard<$0>\")>]]\n#endif\ntype 00:18:09 verbose #22219 > > std_sync_MutexGuard<'T> = class end" 00:18:09 verbose #22220 > > $'' : $'std_sync_MutexGuard<`t>' 00:18:09 verbose #22221 > > ) 00:18:09 verbose #22222 > > 00:18:09 verbose #22223 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:09 verbose #22224 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:09 verbose #22225 > > │ ### rw_lock_read_guard │ 00:18:09 verbose #22226 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:09 verbose #22227 > > 00:18:09 verbose #22228 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:09 verbose #22229 > > nominal rw_lock_read_guard t = 00:18:09 verbose #22230 > > `( 00:18:09 verbose #22231 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:09 verbose #22232 > > Fable.Core.Emit(\"std::sync::RwLockReadGuard<$0>\")>]]\n#endif\ntype 00:18:09 verbose #22233 > > std_sync_RwLockReadGuard<'T> = class end" 00:18:09 verbose #22234 > > $'' : $'std_sync_RwLockReadGuard<`t>' 00:18:09 verbose #22235 > > ) 00:18:09 verbose #22236 > > 00:18:09 verbose #22237 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:09 verbose #22238 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:09 verbose #22239 > > │ ### rw_lock_write_guard │ 00:18:09 verbose #22240 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:09 verbose #22241 > > 00:18:09 verbose #22242 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:09 verbose #22243 > > nominal rw_lock_write_guard t = 00:18:09 verbose #22244 > > `( 00:18:09 verbose #22245 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:09 verbose #22246 > > Fable.Core.Emit(\"std::sync::RwLockWriteGuard<$0>\")>]]\n#endif\ntype 00:18:09 verbose #22247 > > std_sync_RwLockWriteGuard<'T> = class end" 00:18:09 verbose #22248 > > $'' : $'std_sync_RwLockWriteGuard<`t>' 00:18:09 verbose #22249 > > ) 00:18:10 verbose #22250 > > 00:18:10 verbose #22251 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:10 verbose #22252 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:10 verbose #22253 > > │ ### poison_error │ 00:18:10 verbose #22254 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:10 verbose #22255 > > 00:18:10 verbose #22256 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:10 verbose #22257 > > nominal poison_error t = 00:18:10 verbose #22258 > > `( 00:18:10 verbose #22259 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:10 verbose #22260 > > Fable.Core.Emit(\"std::sync::PoisonError<$0>\")>]]\n#endif\ntype 00:18:10 verbose #22261 > > std_sync_PoisonError<'T> = class end" 00:18:10 verbose #22262 > > $'' : $'std_sync_PoisonError<`t>' 00:18:10 verbose #22263 > > ) 00:18:10 verbose #22264 > > 00:18:10 verbose #22265 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:10 verbose #22266 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:10 verbose #22267 > > │ ### try_lock_error │ 00:18:10 verbose #22268 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:10 verbose #22269 > > 00:18:10 verbose #22270 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:10 verbose #22271 > > nominal try_lock_error t = 00:18:10 verbose #22272 > > `( 00:18:10 verbose #22273 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:10 verbose #22274 > > Fable.Core.Emit(\"std::sync::TryLockError<$0>\")>]]\n#endif\ntype 00:18:10 verbose #22275 > > std_sync_TryLockError<'T> = class end" 00:18:10 verbose #22276 > > $'' : $'std_sync_TryLockError<`t>' 00:18:10 verbose #22277 > > ) 00:18:10 verbose #22278 > > 00:18:10 verbose #22279 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:10 verbose #22280 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:10 verbose #22281 > > │ ### arc_mutex_lock │ 00:18:10 verbose #22282 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:10 verbose #22283 > > 00:18:10 verbose #22284 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:10 verbose #22285 > > inl arc_mutex_lock forall t. (x : arc (mutex t)) : resultm.result' (mutex_guard 00:18:10 verbose #22286 > > t) (poison_error (mutex_guard t)) = 00:18:10 verbose #22287 > > inl x = x |> rust.emit 00:18:10 verbose #22288 > > !\($'"!x.lock()"') 00:18:10 verbose #22289 > > 00:18:10 verbose #22290 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:10 verbose #22291 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:10 verbose #22292 > > │ ### arc_rw_lock_read │ 00:18:10 verbose #22293 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:10 verbose #22294 > > 00:18:10 verbose #22295 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:10 verbose #22296 > > inl arc_rw_lock_read forall t. (x : arc (rw_lock t)) : resultm.result' 00:18:10 verbose #22297 > > (rw_lock_read_guard t) (poison_error (rw_lock_read_guard t)) = 00:18:10 verbose #22298 > > inl x = x |> rust.emit 00:18:10 verbose #22299 > > !\($'"!x.read()"') 00:18:10 verbose #22300 > > 00:18:10 verbose #22301 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:10 verbose #22302 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:10 verbose #22303 > > │ ### arc_rw_lock_write │ 00:18:10 verbose #22304 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:10 verbose #22305 > > 00:18:10 verbose #22306 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:10 verbose #22307 > > inl arc_rw_lock_write forall t. (x : arc (rw_lock t)) : resultm.result' 00:18:10 verbose #22308 > > (rw_lock_write_guard t) (poison_error (rw_lock_write_guard t)) = 00:18:10 verbose #22309 > > inl x = x |> rust.emit 00:18:10 verbose #22310 > > !\($'"!x.write()"') 00:18:10 verbose #22311 > > 00:18:10 verbose #22312 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:10 verbose #22313 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:10 verbose #22314 > > │ ### arc_rw_lock_try_read │ 00:18:10 verbose #22315 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:10 verbose #22316 > > 00:18:10 verbose #22317 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:10 verbose #22318 > > inl arc_rw_lock_try_read forall t. (x : arc (rw_lock t)) : resultm.result' 00:18:10 verbose #22319 > > (rw_lock_read_guard t) (try_lock_error (rw_lock_read_guard t)) = 00:18:10 verbose #22320 > > inl x = x |> rust.emit 00:18:10 verbose #22321 > > !\($'"!x.try_read()"') 00:18:10 verbose #22322 > > 00:18:10 verbose #22323 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:10 verbose #22324 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:10 verbose #22325 > > │ ### arc_rw_lock_try_write │ 00:18:10 verbose #22326 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:10 verbose #22327 > > 00:18:10 verbose #22328 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:10 verbose #22329 > > inl arc_rw_lock_try_write forall t. (x : arc (rw_lock t)) : resultm.result' 00:18:10 verbose #22330 > > (rw_lock_write_guard t) (try_lock_error (rw_lock_write_guard t)) = 00:18:10 verbose #22331 > > inl x = x |> rust.emit 00:18:10 verbose #22332 > > !\($'"!x.try_write()"') 00:18:10 verbose #22333 > > 00:18:10 verbose #22334 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:10 verbose #22335 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:10 verbose #22336 > > │ ### mutex_guard_ref │ 00:18:10 verbose #22337 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:10 verbose #22338 > > 00:18:10 verbose #22339 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:10 verbose #22340 > > inl mutex_guard_ref forall t. (x : mutex_guard t) : rust.ref t = 00:18:10 verbose #22341 > > !\\(x, $'"&$0"') 00:18:10 verbose #22342 > > 00:18:10 verbose #22343 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:10 verbose #22344 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:10 verbose #22345 > > │ ### rw_lock_read_guard_ref │ 00:18:10 verbose #22346 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:10 verbose #22347 > > 00:18:10 verbose #22348 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:10 verbose #22349 > > inl rw_lock_read_guard_ref forall t. (x : rw_lock_read_guard t) : rust.ref t = 00:18:10 verbose #22350 > > !\\(x, $'"&$0"') 00:18:10 verbose #22351 > > 00:18:10 verbose #22352 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:10 verbose #22353 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:10 verbose #22354 > > │ ### rw_lock_write_guard_ref │ 00:18:10 verbose #22355 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:10 verbose #22356 > > 00:18:10 verbose #22357 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:11 verbose #22358 > > inl rw_lock_write_guard_ref forall t. (x : rw_lock_write_guard t) : rust.ref t = 00:18:11 verbose #22359 > > !\\(x, $'"&$0"') 00:18:11 verbose #22360 > > 00:18:11 verbose #22361 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:11 verbose #22362 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:11 verbose #22363 > > │ ### mutex_guard_ref_mut │ 00:18:11 verbose #22364 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:11 verbose #22365 > > 00:18:11 verbose #22366 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:11 verbose #22367 > > inl mutex_guard_ref_mut forall t. (x : mutex_guard t) : rust.ref (rust.mut' t) = 00:18:11 verbose #22368 > > (!\($'"true; let mut !x = !x"') : bool) |> ignore 00:18:11 verbose #22369 > > !\\(x, $'"&mut $0"') 00:18:11 verbose #22370 > > 00:18:11 verbose #22371 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:11 verbose #22372 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:11 verbose #22373 > > │ ### mutex_guard_as_mut │ 00:18:11 verbose #22374 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:11 verbose #22375 > > 00:18:11 verbose #22376 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:11 verbose #22377 > > inl mutex_guard_as_mut forall (t : * -> *) u. (x : mutex_guard (t u)) : t 00:18:11 verbose #22378 > > (rust.ref (rust.mut' u)) = 00:18:11 verbose #22379 > > (!\($'"true; let mut !x = !x"') : bool) |> ignore 00:18:11 verbose #22380 > > !\\(x, $'"$0.as_mut()"') 00:18:11 verbose #22381 > > 00:18:11 verbose #22382 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:11 verbose #22383 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:11 verbose #22384 > > │ ### channel_receiver │ 00:18:11 verbose #22385 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:11 verbose #22386 > > 00:18:11 verbose #22387 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:11 verbose #22388 > > nominal channel_receiver t = 00:18:11 verbose #22389 > > `( 00:18:11 verbose #22390 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:11 verbose #22391 > > Fable.Core.Emit(\"std::sync::mpsc::Receiver<$0>\")>]]\n#endif\ntype 00:18:11 verbose #22392 > > std_sync_mpsc_Receiver<'T> = class end" 00:18:11 verbose #22393 > > $'' : $'std_sync_mpsc_Receiver<`t>' 00:18:11 verbose #22394 > > ) 00:18:11 verbose #22395 > > 00:18:11 verbose #22396 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:11 verbose #22397 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:11 verbose #22398 > > │ ### channel_sender │ 00:18:11 verbose #22399 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:11 verbose #22400 > > 00:18:11 verbose #22401 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:11 verbose #22402 > > nominal channel_sender t = 00:18:11 verbose #22403 > > `( 00:18:11 verbose #22404 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:11 verbose #22405 > > Fable.Core.Emit(\"std::sync::mpsc::Sender<$0>\")>]]\n#endif\ntype 00:18:11 verbose #22406 > > std_sync_mpsc_Sender<'T> = class end" 00:18:11 verbose #22407 > > $'' : $'std_sync_mpsc_Sender<`t>' 00:18:11 verbose #22408 > > ) 00:18:11 verbose #22409 > > 00:18:11 verbose #22410 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:11 verbose #22411 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:11 verbose #22412 > > │ ### new_channel │ 00:18:11 verbose #22413 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:11 verbose #22414 > > 00:18:11 verbose #22415 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:11 verbose #22416 > > inl new_channel () : channel_sender sm'.std_string * arc (channel_receiver 00:18:11 verbose #22417 > > sm'.std_string) = 00:18:11 verbose #22418 > > !\($'"{ let (sender, receiver) = std::sync::mpsc::channel(); (sender, 00:18:11 verbose #22419 > > std::sync::Arc::new(receiver)) }"') 00:18:11 verbose #22420 > > 00:18:11 verbose #22421 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:11 verbose #22422 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:11 verbose #22423 > > │ ### send_error │ 00:18:11 verbose #22424 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:11 verbose #22425 > > 00:18:11 verbose #22426 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:11 verbose #22427 > > nominal send_error t = 00:18:11 verbose #22428 > > `( 00:18:11 verbose #22429 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:18:11 verbose #22430 > > Fable.Core.Emit(\"std::sync::mpsc::SendError<$0>\")>]]\n#endif\ntype 00:18:11 verbose #22431 > > std_sync_mpsc_SendError<'T> = class end" 00:18:11 verbose #22432 > > $'' : $'std_sync_mpsc_SendError<`t>' 00:18:11 verbose #22433 > > ) 00:18:11 verbose #22434 > > 00:18:11 verbose #22435 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:11 verbose #22436 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:11 verbose #22437 > > │ ### channel_send │ 00:18:11 verbose #22438 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:11 verbose #22439 > > 00:18:11 verbose #22440 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:11 verbose #22441 > > inl channel_send forall t. (line : t) (sender : rust.ref (channel_sender t)) : 00:18:11 verbose #22442 > > resultm.result' () (send_error sm'.std_string) = 00:18:11 verbose #22443 > > !\\((sender, line), $'"$0.send($1)"') 00:18:11 verbose #22444 > > 00:18:11 verbose #22445 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:11 verbose #22446 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:11 verbose #22447 > > │ ## fsharp │ 00:18:11 verbose #22448 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:11 verbose #22449 > > 00:18:11 verbose #22450 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:11 verbose #22451 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:11 verbose #22452 > > │ ### sleep' │ 00:18:11 verbose #22453 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:11 verbose #22454 > > 00:18:11 verbose #22455 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:11 verbose #22456 > > inl sleep' (n : i32) : () = 00:18:11 verbose #22457 > > run_target function 00:18:11 verbose #22458 > > | Fsharp (Native) => fun () => $'System.Threading.Thread.Sleep' n 00:18:11 verbose #22459 > > | _ => fun () => () 00:18:11 verbose #22460 > > 00:18:11 verbose #22461 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:11 verbose #22462 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:11 verbose #22463 > > │ ### thread │ 00:18:11 verbose #22464 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:11 verbose #22465 > > 00:18:11 verbose #22466 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:11 verbose #22467 > > nominal thread = $'System.Threading.Thread' 00:18:11 verbose #22468 > > 00:18:11 verbose #22469 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:11 verbose #22470 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:11 verbose #22471 > > │ ### cancellation_token │ 00:18:11 verbose #22472 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:11 verbose #22473 > > 00:18:11 verbose #22474 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:11 verbose #22475 > > nominal cancellation_token = $'System.Threading.CancellationToken' 00:18:11 verbose #22476 > > 00:18:11 verbose #22477 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:11 verbose #22478 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:11 verbose #22479 > > │ ### cancellation_token_source │ 00:18:11 verbose #22480 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:11 verbose #22481 > > 00:18:11 verbose #22482 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:11 verbose #22483 > > nominal cancellation_token_source = $'System.Threading.CancellationTokenSource' 00:18:12 verbose #22484 > > 00:18:12 verbose #22485 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:12 verbose #22486 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:12 verbose #22487 > > │ ### cancellation_token_registration │ 00:18:12 verbose #22488 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:12 verbose #22489 > > 00:18:12 verbose #22490 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:12 verbose #22491 > > nominal cancellation_token_registration = 00:18:12 verbose #22492 > > $'System.Threading.CancellationTokenRegistration' 00:18:12 verbose #22493 > > 00:18:12 verbose #22494 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:12 verbose #22495 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:12 verbose #22496 > > │ ### cancellation_source_token │ 00:18:12 verbose #22497 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:12 verbose #22498 > > 00:18:12 verbose #22499 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:12 verbose #22500 > > inl cancellation_source_token (x : cancellation_token_source) : 00:18:12 verbose #22501 > > cancellation_token = 00:18:12 verbose #22502 > > $'!x.Token' 00:18:12 verbose #22503 > > 00:18:12 verbose #22504 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:12 verbose #22505 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:12 verbose #22506 > > │ ### cancellation_source_cancel │ 00:18:12 verbose #22507 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:12 verbose #22508 > > 00:18:12 verbose #22509 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:12 verbose #22510 > > inl cancellation_source_cancel (x : cancellation_token_source) : () = 00:18:12 verbose #22511 > > run_target function 00:18:12 verbose #22512 > > | Fsharp (Native) => fun () => 00:18:12 verbose #22513 > > $'!x.Cancel' () 00:18:12 verbose #22514 > > | _ => fun () => null () 00:18:12 verbose #22515 > > 00:18:12 verbose #22516 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:12 verbose #22517 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:12 verbose #22518 > > │ ### create_linked_token_source │ 00:18:12 verbose #22519 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:12 verbose #22520 > > 00:18:12 verbose #22521 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:12 verbose #22522 > > inl create_linked_token_source (x : array_base cancellation_token) : 00:18:12 verbose #22523 > > cancellation_token_source = 00:18:12 verbose #22524 > > x |> $'System.Threading.CancellationTokenSource.CreateLinkedTokenSource' 00:18:12 verbose #22525 > > 00:18:12 verbose #22526 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:12 verbose #22527 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:12 verbose #22528 > > │ ### concurrent_stack │ 00:18:12 verbose #22529 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:12 verbose #22530 > > 00:18:12 verbose #22531 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:12 verbose #22532 > > nominal concurrent_stack t = 00:18:12 verbose #22533 > > $'System.Collections.Concurrent.ConcurrentStack<`t>' 00:18:12 verbose #22534 > > 00:18:12 verbose #22535 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:12 verbose #22536 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:12 verbose #22537 > > │ ### concurrent_stack_push │ 00:18:12 verbose #22538 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:12 verbose #22539 > > 00:18:12 verbose #22540 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:12 verbose #22541 > > inl concurrent_stack_push forall t. (item : t) (stack : concurrent_stack t) : () 00:18:12 verbose #22542 > > = 00:18:12 verbose #22543 > > $'!stack.Push' item 00:18:12 verbose #22544 > > 00:18:12 verbose #22545 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:12 verbose #22546 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:12 verbose #22547 > > │ ### token_none │ 00:18:12 verbose #22548 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:12 verbose #22549 > > 00:18:12 verbose #22550 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:12 verbose #22551 > > inl token_none () : cancellation_token = 00:18:12 verbose #22552 > > $'`cancellation_token.None' 00:18:12 verbose #22553 > > 00:18:12 verbose #22554 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:12 verbose #22555 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:12 verbose #22556 > > │ ### new_concurrent_stack │ 00:18:12 verbose #22557 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:12 verbose #22558 > > 00:18:12 verbose #22559 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:12 verbose #22560 > > inl new_concurrent_stack forall t. () : concurrent_stack t = 00:18:12 verbose #22561 > > $'System.Collections.Concurrent.ConcurrentStack<`t>' () 00:18:12 verbose #22562 > > 00:18:12 verbose #22563 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:12 verbose #22564 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:12 verbose #22565 > > │ ### token_register │ 00:18:12 verbose #22566 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:12 verbose #22567 > > 00:18:12 verbose #22568 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:12 verbose #22569 > > inl token_register (fn : () -> ()) (ct : cancellation_token) : 00:18:12 verbose #22570 > > cancellation_token_registration = 00:18:12 verbose #22571 > > fn |> $'!ct.Register' 00:18:12 verbose #22572 > > 00:18:12 verbose #22573 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:12 verbose #22574 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:12 verbose #22575 > > │ ### new_cancellation_token_source │ 00:18:12 verbose #22576 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:12 verbose #22577 > > 00:18:12 verbose #22578 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:12 verbose #22579 > > inl new_cancellation_token_source () : cancellation_token_source = 00:18:12 verbose #22580 > > $'new `cancellation_token_source ()' 00:18:13 verbose #22581 > > 00:18:13 verbose #22582 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:13 verbose #22583 > > inl token_cancellation_requested (ct : cancellation_token) : bool = 00:18:13 verbose #22584 > > $'!ct.IsCancellationRequested' 00:18:13 verbose #22585 > > 00:18:13 verbose #22586 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:13 verbose #22587 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:13 verbose #22588 > > │ ### new_disposable_token │ 00:18:13 verbose #22589 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:13 verbose #22590 > > 00:18:13 verbose #22591 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:13 verbose #22592 > > inl new_disposable_token (merge_token : optionm'.option' cancellation_token) = 00:18:13 verbose #22593 > > run_target function 00:18:13 verbose #22594 > > | Fsharp (Native) => fun () => 00:18:13 verbose #22595 > > inl cts = new_cancellation_token_source () 00:18:13 verbose #22596 > > inl cts = 00:18:13 verbose #22597 > > match merge_token |> optionm'.unbox with 00:18:13 verbose #22598 > > | None => cts 00:18:13 verbose #22599 > > | Some merge_token => 00:18:13 verbose #22600 > > create_linked_token_source ;[[ cts |> 00:18:13 verbose #22601 > > cancellation_source_token; merge_token ]] 00:18:13 verbose #22602 > > inl disposable : _ () = new_disposable fun () => 00:18:13 verbose #22603 > > cts |> cancellation_source_cancel 00:18:13 verbose #22604 > > cts |> cancellation_source_token, disposable 00:18:13 verbose #22605 > > | _ => fun () => null () 00:18:13 verbose #22606 > > 00:18:13 verbose #22607 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:13 verbose #22608 > > //// test 00:18:13 verbose #22609 > > 00:18:13 verbose #22610 > > inl run fn = 00:18:13 verbose #22611 > > inl token, disposable = new_disposable_token (None |> optionm'.box) 00:18:13 verbose #22612 > > disposable |> use |> ignore 00:18:13 verbose #22613 > > fn token 00:18:13 verbose #22614 > > fun () => 00:18:13 verbose #22615 > > fn token 00:18:13 verbose #22616 > > |> async.new_async 00:18:13 verbose #22617 > > |> async.start 00:18:13 verbose #22618 > > 00:18:13 verbose #22619 > > fun () => 00:18:13 verbose #22620 > > inl counter = mut 0i32 00:18:13 verbose #22621 > > 00:18:13 verbose #22622 > > inl fn (token : cancellation_token) = 00:18:13 verbose #22623 > > counter <- *counter + (if token |> token_cancellation_requested then 10 00:18:13 verbose #22624 > > else 1) 00:18:13 verbose #22625 > > 00:18:13 verbose #22626 > > join run fn 00:18:13 verbose #22627 > > async.sleep 10 |> async.do 00:18:13 verbose #22628 > > return *counter 00:18:13 verbose #22629 > > |> async.new_async_unit 00:18:13 verbose #22630 > > |> async.run_synchronously 00:18:13 verbose #22631 > > |> _assert_eq 11i32 00:18:14 verbose #22632 > > 00:18:14 verbose #22633 > > ╭─[ 1.25s - stdout ]───────────────────────────────────────────────────────────╮ 00:18:14 verbose #22634 > > │ __assert_eq / actual: 11 / expected: 11 │ 00:18:14 verbose #22635 > > │ │ 00:18:14 verbose #22636 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:14 verbose #22637 > > 00:18:14 verbose #22638 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:14 verbose #22639 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:14 verbose #22640 > > │ ## main │ 00:18:14 verbose #22641 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:14 verbose #22642 > > 00:18:14 verbose #22643 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:14 verbose #22644 > > inl main () = 00:18:14 verbose #22645 > > $'let new_disposable_token x = !new_disposable_token x' : () 00:18:14 verbose #22646 > 00:00:11 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 39560 } 00:18:14 verbose #22647 > 00:00:11 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:18:14 verbose #22648 > "nbconvert", 00:18:14 verbose #22649 > "/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.ipynb", 00:18:14 verbose #22650 > "--to", 00:18:14 verbose #22651 > "html", 00:18:14 verbose #22652 > "--HTMLExporter.theme=dark", 00:18:14 verbose #22653 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:15 verbose #22654 > 00:00:12 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.ipynb to html 00:18:15 verbose #22655 > 00:00:12 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:18:15 verbose #22656 > 00:00:12 verbose #7 ! validate(nb) 00:18:15 verbose #22657 > 00:00:12 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:18:15 verbose #22658 > 00:00:12 verbose #9 ! return _pygments_highlight( 00:18:16 verbose #22659 > 00:00:12 verbose #10 ! [NbConvertApp] Writing 378156 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.html 00:18:16 verbose #22660 > 00:00:12 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 } 00:18:16 verbose #22661 > 00:00:12 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 } 00:18:16 verbose #22662 > 00:00:12 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:18:16 verbose #22663 > "-c", 00:18:16 verbose #22664 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:18:16 verbose #22665 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:16 verbose #22666 > 00:00:13 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:18:16 verbose #22667 > 00:00:13 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:18:16 verbose #22668 > 00:00:13 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 40521 } 00:18:16 debug #22669 runtime.execute_with_options_async / { exit_code = 0; output_length = 44768 } 00:18:16 debug #29 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path threading.dib --retries 3 00:18:16 debug #22670 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path benchmark.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:16 verbose #22671 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "benchmark.dib", "--retries", "3"])) } 00:18:16 verbose #22672 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:18:16 verbose #22673 > "repl", 00:18:16 verbose #22674 > "--exit-after-run", 00:18:16 verbose #22675 > "--run", 00:18:16 verbose #22676 > "/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib", 00:18:16 verbose #22677 > "--output-path", 00:18:16 verbose #22678 > "/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.ipynb", 00:18:16 verbose #22679 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:18:17 verbose #22680 > > 00:18:17 verbose #22681 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:18 verbose #22682 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:18 verbose #22683 > > │ ## benchmark │ 00:18:18 verbose #22684 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:20 verbose #22685 > > 00:18:20 verbose #22686 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:20 verbose #22687 > > //// test 00:18:20 verbose #22688 > > 00:18:20 verbose #22689 > > open testing 00:18:20 verbose #22690 > > 00:18:20 verbose #22691 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:20 verbose #22692 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:20 verbose #22693 > > │ ## fsharp │ 00:18:20 verbose #22694 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:20 verbose #22695 > > 00:18:20 verbose #22696 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:20 verbose #22697 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:20 verbose #22698 > > │ ### test_case_result │ 00:18:20 verbose #22699 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:20 verbose #22700 > > 00:18:20 verbose #22701 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:20 verbose #22702 > > type test_case_result = 00:18:20 verbose #22703 > > { 00:18:20 verbose #22704 > > input : string 00:18:20 verbose #22705 > > expected : string 00:18:20 verbose #22706 > > result : string 00:18:20 verbose #22707 > > time_list : array_base i64 00:18:20 verbose #22708 > > } 00:18:21 verbose #22709 > > 00:18:21 verbose #22710 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:21 verbose #22711 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:21 verbose #22712 > > │ ### run' │ 00:18:21 verbose #22713 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:21 verbose #22714 > > 00:18:21 verbose #22715 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:21 verbose #22716 > > inl run' forall t. count (fn : () -> t) = 00:18:21 verbose #22717 > > runtime.gc_collect () 00:18:21 verbose #22718 > > inl stopwatch = date_time.stopwatch () 00:18:21 verbose #22719 > > stopwatch |> date_time.stopwatch_start 00:18:21 verbose #22720 > > inl time1 = stopwatch |> date_time.stopwatch_elapsed_milliseconds 00:18:21 verbose #22721 > > inl result : t = 00:18:21 verbose #22722 > > am'.init_series 0 count 1i32 00:18:21 verbose #22723 > > |> fun x => a x : _ int _ 00:18:21 verbose #22724 > > |> am'.parallel_map fun _n => fn () 00:18:21 verbose #22725 > > |> am'.last 00:18:21 verbose #22726 > > inl time2 = (stopwatch |> date_time.stopwatch_elapsed_milliseconds) - time1 00:18:21 verbose #22727 > > result, time2 00:18:21 verbose #22728 > > 00:18:21 verbose #22729 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:21 verbose #22730 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:21 verbose #22731 > > │ ### run │ 00:18:21 verbose #22732 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:21 verbose #22733 > > 00:18:21 verbose #22734 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:21 verbose #22735 > > inl run forall input expected. 00:18:21 verbose #22736 > > count 00:18:21 verbose #22737 > > (solutions : list (string * (input -> expected))) 00:18:21 verbose #22738 > > ((input, expected) : (input * expected)) 00:18:21 verbose #22739 > > : test_case_result 00:18:21 verbose #22740 > > = 00:18:21 verbose #22741 > > inl input_str = input |> sm'.format_debug 00:18:21 verbose #22742 > > 00:18:21 verbose #22743 > > console.write_line "" 00:18:21 verbose #22744 > > trace Verbose 00:18:21 verbose #22745 > > fun () => $'$"benchmark.run"' 00:18:21 verbose #22746 > > fun () => { input_str = input_str |> sm'.ellipsis_end 40 } 00:18:21 verbose #22747 > > 00:18:21 verbose #22748 > > inl results_with_time : array_base _ = 00:18:21 verbose #22749 > > solutions 00:18:21 verbose #22750 > > |> listm'.indexed 00:18:21 verbose #22751 > > |> listm'.box 00:18:21 verbose #22752 > > |> listm'.to_array' 00:18:21 verbose #22753 > > |> am'.map_base fun ((i : int), (test_name, solution)) => 00:18:21 verbose #22754 > > inl result, time = 00:18:21 verbose #22755 > > fun () => solution input 00:18:21 verbose #22756 > > |> run' count 00:18:21 verbose #22757 > > trace Verbose 00:18:21 verbose #22758 > > fun () => $'$"benchmark.run / solutions.map"' 00:18:21 verbose #22759 > > fun () => { i = i + 1; test_name time } 00:18:21 verbose #22760 > > result, time 00:18:21 verbose #22761 > > 00:18:21 verbose #22762 > > match results_with_time |> am'.map_base fst with 00:18:21 verbose #22763 > > | array when (array |> (fun x => a x : _ int _) |> am'.length) <= 1 => () 00:18:21 verbose #22764 > > | array when array |> (fun x => a x : _ int _) |> am.forall' ((=) (array |> 00:18:21 verbose #22765 > > (fun x => a x : _ int _) |> am'.index 0)) => () 00:18:21 verbose #22766 > > | results => failwith ($'$"benchmark.run / error / results: {!results}"' : 00:18:21 verbose #22767 > > string) 00:18:21 verbose #22768 > > 00:18:21 verbose #22769 > > { 00:18:21 verbose #22770 > > input = input_str 00:18:21 verbose #22771 > > expected = expected |> sm'.format_debug 00:18:21 verbose #22772 > > result = results_with_time |> am'.map_base fst |> (fun x => a x : _ int 00:18:21 verbose #22773 > > _) |> am'.index 0 |> sm'.format_debug 00:18:21 verbose #22774 > > time_list = results_with_time |> am'.map_base snd 00:18:21 verbose #22775 > > } 00:18:21 verbose #22776 > > 00:18:21 verbose #22777 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:21 verbose #22778 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:21 verbose #22779 > > │ ### run_all │ 00:18:21 verbose #22780 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:21 verbose #22781 > > 00:18:21 verbose #22782 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:21 verbose #22783 > > inl run_all forall input expected. 00:18:21 verbose #22784 > > test_name 00:18:21 verbose #22785 > > count 00:18:21 verbose #22786 > > (solutions : list (string * (input -> expected))) 00:18:21 verbose #22787 > > test_cases 00:18:21 verbose #22788 > > = 00:18:21 verbose #22789 > > console.write_line "" 00:18:21 verbose #22790 > > console.write_line "```" 00:18:21 verbose #22791 > > trace Verbose 00:18:21 verbose #22792 > > fun () => $'$"benchmark.run_all"' 00:18:21 verbose #22793 > > fun () => { test_name count } 00:18:21 verbose #22794 > > test_cases 00:18:21 verbose #22795 > > |> listm'.box 00:18:21 verbose #22796 > > |> listm'.to_array' 00:18:21 verbose #22797 > > |> am'.map_base (run count solutions) 00:18:21 verbose #22798 > > 00:18:21 verbose #22799 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:21 verbose #22800 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:21 verbose #22801 > > │ ### sort_result_list │ 00:18:21 verbose #22802 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:21 verbose #22803 > > 00:18:21 verbose #22804 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:21 verbose #22805 > > inl sort_result_list results = 00:18:21 verbose #22806 > > inl table = 00:18:21 verbose #22807 > > inl rows = 00:18:21 verbose #22808 > > results 00:18:21 verbose #22809 > > |> am'.map_base fun (result : test_case_result) => 00:18:21 verbose #22810 > > inl best = 00:18:21 verbose #22811 > > result.time_list 00:18:21 verbose #22812 > > |> am'.indexed 00:18:21 verbose #22813 > > |> am'.map_base fun (i, time) => 00:18:21 verbose #22814 > > i + 1i32, time 00:18:21 verbose #22815 > > |> fun x => a x : _ int _ 00:18:21 verbose #22816 > > |> am'.sort_by snd 00:18:21 verbose #22817 > > |> am'.index 0i32 00:18:21 verbose #22818 > > |> sm'.format 00:18:21 verbose #22819 > > inl row = 00:18:21 verbose #22820 > > [[ 00:18:21 verbose #22821 > > result.input |> sm'.ellipsis_end 40 |> sm'.replace "|" 00:18:21 verbose #22822 > > "" 00:18:21 verbose #22823 > > result.expected 00:18:21 verbose #22824 > > result.result 00:18:21 verbose #22825 > > best 00:18:21 verbose #22826 > > ]] 00:18:21 verbose #22827 > > inl color : option console.console_color = 00:18:21 verbose #22828 > > open console 00:18:21 verbose #22829 > > match result.expected = result.result with 00:18:21 verbose #22830 > > | true => Some $'`console_color.DarkGreen' 00:18:21 verbose #22831 > > | false => Some $'`console_color.DarkRed' 00:18:21 verbose #22832 > > row, color 00:18:21 verbose #22833 > > 00:18:21 verbose #22834 > > inl header = 00:18:21 verbose #22835 > > [[ 00:18:21 verbose #22836 > > [[ 00:18:21 verbose #22837 > > "input" 00:18:21 verbose #22838 > > "expected" 00:18:21 verbose #22839 > > "result" 00:18:21 verbose #22840 > > "best" 00:18:21 verbose #22841 > > ]] 00:18:21 verbose #22842 > > [[ 00:18:21 verbose #22843 > > "---" 00:18:21 verbose #22844 > > "---" 00:18:21 verbose #22845 > > "---" 00:18:21 verbose #22846 > > "---" 00:18:21 verbose #22847 > > ]] 00:18:21 verbose #22848 > > ]] 00:18:21 verbose #22849 > > |> listm.map fun row => row, None 00:18:21 verbose #22850 > > |> listm'.box 00:18:21 verbose #22851 > > |> listm'.to_array' 00:18:21 verbose #22852 > > |> fun x => a x : _ int _ 00:18:21 verbose #22853 > > a rows 00:18:21 verbose #22854 > > |> am.append header 00:18:21 verbose #22855 > > |> fun (a x) => x 00:18:21 verbose #22856 > > 00:18:21 verbose #22857 > > inl formatted_table = 00:18:21 verbose #22858 > > inl length_map : mapm.map i32 i64 = 00:18:21 verbose #22859 > > table 00:18:21 verbose #22860 > > |> am'.map_base (fst >> listm'.box >> listm'.to_array') 00:18:21 verbose #22861 > > |> am'.transpose 00:18:21 verbose #22862 > > |> am'.map_base fun column => 00:18:21 verbose #22863 > > column 00:18:21 verbose #22864 > > |> am'.map_base sm.length 00:18:21 verbose #22865 > > |> fun x => a x : _ int _ 00:18:21 verbose #22866 > > |> am'.sort_descending 00:18:21 verbose #22867 > > |> am'.try_item 0i32 00:18:21 verbose #22868 > > |> optionm'.default_value 0i64 00:18:21 verbose #22869 > > |> am'.indexed 00:18:21 verbose #22870 > > |> fun x => a x : _ int _ 00:18:21 verbose #22871 > > |> mapm.of_array 00:18:21 verbose #22872 > > table 00:18:21 verbose #22873 > > |> am'.map_base fun (row, color) => 00:18:21 verbose #22874 > > inl new_row = 00:18:21 verbose #22875 > > row 00:18:21 verbose #22876 > > |> listm'.indexed 00:18:21 verbose #22877 > > |> listm.map fun (i, cell) => 00:18:21 verbose #22878 > > cell |> sm'.pad_right (length_map |> mapm.item i |> conv) ' 00:18:21 verbose #22879 > > ' 00:18:21 verbose #22880 > > |> listm'.box 00:18:21 verbose #22881 > > |> listm'.to_array' 00:18:21 verbose #22882 > > new_row, color 00:18:21 verbose #22883 > > 00:18:21 verbose #22884 > > console.write_line "```" 00:18:21 verbose #22885 > > formatted_table 00:18:21 verbose #22886 > > |> fun x => a x : _ int _ 00:18:21 verbose #22887 > > |> am'.to_list' 00:18:21 verbose #22888 > > |> listm'.unbox 00:18:21 verbose #22889 > > |> listm.iter fun (row, color) => 00:18:21 verbose #22890 > > match color with 00:18:21 verbose #22891 > > | Some color => color |> console.set_foreground_color 00:18:21 verbose #22892 > > | None => console.reset_color () 00:18:21 verbose #22893 > > 00:18:21 verbose #22894 > > a row |> sm'.join' "\t| " |> console.write_line 00:18:21 verbose #22895 > > 00:18:21 verbose #22896 > > console.reset_color () 00:18:21 verbose #22897 > > 00:18:21 verbose #22898 > > inl averages = 00:18:21 verbose #22899 > > results 00:18:21 verbose #22900 > > |> am'.map_base fun result => 00:18:21 verbose #22901 > > result.time_list 00:18:21 verbose #22902 > > |> am'.map_base ($'float' : i64 -> f64) 00:18:21 verbose #22903 > > |> am'.transpose 00:18:21 verbose #22904 > > |> am'.map_base ((fun x => a x : _ int _) >> am'.average) 00:18:21 verbose #22905 > > |> am'.map_base ($'int64' : f64 -> i64) 00:18:21 verbose #22906 > > |> am'.indexed 00:18:21 verbose #22907 > > |> fun x => a x : _ u64 _ 00:18:21 verbose #22908 > > 00:18:21 verbose #22909 > > console.write_line "```" 00:18:21 verbose #22910 > > averages 00:18:21 verbose #22911 > > |> am'.sort_by snd 00:18:21 verbose #22912 > > |> am'.to_list' 00:18:21 verbose #22913 > > |> listm'.unbox 00:18:21 verbose #22914 > > |> listm.iter fun ((i : i32), avg) => 00:18:21 verbose #22915 > > trace Verbose 00:18:21 verbose #22916 > > fun () => $'$"benchmark.sort_result_list / averages.iter"' 00:18:21 verbose #22917 > > fun () => { i = i + 1; avg } 00:18:21 verbose #22918 > > console.write_line "```" 00:18:21 verbose #22919 > > 00:18:21 verbose #22920 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:21 verbose #22921 > > //// test 00:18:21 verbose #22922 > > 00:18:21 verbose #22923 > > inl is_fast () = 00:18:21 verbose #22924 > > false 00:18:21 verbose #22925 > > 00:18:21 verbose #22926 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:21 verbose #22927 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:21 verbose #22928 > > │ ### empty2Tests │ 00:18:21 verbose #22929 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:21 verbose #22930 > > 00:18:21 verbose #22931 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:21 verbose #22932 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:21 verbose #22933 > > │ Test: Empty2 │ 00:18:21 verbose #22934 > > │ │ 00:18:21 verbose #22935 > > │ Solution: (a, a) │ 00:18:21 verbose #22936 > > │ Test case 1. A. Time: 59L │ 00:18:21 verbose #22937 > > │ │ 00:18:21 verbose #22938 > > │ Solution: (a, a) │ 00:18:21 verbose #22939 > > │ Test case 1. A. Time: 53L │ 00:18:21 verbose #22940 > > │ │ 00:18:21 verbose #22941 > > │ Input | Expected | Result | Best │ 00:18:21 verbose #22942 > > │ --- | --- | --- | --- │ 00:18:21 verbose #22943 > > │ (a, a) | a | a | (1, 59) │ 00:18:21 verbose #22944 > > │ (a, a) | a | a | (1, 53) │ 00:18:21 verbose #22945 > > │ │ 00:18:21 verbose #22946 > > │ Averages │ 00:18:21 verbose #22947 > > │ Test case 1. Average Time: 56L │ 00:18:21 verbose #22948 > > │ │ 00:18:21 verbose #22949 > > │ Ranking │ 00:18:21 verbose #22950 > > │ Test case 1. Average Time: 56L │ 00:18:21 verbose #22951 > > │ │ 00:18:21 verbose #22952 > > │ --- │ 00:18:21 verbose #22953 > > │ │ 00:18:21 verbose #22954 > > │ │ 00:18:21 verbose #22955 > > │ ``` │ 00:18:21 verbose #22956 > > │ 01:12:03 verbose #1 benchmark.run_all / {count = 2000000; test_name = │ 00:18:21 verbose #22957 > > │ empty_2_tests} │ 00:18:21 verbose #22958 > > │ 01:12:03 verbose #2 benchmark.run / {count = 2000000; expected = a; │ 00:18:21 verbose #22959 > > │ input = a, a; input_str = struct ("a", "a")} │ 00:18:21 verbose #22960 > > │ 01:12:03 verbose #3 benchmark.run / solutions.map / {count = 2000000; │ 00:18:21 verbose #22961 > > │ expected = a; i = 0; input = a, a; input_str = struct ("a", "a"); test_name │ 00:18:21 verbose #22962 > > │ = A; time = 119} │ 00:18:21 verbose #22963 > > │ 01:12:04 verbose #4 benchmark.run / solutions.map / {count = 2000000; │ 00:18:21 verbose #22964 > > │ expected = a; i = 1; input = a, a; input_str = struct ("a", "a"); test_name │ 00:18:21 verbose #22965 > > │ = B; time = 122} │ 00:18:21 verbose #22966 > > │ 01:12:04 verbose #5 benchmark.run / {count = 2000000; expected = b; │ 00:18:21 verbose #22967 > > │ input = b, b; input_str = struct ("b", "b")} │ 00:18:21 verbose #22968 > > │ 01:12:04 verbose #6 benchmark.run / solutions.map / {count = 2000000; │ 00:18:21 verbose #22969 > > │ expected = b; i = 0; input = b, b; input_str = struct ("b", "b"); test_name │ 00:18:21 verbose #22970 > > │ = A; time = 110} │ 00:18:21 verbose #22971 > > │ 01:12:04 verbose #7 benchmark.run / solutions.map / {count = 2000000; │ 00:18:21 verbose #22972 > > │ expected = b; i = 1; input = b, b; input_str = struct ("b", "b"); test_name │ 00:18:21 verbose #22973 > > │ = B; time = 120} │ 00:18:21 verbose #22974 > > │ ``` │ 00:18:21 verbose #22975 > > │ Input | Expected | Result | Best │ 00:18:21 verbose #22976 > > │ --- | --- | --- | --- │ 00:18:21 verbose #22977 > > │ struct ("a", "a") | "a" | "a" | struct (1L, 119L) │ 00:18:21 verbose #22978 > > │ struct ("b", "b") | "b" | "b" | struct (1L, 110L) │ 00:18:21 verbose #22979 > > │ ``` │ 00:18:21 verbose #22980 > > │ 01:12:04 verbose #8 benchmark.sort_result_list / averages.iter / {avg = │ 00:18:21 verbose #22981 > > │ 114; i = 0} │ 00:18:21 verbose #22982 > > │ 01:12:04 verbose #9 benchmark.sort_result_list / averages.iter / {avg = │ 00:18:21 verbose #22983 > > │ 121; i = 1} │ 00:18:21 verbose #22984 > > │ ``` │ 00:18:21 verbose #22985 > > │ ` │ 00:18:21 verbose #22986 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:21 verbose #22987 > > 00:18:21 verbose #22988 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:21 verbose #22989 > > //// test 00:18:21 verbose #22990 > > 00:18:21 verbose #22991 > > inl get_solutions () = 00:18:21 verbose #22992 > > [[ 00:18:21 verbose #22993 > > "A", 00:18:21 verbose #22994 > > fun (a, _b) => 00:18:21 verbose #22995 > > a 00:18:21 verbose #22996 > > 00:18:21 verbose #22997 > > "B", 00:18:21 verbose #22998 > > fun (_a, b) => 00:18:21 verbose #22999 > > b 00:18:21 verbose #23000 > > ]] 00:18:21 verbose #23001 > > 00:18:21 verbose #23002 > > inl rec empty_2_tests () = 00:18:21 verbose #23003 > > inl test_cases = [[ 00:18:21 verbose #23004 > > ("a", "a"), "a" 00:18:21 verbose #23005 > > ("b", "b"), "b" 00:18:21 verbose #23006 > > ]] 00:18:21 verbose #23007 > > 00:18:21 verbose #23008 > > inl solutions = get_solutions () 00:18:21 verbose #23009 > > 00:18:21 verbose #23010 > > // inl is_fast () = true 00:18:21 verbose #23011 > > 00:18:21 verbose #23012 > > inl count = 00:18:21 verbose #23013 > > if is_fast () 00:18:21 verbose #23014 > > then 1000i32 00:18:21 verbose #23015 > > else 2000000i32 00:18:21 verbose #23016 > > 00:18:21 verbose #23017 > > run_all (reflection.nameof { empty_2_tests }) count solutions test_cases 00:18:21 verbose #23018 > > |> sort_result_list 00:18:21 verbose #23019 > > 00:18:21 verbose #23020 > > empty_2_tests () 00:18:24 verbose #23021 > > 00:18:24 verbose #23022 > > ╭─[ 3.16s - stdout ]───────────────────────────────────────────────────────────╮ 00:18:24 verbose #23023 > > │ │ 00:18:24 verbose #23024 > > │ ``` │ 00:18:24 verbose #23025 > > │ 00:00:00 verbose #1 benchmark.run_all / { test_name = empty_2_tests; │ 00:18:24 verbose #23026 > > │ count = 2000000 } │ 00:18:24 verbose #23027 > > │ │ 00:18:24 verbose #23028 > > │ 00:00:00 verbose #2 benchmark.run / { input_str = struct ("a", "a") } │ 00:18:24 verbose #23029 > > │ 00:00:00 verbose #3 benchmark.run / solutions.map / { i = 1; test_name │ 00:18:24 verbose #23030 > > │ = A; time = 30 } │ 00:18:24 verbose #23031 > > │ 00:00:00 verbose #4 benchmark.run / solutions.map / { i = 2; test_name │ 00:18:24 verbose #23032 > > │ = B; time = 20 } │ 00:18:24 verbose #23033 > > │ │ 00:18:24 verbose #23034 > > │ 00:00:00 verbose #5 benchmark.run / { input_str = struct ("b", "b") } │ 00:18:24 verbose #23035 > > │ 00:00:00 verbose #6 benchmark.run / solutions.map / { i = 1; test_name │ 00:18:24 verbose #23036 > > │ = A; time = 19 } │ 00:18:24 verbose #23037 > > │ 00:00:00 verbose #7 benchmark.run / solutions.map / { i = 2; test_name │ 00:18:24 verbose #23038 > > │ = B; time = 21 } │ 00:18:24 verbose #23039 > > │ ``` │ 00:18:24 verbose #23040 > > │ input | expected | result | best │ 00:18:24 verbose #23041 > > │ --- | --- | --- | --- │ 00:18:24 verbose #23042 > > │ struct ("a", "a") | "a" | "a" | 2, 20 │ 00:18:24 verbose #23043 > > │ struct ("b", "b") | "b" | "b" | 1, 19 │ 00:18:24 verbose #23044 > > │ ``` │ 00:18:24 verbose #23045 > > │ 00:00:00 verbose #8 benchmark.sort_result_list / averages.iter / { i = │ 00:18:24 verbose #23046 > > │ 2; avg = 20 } │ 00:18:24 verbose #23047 > > │ 00:00:00 verbose #9 benchmark.sort_result_list / averages.iter / { i = │ 00:18:24 verbose #23048 > > │ 1; avg = 24 } │ 00:18:24 verbose #23049 > > │ ``` │ 00:18:24 verbose #23050 > > │ │ 00:18:24 verbose #23051 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:24 verbose #23052 > > 00:18:24 verbose #23053 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:24 verbose #23054 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:24 verbose #23055 > > │ ### emptyTests │ 00:18:24 verbose #23056 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:24 verbose #23057 > > 00:18:24 verbose #23058 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:24 verbose #23059 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:24 verbose #23060 > > │ Test: Empty │ 00:18:24 verbose #23061 > > │ │ 00:18:24 verbose #23062 > > │ Solution: 0 │ 00:18:24 verbose #23063 > > │ Test case 1. A. Time: 61L │ 00:18:24 verbose #23064 > > │ │ 00:18:24 verbose #23065 > > │ Solution: 2 │ 00:18:24 verbose #23066 > > │ Test case 1. A. Time: 62L │ 00:18:24 verbose #23067 > > │ │ 00:18:24 verbose #23068 > > │ Solution: 5 │ 00:18:24 verbose #23069 > > │ Test case 1. A. Time: 70L │ 00:18:24 verbose #23070 > > │ │ 00:18:24 verbose #23071 > > │ Input | Expected | Result | Best │ 00:18:24 verbose #23072 > > │ --- | --- | --- | --- │ 00:18:24 verbose #23073 > > │ 0 | 0 | 0 | (1, 61) │ 00:18:24 verbose #23074 > > │ 2 | 2 | 2 | (1, 62) │ 00:18:24 verbose #23075 > > │ 5 | 5 | 5 | (1, 70) │ 00:18:24 verbose #23076 > > │ │ 00:18:24 verbose #23077 > > │ Averages │ 00:18:24 verbose #23078 > > │ Test case 1. Average Time: 64L │ 00:18:24 verbose #23079 > > │ │ 00:18:24 verbose #23080 > > │ Ranking │ 00:18:24 verbose #23081 > > │ Test case 1. Average Time: 64L │ 00:18:24 verbose #23082 > > │ │ 00:18:24 verbose #23083 > > │ --- │ 00:18:24 verbose #23084 > > │ │ 00:18:24 verbose #23085 > > │ ``` │ 00:18:24 verbose #23086 > > │ 01:21:25 verbose #1 benchmark.run_all / {count = 2000000; test_name = │ 00:18:24 verbose #23087 > > │ empty_1_tests} │ 00:18:24 verbose #23088 > > │ 01:21:25 verbose #2 benchmark.run / {count = 2000000; expected = │ 00:18:24 verbose #23089 > > │ +1.000000; input = +0.000000; input_str = 0.0} │ 00:18:24 verbose #23090 > > │ 01:21:25 verbose #3 benchmark.run / solutions.map / {count = 2000000; │ 00:18:24 verbose #23091 > > │ expected = +1.000000; i = 0; input = +0.000000; input_str = 0.0; test_name = │ 00:18:24 verbose #23092 > > │ A; time = 36} │ 00:18:24 verbose #23093 > > │ 01:21:25 verbose #4 benchmark.run / {count = 2000000; expected = │ 00:18:24 verbose #23094 > > │ +3.000000; input = +2.000000; input_str = 2.0} │ 00:18:24 verbose #23095 > > │ 01:21:25 verbose #5 benchmark.run / solutions.map / {count = 2000000; │ 00:18:24 verbose #23096 > > │ expected = +3.000000; i = 0; input = +2.000000; input_str = 2.0; test_name = │ 00:18:24 verbose #23097 > > │ A; time = 20} │ 00:18:24 verbose #23098 > > │ 01:21:25 verbose #6 benchmark.run / {count = 2000000; expected = │ 00:18:24 verbose #23099 > > │ +6.000000; input = +5.000000; input_str = 5.0} │ 00:18:24 verbose #23100 > > │ 01:21:25 verbose #7 benchmark.run / solutions.map / {count = 2000000; │ 00:18:24 verbose #23101 > > │ expected = +6.000000; i = 0; input = +5.000000; input_str = 5.0; test_name = │ 00:18:24 verbose #23102 > > │ A; time = 22} │ 00:18:24 verbose #23103 > > │ ``` │ 00:18:24 verbose #23104 > > │ Input | Expected | Result | Best │ 00:18:24 verbose #23105 > > │ --- | --- | --- | --- │ 00:18:24 verbose #23106 > > │ 0.0 | 1.0 | 1.0 | struct (1L, 36L) │ 00:18:24 verbose #23107 > > │ 2.0 | 3.0 | 3.0 | struct (1L, 20L) │ 00:18:24 verbose #23108 > > │ 5.0 | 6.0 | 6.0 | struct (1L, 22L) │ 00:18:24 verbose #23109 > > │ ``` │ 00:18:24 verbose #23110 > > │ 01:21:25 verbose #8 benchmark.sort_result_list / averages.iter / {avg = │ 00:18:24 verbose #23111 > > │ 26; i = 0} │ 00:18:24 verbose #23112 > > │ ``` │ 00:18:24 verbose #23113 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:24 verbose #23114 > > 00:18:24 verbose #23115 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:24 verbose #23116 > > //// test 00:18:24 verbose #23117 > > 00:18:24 verbose #23118 > > inl get_solutions () = 00:18:24 verbose #23119 > > [[ 00:18:24 verbose #23120 > > "A", 00:18:24 verbose #23121 > > fun n => 00:18:24 verbose #23122 > > n + 1f64 00:18:24 verbose #23123 > > ]] 00:18:24 verbose #23124 > > 00:18:24 verbose #23125 > > inl rec empty_1_tests () = 00:18:24 verbose #23126 > > inl test_cases = [[ 00:18:24 verbose #23127 > > 0, 1 00:18:24 verbose #23128 > > 2, 3 00:18:24 verbose #23129 > > 5, 6 00:18:24 verbose #23130 > > ]] 00:18:24 verbose #23131 > > 00:18:24 verbose #23132 > > inl solutions = get_solutions () 00:18:24 verbose #23133 > > 00:18:24 verbose #23134 > > // inl is_fast () = true 00:18:24 verbose #23135 > > 00:18:24 verbose #23136 > > inl count = 00:18:24 verbose #23137 > > if is_fast () 00:18:24 verbose #23138 > > then 1000i32 00:18:24 verbose #23139 > > else 2000000i32 00:18:24 verbose #23140 > > 00:18:24 verbose #23141 > > run_all (reflection.nameof { empty_1_tests }) count solutions test_cases 00:18:24 verbose #23142 > > |> sort_result_list 00:18:24 verbose #23143 > > 00:18:24 verbose #23144 > > empty_1_tests () 00:18:27 verbose #23145 > > 00:18:27 verbose #23146 > > ╭─[ 2.10s - stdout ]───────────────────────────────────────────────────────────╮ 00:18:27 verbose #23147 > > │ │ 00:18:27 verbose #23148 > > │ ``` │ 00:18:27 verbose #23149 > > │ 00:00:00 verbose #1 benchmark.run_all / { test_name = empty_1_tests; │ 00:18:27 verbose #23150 > > │ count = 2000000 } │ 00:18:27 verbose #23151 > > │ │ 00:18:27 verbose #23152 > > │ 00:00:00 verbose #2 benchmark.run / { input_str = 0.0 } │ 00:18:27 verbose #23153 > > │ 00:00:00 verbose #3 benchmark.run / solutions.map / { i = 1; test_name │ 00:18:27 verbose #23154 > > │ = A; time = 22 } │ 00:18:27 verbose #23155 > > │ │ 00:18:27 verbose #23156 > > │ 00:00:00 verbose #4 benchmark.run / { input_str = 2.0 } │ 00:18:27 verbose #23157 > > │ 00:00:00 verbose #5 benchmark.run / solutions.map / { i = 1; test_name │ 00:18:27 verbose #23158 > > │ = A; time = 14 } │ 00:18:27 verbose #23159 > > │ │ 00:18:27 verbose #23160 > > │ 00:00:00 verbose #6 benchmark.run / { input_str = 5.0 } │ 00:18:27 verbose #23161 > > │ 00:00:00 verbose #7 benchmark.run / solutions.map / { i = 1; test_name │ 00:18:27 verbose #23162 > > │ = A; time = 17 } │ 00:18:27 verbose #23163 > > │ ``` │ 00:18:27 verbose #23164 > > │ input | expected | result | best │ 00:18:27 verbose #23165 > > │ --- | --- | --- | --- │ 00:18:27 verbose #23166 > > │ 0.0 | 1.0 | 1.0 | 1, 22 │ 00:18:27 verbose #23167 > > │ 2.0 | 3.0 | 3.0 | 1, 14 │ 00:18:27 verbose #23168 > > │ 5.0 | 6.0 | 6.0 | 1, 17 │ 00:18:27 verbose #23169 > > │ ``` │ 00:18:27 verbose #23170 > > │ 00:00:00 verbose #8 benchmark.sort_result_list / averages.iter / { i = │ 00:18:27 verbose #23171 > > │ 1; avg = 17 } │ 00:18:27 verbose #23172 > > │ ``` │ 00:18:27 verbose #23173 > > │ │ 00:18:27 verbose #23174 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:27 verbose #23175 > 00:00:10 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 30416 } 00:18:27 verbose #23176 > 00:00:10 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:18:27 verbose #23177 > "nbconvert", 00:18:27 verbose #23178 > "/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.ipynb", 00:18:27 verbose #23179 > "--to", 00:18:27 verbose #23180 > "html", 00:18:27 verbose #23181 > "--HTMLExporter.theme=dark", 00:18:27 verbose #23182 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:27 verbose #23183 > 00:00:11 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.ipynb to html 00:18:27 verbose #23184 > 00:00:11 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:18:27 verbose #23185 > 00:00:11 verbose #7 ! validate(nb) 00:18:28 verbose #23186 > 00:00:11 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:18:28 verbose #23187 > 00:00:11 verbose #9 ! return _pygments_highlight( 00:18:28 verbose #23188 > 00:00:11 verbose #10 ! [NbConvertApp] Writing 316703 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.html 00:18:28 verbose #23189 > 00:00:11 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 } 00:18:28 verbose #23190 > 00:00:11 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 } 00:18:28 verbose #23191 > 00:00:11 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:18:28 verbose #23192 > "-c", 00:18:28 verbose #23193 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:18:28 verbose #23194 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:28 verbose #23195 > 00:00:12 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:18:28 verbose #23196 > 00:00:12 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:18:28 verbose #23197 > 00:00:12 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 31377 } 00:18:28 debug #23198 runtime.execute_with_options_async / { exit_code = 0; output_length = 35238 } 00:18:28 debug #30 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path benchmark.dib --retries 3 00:18:28 debug #23199 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path physics.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:28 verbose #23200 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "physics.dib", "--retries", "3"])) } 00:18:28 verbose #23201 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:18:28 verbose #23202 > "repl", 00:18:28 verbose #23203 > "--exit-after-run", 00:18:28 verbose #23204 > "--run", 00:18:28 verbose #23205 > "/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib", 00:18:28 verbose #23206 > "--output-path", 00:18:28 verbose #23207 > "/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.ipynb", 00:18:28 verbose #23208 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:18:30 verbose #23209 > > 00:18:30 verbose #23210 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:30 verbose #23211 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:30 verbose #23212 > > │ # physics │ 00:18:30 verbose #23213 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:44 verbose #23214 > > 00:18:44 verbose #23215 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:44 verbose #23216 > > //// test 00:18:44 verbose #23217 > > 00:18:44 verbose #23218 > > open testing 00:18:44 verbose #23219 > > 00:18:44 verbose #23220 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:44 verbose #23221 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:44 verbose #23222 > > │ ### init_series │ 00:18:44 verbose #23223 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:44 verbose #23224 > > 00:18:44 verbose #23225 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:44 verbose #23226 > > //// test 00:18:44 verbose #23227 > > 00:18:44 verbose #23228 > > inl x = am'.init_series -3f64 3 0.01 00:18:44 verbose #23229 > > inl y = x |> am'.map_base math.square 00:18:44 verbose #23230 > > "square", "x", "y", ;[[ "square", x, y ]] 00:18:44 verbose #23231 > > 00:18:45 verbose #23232 > > ╭─[ 210.56ms - return value ]──────────────────────────────────────────────────╮ 00:18:45 verbose #23233 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:18:45 verbose #23234 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:18:45 verbose #23235 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:18:45 verbose #23236 > > │ stroke="none"/> │ 00:18:45 verbose #23237 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:18:45 verbose #23238 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:45 verbose #23239 > > │ fill="#FFFFFF"> │ 00:18:45 verbose #23240 > > │ square │ 00:18:45 verbose #23241 > > │ </text> │ 00:18:45 verbose #23242 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" y1="424" x2="61" │ 00:18:45 verbose #23243 > > │ y2="75"/> │ 00:18:45 verbose #23244 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:18:45 verbose #23245 > > │ y2="75"/> │ 00:18:45 verbose #23246 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" y1="424" x2="78" │ 00:18:45 verbose #23247 > > │ y2="75"/> │ 00:18:45 verbose #23248 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" y1="424" x2="86" │ 00:18:45 verbose #23249 > > │ y2="75"/> │ 00:18:45 verbose #23250 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │ 00:18:45 verbose #23251 > > │ y2="75"/> │ 00:18:45 verbose #23252 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="103" y1="424" │ 00:18:45 verbose #23253 > > │ x2="103" y2="75"/> │ 00:18:45 verbose #23254 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="111" y1="424" │ 00:18:45 verbose #23255 > > │ x2="111" y2="75"/> │ 00:18:45 verbose #23256 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:18:45 verbose #23257 > > │ x2="119" y2="75"/> │ 00:18:45 verbose #23258 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="128" y1="424" │ 00:18:45 verbose #23259 > > │ x2="128" y2="75"/> │ 00:18:45 verbose #23260 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="136" y1="424" │ 00:18:45 verbose #23261 > > │ x2="136" y2="75"/> │ 00:18:45 verbose #23262 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" y1="424" │ 00:18:45 verbose #23263 > > │ x2="144" y2="75"/> │ 00:18:45 verbose #23264 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153" y1="424" │ 00:18:45 verbose #23265 > > │ x2="153" y2="75"/> │ 00:18:45 verbose #23266 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="161" y1="424" │ 00:18:45 verbose #23267 > > │ x2="161" y2="75"/> │ 00:18:45 verbose #23268 > > │ <line opacity="1" stroke="#... 449,326 450,324 450,323 451,322 452,321 │ 00:18:45 verbose #23269 > > │ 453,320 454,319 455,317 455,316 456,315 457,314 458,313 459,311 460,310 │ 00:18:45 verbose #23270 > > │ 460,309 461,308 462,306 463,305 464,304 465,303 465,301 466,300 467,299 │ 00:18:45 verbose #23271 > > │ 468,297 469,296 470,295 470,293 471,292 472,291 473,289 474,288 475,287 │ 00:18:45 verbose #23272 > > │ 475,285 476,284 477,283 478,281 479,280 480,278 480,277 481,276 482,274 │ 00:18:45 verbose #23273 > > │ 483,273 484,271 485,270 485,268 486,267 487,265 488,264 489,262 490,261 │ 00:18:45 verbose #23274 > > │ 490,259 491,258 492,256 493,255 494,253 495,252 495,250 496,249 497,247 │ 00:18:45 verbose #23275 > > │ 498,246 499,244 499,242 500,241 501,239 502,238 503,236 504,234 504,233 │ 00:18:45 verbose #23276 > > │ 505,231 506,229 507,228 508,226 509,224 509,223 510,221 511,219 512,218 │ 00:18:45 verbose #23277 > > │ 513,216 514,214 514,213 515,211 516,209 517,207 518,206 519,204 519,202 │ 00:18:45 verbose #23278 > > │ 520,200 521,199 522,197 523,195 524,193 524,191 525,190 526,188 527,186 │ 00:18:45 verbose #23279 > > │ 528,184 529,182 529,180 530,179 531,177 532,175 533,173 534,171 534,169 │ 00:18:45 verbose #23280 > > │ 535,167 536,165 537,164 538,162 539,160 539,158 540,156 541,154 542,152 │ 00:18:45 verbose #23281 > > │ 543,150 544,148 544,146 545,144 546,142 547,140 548,138 549,136 549,134 │ 00:18:45 verbose #23282 > > │ 550,132 551,130 552,128 553,126 554,124 554,122 555,120 556,117 557,115 │ 00:18:45 verbose #23283 > > │ 558,113 559,111 559,109 560,107 561,105 562,103 563,101 564,98 564,96 565,94 │ 00:18:45 verbose #23284 > > │ 566,92 567,90 568,88 569,85 "/> │ 00:18:45 verbose #23285 > > │ <rect x="497" y="235" width="83" height="30" opacity="1" fill="none" │ 00:18:45 verbose #23286 > > │ stroke="#FFFFFF"/> │ 00:18:45 verbose #23287 > > │ <text x="537" y="245" dy="0.76em" text-anchor="start" │ 00:18:45 verbose #23288 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:45 verbose #23289 > > │ fill="#FFFFFF"> │ 00:18:45 verbose #23290 > > │ square │ 00:18:45 verbose #23291 > > │ </text> │ 00:18:45 verbose #23292 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:18:45 verbose #23293 > > │ points="507,250 527,250 "/> │ 00:18:45 verbose #23294 > > │ </svg> │ 00:18:45 verbose #23295 > > │ │ 00:18:45 verbose #23296 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:45 verbose #23297 > > 00:18:45 verbose #23298 > > ╭─[ 217.49ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:45 verbose #23299 > > │ 00:00:05 debug #1 runtime.execute_with_options_async / { options = { │ 00:18:45 verbose #23300 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:18:45 verbose #23301 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:18:45 verbose #23302 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:18:45 verbose #23303 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:18:45 verbose #23304 > > │ 00:00:05 verbose #2 > Creating │ 00:18:45 verbose #23305 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/7b7fc4c35397bb203cd │ 00:18:45 verbose #23306 > > │ 73e71999e798459034face642d83ec40fb90a61bec926.svg │ 00:18:45 verbose #23307 > > │ 00:00:05 debug #3 runtime.execute_with_options_async / { exit_code = │ 00:18:45 verbose #23308 > > │ 0; output_length = 134 } │ 00:18:45 verbose #23309 > > │ │ 00:18:45 verbose #23310 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:45 verbose #23311 > > 00:18:45 verbose #23312 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:45 verbose #23313 > > //// test 00:18:45 verbose #23314 > > 00:18:45 verbose #23315 > > inl x = am'.init_series -10f64 10 0.1 00:18:45 verbose #23316 > > inl y_sin = x |> am'.map_base sin 00:18:45 verbose #23317 > > inl y_cos = x |> am'.map_base cos 00:18:45 verbose #23318 > > "sin cos", "x", "y", ;[[ "sin", x, y_sin; "cos", x, y_cos ]] 00:18:45 verbose #23319 > > 00:18:45 verbose #23320 > > ╭─[ 109.72ms - return value ]──────────────────────────────────────────────────╮ 00:18:45 verbose #23321 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:18:45 verbose #23322 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:18:45 verbose #23323 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:18:45 verbose #23324 > > │ stroke="none"/> │ 00:18:45 verbose #23325 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:18:45 verbose #23326 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:45 verbose #23327 > > │ fill="#FFFFFF"> │ 00:18:45 verbose #23328 > > │ sin cos │ 00:18:45 verbose #23329 > > │ </text> │ 00:18:45 verbose #23330 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="57" y1="424" x2="57" │ 00:18:45 verbose #23331 > > │ y2="75"/> │ 00:18:45 verbose #23332 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:18:45 verbose #23333 > > │ y2="75"/> │ 00:18:45 verbose #23334 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="82" y1="424" x2="82" │ 00:18:45 verbose #23335 > > │ y2="75"/> │ 00:18:45 verbose #23336 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │ 00:18:45 verbose #23337 > > │ y2="75"/> │ 00:18:45 verbose #23338 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="107" y1="424" │ 00:18:45 verbose #23339 > > │ x2="107" y2="75"/> │ 00:18:45 verbose #23340 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:18:45 verbose #23341 > > │ x2="119" y2="75"/> │ 00:18:45 verbose #23342 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="132" y1="424" │ 00:18:45 verbose #23343 > > │ x2="132" y2="75"/> │ 00:18:45 verbose #23344 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" y1="424" │ 00:18:45 verbose #23345 > > │ x2="144" y2="75"/> │ 00:18:45 verbose #23346 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="157" y1="424" │ 00:18:45 verbose #23347 > > │ x2="157" y2="75"/> │ 00:18:45 verbose #23348 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424" │ 00:18:45 verbose #23349 > > │ x2="169" y2="75"/> │ 00:18:45 verbose #23350 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="182" y1="424" │ 00:18:45 verbose #23351 > > │ x2="182" y2="75"/> │ 00:18:45 verbose #23352 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="194" y1="424" │ 00:18:45 verbose #23353 > > │ x2="194" y2="75"/> │ 00:18:45 verbose #23354 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="207" y1="424" │ 00:18:45 verbose #23355 > > │ x2="207" y2="75"/> │ 00:18:45 verbose #23356 > > │ <line opacity="1" stroke...55 282,238 284,222 287,206 289,190 292,175 │ 00:18:45 verbose #23357 > > │ 294,161 297,148 299,135 302,124 304,114 307,106 309,98 312,93 314,89 317,86 │ 00:18:45 verbose #23358 > > │ 319,85 321,86 324,89 326,93 329,98 331,106 334,114 336,124 339,135 341,148 │ 00:18:45 verbose #23359 > > │ 344,161 346,175 349,190 351,206 354,222 356,238 359,255 361,271 364,287 │ 00:18:45 verbose #23360 > > │ 366,303 369,319 371,333 374,347 376,360 379,371 381,382 384,391 386,399 │ 00:18:45 verbose #23361 > > │ 389,405 391,410 394,413 396,414 399,414 401,413 404,409 406,404 409,398 │ 00:18:45 verbose #23362 > > │ 411,390 414,380 416,370 419,358 421,345 424,331 426,316 429,301 431,285 │ 00:18:45 verbose #23363 > > │ 434,268 436,252 439,236 441,219 444,203 446,188 449,173 451,159 454,146 │ 00:18:45 verbose #23364 > > │ 456,133 459,122 461,113 464,104 466,97 469,92 471,88 474,86 476,85 479,86 │ 00:18:45 verbose #23365 > > │ 481,89 484,94 486,99 489,107 491,116 494,126 496,137 499,150 501,163 504,178 │ 00:18:45 verbose #23366 > > │ 506,193 509,209 511,225 514,241 516,258 519,274 521,290 524,306 526,321 │ 00:18:45 verbose #23367 > > │ 529,335 531,349 534,362 536,373 539,384 541,392 544,400 546,406 549,410 │ 00:18:45 verbose #23368 > > │ 551,413 554,415 556,414 559,412 561,408 564,403 566,396 569,388 "/> │ 00:18:45 verbose #23369 > > │ <rect x="514" y="227" width="66" height="45" opacity="1" fill="none" │ 00:18:45 verbose #23370 > > │ stroke="#FFFFFF"/> │ 00:18:45 verbose #23371 > > │ <text x="554" y="237" dy="0.76em" text-anchor="start" │ 00:18:45 verbose #23372 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:45 verbose #23373 > > │ fill="#FFFFFF"> │ 00:18:45 verbose #23374 > > │ sin │ 00:18:45 verbose #23375 > > │ </text> │ 00:18:45 verbose #23376 > > │ <text x="554" y="252" dy="0.76em" text-anchor="start" │ 00:18:45 verbose #23377 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:45 verbose #23378 > > │ fill="#FFFFFF"> │ 00:18:45 verbose #23379 > > │ cos │ 00:18:45 verbose #23380 > > │ </text> │ 00:18:45 verbose #23381 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:18:45 verbose #23382 > > │ points="524,242 544,242 "/> │ 00:18:45 verbose #23383 > > │ <polyline fill="none" opacity="1" stroke="#0000FF" stroke-width="1" │ 00:18:45 verbose #23384 > > │ points="524,257 544,257 "/> │ 00:18:45 verbose #23385 > > │ </svg> │ 00:18:45 verbose #23386 > > │ │ 00:18:45 verbose #23387 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:45 verbose #23388 > > 00:18:45 verbose #23389 > > ╭─[ 114.35ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:45 verbose #23390 > > │ 00:00:05 debug #4 runtime.execute_with_options_async / { options = { │ 00:18:45 verbose #23391 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:18:45 verbose #23392 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:18:45 verbose #23393 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:18:45 verbose #23394 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:18:45 verbose #23395 > > │ 00:00:05 verbose #5 > Creating │ 00:18:45 verbose #23396 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/92923048c2357a58925 │ 00:18:45 verbose #23397 > > │ 5fc3a1ba8375e45c2d4a0a29d12fd266f7c935f7a46fa.svg │ 00:18:45 verbose #23398 > > │ 00:00:05 debug #6 runtime.execute_with_options_async / { exit_code = │ 00:18:45 verbose #23399 > > │ 0; output_length = 134 } │ 00:18:45 verbose #23400 > > │ │ 00:18:45 verbose #23401 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:45 verbose #23402 > > 00:18:45 verbose #23403 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:45 verbose #23404 > > //// test 00:18:45 verbose #23405 > > 00:18:45 verbose #23406 > > inl y_pos y0 vy0 ay t = 00:18:45 verbose #23407 > > y0 + vy0 * t + ay * (t |> math.square) / 2 00:18:45 verbose #23408 > > 00:18:45 verbose #23409 > > inl x = am'.init_series 0f64 5 0.01 00:18:45 verbose #23410 > > inl y = x |> am'.map_base (y_pos 0 20 -9.8) 00:18:45 verbose #23411 > > "projectile motion", "time (s)", "", ;[[ "height of projectile (m)", x, y ]] 00:18:45 verbose #23412 > > 00:18:45 verbose #23413 > > ╭─[ 106.81ms - return value ]──────────────────────────────────────────────────╮ 00:18:45 verbose #23414 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:18:45 verbose #23415 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:18:45 verbose #23416 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:18:45 verbose #23417 > > │ stroke="none"/> │ 00:18:45 verbose #23418 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:18:45 verbose #23419 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:45 verbose #23420 > > │ fill="#FFFFFF"> │ 00:18:45 verbose #23421 > > │ projectile motion │ 00:18:45 verbose #23422 > > │ </text> │ 00:18:45 verbose #23423 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │ 00:18:45 verbose #23424 > > │ y2="75"/> │ 00:18:45 verbose #23425 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:18:45 verbose #23426 > > │ y2="75"/> │ 00:18:45 verbose #23427 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │ 00:18:45 verbose #23428 > > │ y2="75"/> │ 00:18:45 verbose #23429 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │ 00:18:45 verbose #23430 > > │ y2="75"/> │ 00:18:45 verbose #23431 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │ 00:18:45 verbose #23432 > > │ y2="75"/> │ 00:18:45 verbose #23433 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424" │ 00:18:45 verbose #23434 > > │ x2="109" y2="75"/> │ 00:18:45 verbose #23435 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:18:45 verbose #23436 > > │ x2="119" y2="75"/> │ 00:18:45 verbose #23437 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424" │ 00:18:45 verbose #23438 > > │ x2="129" y2="75"/> │ 00:18:45 verbose #23439 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424" │ 00:18:45 verbose #23440 > > │ x2="139" y2="75"/> │ 00:18:45 verbose #23441 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424" │ 00:18:45 verbose #23442 > > │ x2="149" y2="75"/> │ 00:18:45 verbose #23443 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424" │ 00:18:45 verbose #23444 > > │ x2="159" y2="75"/> │ 00:18:45 verbose #23445 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424" │ 00:18:45 verbose #23446 > > │ x2="169" y2="75"/> │ 00:18:45 verbose #23447 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424" │ 00:18:45 verbose #23448 > > │ x2="179" y2="75"/> │ 00:18:45 verbose #23449 > > │ <line opacity="1...28,176 429,177 430,178 431,179 432,180 433,182 434,183 │ 00:18:45 verbose #23450 > > │ 435,184 436,185 437,186 438,188 439,189 440,190 441,191 442,193 443,194 │ 00:18:45 verbose #23451 > > │ 444,195 445,197 446,198 447,199 448,200 449,202 450,203 451,204 452,206 │ 00:18:45 verbose #23452 > > │ 453,207 454,208 455,210 456,211 457,213 458,214 459,215 460,217 461,218 │ 00:18:45 verbose #23453 > > │ 462,220 463,221 464,222 465,224 466,225 467,227 468,228 469,230 470,231 │ 00:18:45 verbose #23454 > > │ 471,233 472,234 473,236 474,237 475,239 476,240 477,242 478,243 479,245 │ 00:18:45 verbose #23455 > > │ 480,246 481,248 482,249 483,251 484,253 485,254 486,256 487,257 488,259 │ 00:18:45 verbose #23456 > > │ 489,261 490,262 491,264 492,266 493,267 494,269 495,271 496,272 497,274 │ 00:18:45 verbose #23457 > > │ 498,276 499,277 500,279 501,281 502,282 503,284 504,286 505,288 506,289 │ 00:18:45 verbose #23458 > > │ 507,291 508,293 509,295 510,296 511,298 512,300 513,302 514,304 515,305 │ 00:18:45 verbose #23459 > > │ 516,307 517,309 518,311 519,313 520,315 521,316 522,318 523,320 524,322 │ 00:18:45 verbose #23460 > > │ 525,324 526,326 527,328 528,330 529,332 530,334 531,335 532,337 533,339 │ 00:18:45 verbose #23461 > > │ 534,341 535,343 536,345 537,347 538,349 539,351 540,353 541,355 542,357 │ 00:18:45 verbose #23462 > > │ 543,359 544,361 545,363 546,365 547,367 548,370 549,372 550,374 551,376 │ 00:18:45 verbose #23463 > > │ 552,378 553,380 554,382 555,384 556,386 557,388 558,391 559,393 560,395 │ 00:18:45 verbose #23464 > > │ 561,397 562,399 563,401 564,404 565,406 566,408 567,410 568,412 569,415 "/> │ 00:18:45 verbose #23465 > > │ <rect x="399" y="235" width="181" height="30" opacity="1" fill="none" │ 00:18:45 verbose #23466 > > │ stroke="#FFFFFF"/> │ 00:18:45 verbose #23467 > > │ <text x="439" y="245" dy="0.76em" text-anchor="start" │ 00:18:45 verbose #23468 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:45 verbose #23469 > > │ fill="#FFFFFF"> │ 00:18:45 verbose #23470 > > │ height of projectile (m) │ 00:18:45 verbose #23471 > > │ </text> │ 00:18:45 verbose #23472 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:18:45 verbose #23473 > > │ points="409,250 429,250 "/> │ 00:18:45 verbose #23474 > > │ </svg> │ 00:18:45 verbose #23475 > > │ │ 00:18:45 verbose #23476 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:45 verbose #23477 > > 00:18:45 verbose #23478 > > ╭─[ 111.30ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:45 verbose #23479 > > │ 00:00:05 debug #7 runtime.execute_with_options_async / { options = { │ 00:18:45 verbose #23480 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:18:45 verbose #23481 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:18:45 verbose #23482 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:18:45 verbose #23483 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:18:45 verbose #23484 > > │ 00:00:05 verbose #8 > Creating │ 00:18:45 verbose #23485 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/9ba10ae80d4645862b9 │ 00:18:45 verbose #23486 > > │ 25ee46c6c11acaddaeeaef0ca08c6bf4f906b08df5b19.svg │ 00:18:45 verbose #23487 > > │ 00:00:05 debug #9 runtime.execute_with_options_async / { exit_code = │ 00:18:45 verbose #23488 > > │ 0; output_length = 134 } │ 00:18:45 verbose #23489 > > │ │ 00:18:45 verbose #23490 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:45 verbose #23491 > > 00:18:45 verbose #23492 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:45 verbose #23493 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:45 verbose #23494 > > │ ### velocity_cf │ 00:18:45 verbose #23495 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:45 verbose #23496 > > 00:18:45 verbose #23497 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:45 verbose #23498 > > type mass = f64 00:18:45 verbose #23499 > > type time = f64 00:18:45 verbose #23500 > > type position = f64 00:18:45 verbose #23501 > > type velocity = f64 00:18:45 verbose #23502 > > type force = f64 00:18:45 verbose #23503 > > 00:18:45 verbose #23504 > > type velocity_cf = mass -> velocity -> list force -> (time -> velocity) 00:18:45 verbose #23505 > > 00:18:45 verbose #23506 > > inl velocity_cf m v0 fs = 00:18:45 verbose #23507 > > inl f_net = fs |> listm'.sum 00:18:45 verbose #23508 > > inl a0 = f_net / m 00:18:45 verbose #23509 > > inl v t = v0 + a0 * t 00:18:45 verbose #23510 > > v 00:18:45 verbose #23511 > > 00:18:45 verbose #23512 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:45 verbose #23513 > > //// test 00:18:45 verbose #23514 > > 00:18:45 verbose #23515 > > velocity_cf 0.1f64 0.6 [[ 0.04; -0.08 ]] 0 00:18:45 verbose #23516 > > |> _assert_eq 0.6 00:18:45 verbose #23517 > > 00:18:45 verbose #23518 > > velocity_cf 0.1f64 0.6 [[ 0.04; -0.08 ]] 1 00:18:45 verbose #23519 > > |> _assert_eq 0.2 00:18:45 verbose #23520 > > 00:18:45 verbose #23521 > > ╭─[ 94.77ms - stdout ]─────────────────────────────────────────────────────────╮ 00:18:45 verbose #23522 > > │ __assert_eq / actual: 0.6 / expected: 0.6 │ 00:18:45 verbose #23523 > > │ __assert_eq / actual: 0.2 / expected: 0.2 │ 00:18:45 verbose #23524 > > │ │ 00:18:45 verbose #23525 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:45 verbose #23526 > > 00:18:45 verbose #23527 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:45 verbose #23528 > > //// test 00:18:45 verbose #23529 > > 00:18:45 verbose #23530 > > inl x = am'.init_series 0f64 4 0.1 00:18:45 verbose #23531 > > inl y = x |> am'.map_base (velocity_cf 0.1f64 0.6 [[ 0.04; -0.08 ]]) 00:18:45 verbose #23532 > > "car on an air track", "time (s)", "", ;[[ "velocity of car (m/s)", x, y ]] 00:18:46 verbose #23533 > > 00:18:46 verbose #23534 > > ╭─[ 105.02ms - return value ]──────────────────────────────────────────────────╮ 00:18:46 verbose #23535 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:18:46 verbose #23536 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:18:46 verbose #23537 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:18:46 verbose #23538 > > │ stroke="none"/> │ 00:18:46 verbose #23539 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:18:46 verbose #23540 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:46 verbose #23541 > > │ fill="#FFFFFF"> │ 00:18:46 verbose #23542 > > │ car on an air track │ 00:18:46 verbose #23543 > > │ </text> │ 00:18:46 verbose #23544 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="57" y1="424" x2="57" │ 00:18:46 verbose #23545 > > │ y2="75"/> │ 00:18:46 verbose #23546 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:18:46 verbose #23547 > > │ y2="75"/> │ 00:18:46 verbose #23548 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="82" y1="424" x2="82" │ 00:18:46 verbose #23549 > > │ y2="75"/> │ 00:18:46 verbose #23550 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │ 00:18:46 verbose #23551 > > │ y2="75"/> │ 00:18:46 verbose #23552 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="107" y1="424" │ 00:18:46 verbose #23553 > > │ x2="107" y2="75"/> │ 00:18:46 verbose #23554 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:18:46 verbose #23555 > > │ x2="119" y2="75"/> │ 00:18:46 verbose #23556 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="132" y1="424" │ 00:18:46 verbose #23557 > > │ x2="132" y2="75"/> │ 00:18:46 verbose #23558 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" y1="424" │ 00:18:46 verbose #23559 > > │ x2="144" y2="75"/> │ 00:18:46 verbose #23560 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="157" y1="424" │ 00:18:46 verbose #23561 > > │ x2="157" y2="75"/> │ 00:18:46 verbose #23562 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424" │ 00:18:46 verbose #23563 > > │ x2="169" y2="75"/> │ 00:18:46 verbose #23564 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="182" y1="424" │ 00:18:46 verbose #23565 > > │ x2="182" y2="75"/> │ 00:18:46 verbose #23566 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="194" y1="424" │ 00:18:46 verbose #23567 > > │ x2="194" y2="75"/> │ 00:18:46 verbose #23568 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="207" y1="424" │ 00:18:46 verbose #23569 > > │ x2="207" y2="75"/> │ 00:18:46 verbose #23570 > > │ <line opacit...85,209 590,209 "/> │ 00:18:46 verbose #23571 > > │ <text x="617" y="168" dy="0.5ex" text-anchor="end" font-family="sans-serif" │ 00:18:46 verbose #23572 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF"> │ 00:18:46 verbose #23573 > > │ 0.2 │ 00:18:46 verbose #23574 > > │ </text> │ 00:18:46 verbose #23575 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" │ 00:18:46 verbose #23576 > > │ points="585,168 590,168 "/> │ 00:18:46 verbose #23577 > > │ <text x="617" y="127" dy="0.5ex" text-anchor="end" font-family="sans-serif" │ 00:18:46 verbose #23578 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF"> │ 00:18:46 verbose #23579 > > │ 0.4 │ 00:18:46 verbose #23580 > > │ </text> │ 00:18:46 verbose #23581 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" │ 00:18:46 verbose #23582 > > │ points="585,127 590,127 "/> │ 00:18:46 verbose #23583 > > │ <text x="617" y="85" dy="0.5ex" text-anchor="end" font-family="sans-serif" │ 00:18:46 verbose #23584 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF"> │ 00:18:46 verbose #23585 > > │ 0.6 │ 00:18:46 verbose #23586 > > │ </text> │ 00:18:46 verbose #23587 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" │ 00:18:46 verbose #23588 > > │ points="585,85 590,85 "/> │ 00:18:46 verbose #23589 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:18:46 verbose #23590 > > │ points="69,85 82,94 94,102 107,110 119,118 132,127 144,135 157,143 169,151 │ 00:18:46 verbose #23591 > > │ 182,159 194,168 207,176 219,184 232,192 244,201 257,209 269,217 282,225 │ 00:18:46 verbose #23592 > > │ 294,234 307,242 319,250 331,258 344,266 356,275 369,283 381,291 394,299 │ 00:18:46 verbose #23593 > > │ 406,308 419,316 431,324 444,332 456,341 469,349 481,357 494,365 506,373 │ 00:18:46 verbose #23594 > > │ 519,382 531,390 544,398 556,406 569,415 "/> │ 00:18:46 verbose #23595 > > │ <rect x="415" y="235" width="165" height="30" opacity="1" fill="none" │ 00:18:46 verbose #23596 > > │ stroke="#FFFFFF"/> │ 00:18:46 verbose #23597 > > │ <text x="455" y="245" dy="0.76em" text-anchor="start" │ 00:18:46 verbose #23598 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:46 verbose #23599 > > │ fill="#FFFFFF"> │ 00:18:46 verbose #23600 > > │ velocity of car (m/s) │ 00:18:46 verbose #23601 > > │ </text> │ 00:18:46 verbose #23602 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:18:46 verbose #23603 > > │ points="425,250 445,250 "/> │ 00:18:46 verbose #23604 > > │ </svg> │ 00:18:46 verbose #23605 > > │ │ 00:18:46 verbose #23606 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:46 verbose #23607 > > 00:18:46 verbose #23608 > > ╭─[ 108.99ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:46 verbose #23609 > > │ 00:00:06 debug #10 runtime.execute_with_options_async / { options = { │ 00:18:46 verbose #23610 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:18:46 verbose #23611 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:18:46 verbose #23612 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:18:46 verbose #23613 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:18:46 verbose #23614 > > │ 00:00:06 verbose #11 > Creating │ 00:18:46 verbose #23615 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/ca28324d0914f6213d0 │ 00:18:46 verbose #23616 > > │ 165ae9c1e93d26d3b9e674acc73e0947a72dfaf617897.svg │ 00:18:46 verbose #23617 > > │ 00:00:06 debug #12 runtime.execute_with_options_async / { exit_code = │ 00:18:46 verbose #23618 > > │ 0; output_length = 134 } │ 00:18:46 verbose #23619 > > │ │ 00:18:46 verbose #23620 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:46 verbose #23621 > > 00:18:46 verbose #23622 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:46 verbose #23623 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:46 verbose #23624 > > │ ### derivative │ 00:18:46 verbose #23625 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:46 verbose #23626 > > 00:18:46 verbose #23627 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:46 verbose #23628 > > type derivative = (f64 -> f64) -> f64 -> f64 00:18:46 verbose #23629 > > 00:18:46 verbose #23630 > > inl derivative dt : derivative = 00:18:46 verbose #23631 > > fun x t => 00:18:46 verbose #23632 > > (x (t + dt / 2) - x (t - dt / 2)) / dt 00:18:46 verbose #23633 > > 00:18:46 verbose #23634 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:46 verbose #23635 > > //// test 00:18:46 verbose #23636 > > 00:18:46 verbose #23637 > > derivative 1 (fun x => x ** 4 / 4) 1 - 1 00:18:46 verbose #23638 > > |> _assert_approx_eq None 0.25 00:18:46 verbose #23639 > > 00:18:46 verbose #23640 > > derivative 0.001 (fun x => x ** 4 / 4) 1 - 1 00:18:46 verbose #23641 > > |> _assert_approx_eq None 0.0000002499998827953931 00:18:46 verbose #23642 > > 00:18:46 verbose #23643 > > derivative 0.000001 (fun x => x ** 4 / 4) 1 - 1 00:18:46 verbose #23644 > > |> _assert_approx_eq None 0.000000000001000088900582341 00:18:46 verbose #23645 > > 00:18:46 verbose #23646 > > derivative 0.000000001 (fun x => x ** 4 / 4) 1 - 1 00:18:46 verbose #23647 > > |> _assert_approx_eq None 0.00000008274037099909037 00:18:46 verbose #23648 > > 00:18:46 verbose #23649 > > derivative 0.000000000001 (fun x => x ** 4 / 4) 1 - 1 00:18:46 verbose #23650 > > |> _assert_approx_eq None 0.00008890058234101161 00:18:46 verbose #23651 > > 00:18:46 verbose #23652 > > derivative 0.000000000000001 (fun x => x ** 4 / 4) 1 - 1 00:18:46 verbose #23653 > > |> _assert_approx_eq None -0.0007992778373592246 00:18:46 verbose #23654 > > 00:18:46 verbose #23655 > > derivative 0.000000000000000001 (fun x => x ** 4 / 4) 1 - 1 00:18:46 verbose #23656 > > |> _assert_approx_eq None -1 00:18:46 verbose #23657 > > 00:18:46 verbose #23658 > > ╭─[ 107.70ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:46 verbose #23659 > > │ __assert_approx_eq / actual: 0.25 / expected: 0.25 │ 00:18:46 verbose #23660 > > │ __assert_approx_eq / actual: 2.499998828e-07 / expected: 2.499998828e-07 │ 00:18:46 verbose #23661 > > │ __assert_approx_eq / actual: 1.000088901e-12 / expected: 1.000088901e-12 │ 00:18:46 verbose #23662 > > │ __assert_approx_eq / actual: 8.2740371e-08 / expected: 8.2740371e-08 │ 00:18:46 verbose #23663 > > │ __assert_approx_eq / actual: 8.890058234e-05 / expected: 8.890058234e-05 │ 00:18:46 verbose #23664 > > │ __assert_approx_eq / actual: -0.0007992778374 / expected: -0.0007992778374 │ 00:18:46 verbose #23665 > > │ __assert_approx_eq / actual: -1.0 / expected: -1.0 │ 00:18:46 verbose #23666 > > │ │ 00:18:46 verbose #23667 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:46 verbose #23668 > > 00:18:46 verbose #23669 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:46 verbose #23670 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:46 verbose #23671 > > │ ### integration │ 00:18:46 verbose #23672 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:46 verbose #23673 > > 00:18:46 verbose #23674 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:46 verbose #23675 > > type integration = (f64 -> f64) -> f64 -> f64 -> f64 00:18:46 verbose #23676 > > 00:18:46 verbose #23677 > > inl integral dt : integration = 00:18:46 verbose #23678 > > fun f a b => 00:18:46 verbose #23679 > > inl rec loop t y = 00:18:46 verbose #23680 > > if t < b 00:18:46 verbose #23681 > > then loop (t + dt) (y + f t * dt) 00:18:46 verbose #23682 > > else t, y 00:18:46 verbose #23683 > > loop (a + dt / 2) 0 00:18:46 verbose #23684 > > |> snd 00:18:46 verbose #23685 > > 00:18:46 verbose #23686 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:46 verbose #23687 > > //// test 00:18:46 verbose #23688 > > 00:18:46 verbose #23689 > > integral 0.01 math.square 0 1 00:18:46 verbose #23690 > > |> _assert_approx_eq None 0.33332500000000004 00:18:46 verbose #23691 > > 00:18:46 verbose #23692 > > ╭─[ 96.49ms - stdout ]─────────────────────────────────────────────────────────╮ 00:18:46 verbose #23693 > > │ __assert_approx_eq / actual: 0.333325 / expected: 0.333325 │ 00:18:46 verbose #23694 > > │ │ 00:18:46 verbose #23695 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:46 verbose #23696 > > 00:18:46 verbose #23697 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:46 verbose #23698 > > inl integral' dt : integration = 00:18:46 verbose #23699 > > fun f a b => 00:18:46 verbose #23700 > > listm'.init_series (a + dt / 2) (b - dt / 2) dt 00:18:46 verbose #23701 > > |> listm.map (f >> (*) dt) 00:18:46 verbose #23702 > > |> listm'.sum 00:18:46 verbose #23703 > > 00:18:46 verbose #23704 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:46 verbose #23705 > > //// test 00:18:46 verbose #23706 > > 00:18:46 verbose #23707 > > integral' 0.1 math.square 0 1 00:18:46 verbose #23708 > > |> _assert_approx_eq None (integral 0.1 math.square 0 1) 00:18:46 verbose #23709 > > 00:18:46 verbose #23710 > > ╭─[ 93.99ms - stdout ]─────────────────────────────────────────────────────────╮ 00:18:46 verbose #23711 > > │ __assert_approx_eq / actual: 0.3325 / expected: 0.3325 │ 00:18:46 verbose #23712 > > │ │ 00:18:46 verbose #23713 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:46 verbose #23714 > > 00:18:46 verbose #23715 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:46 verbose #23716 > > inl integral'' dt : integration = 00:18:46 verbose #23717 > > fun f x y => 00:18:46 verbose #23718 > > am'.init_series (x + dt / 2) (y - dt / 2) dt 00:18:46 verbose #23719 > > |> fun x => a x : _ int _ 00:18:46 verbose #23720 > > |> am.map (f >> (*) dt) 00:18:46 verbose #23721 > > |> am'.sum 00:18:46 verbose #23722 > > 00:18:46 verbose #23723 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:46 verbose #23724 > > //// test 00:18:46 verbose #23725 > > 00:18:46 verbose #23726 > > integral'' 0.01 math.square 0 1 00:18:46 verbose #23727 > > |> _assert_approx_eq None (integral 0.01 math.square 0 1) 00:18:46 verbose #23728 > > 00:18:46 verbose #23729 > > ╭─[ 201.46ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:46 verbose #23730 > > │ __assert_approx_eq / actual: 0.333325 / expected: 0.333325 │ 00:18:46 verbose #23731 > > │ │ 00:18:46 verbose #23732 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:46 verbose #23733 > > 00:18:46 verbose #23734 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:46 verbose #23735 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:46 verbose #23736 > > │ ### anti_derivative │ 00:18:46 verbose #23737 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:46 verbose #23738 > > 00:18:46 verbose #23739 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:46 verbose #23740 > > inl anti_derivative dt v0 a t = 00:18:46 verbose #23741 > > v0 + integral' dt a 0 t 00:18:47 verbose #23742 > > 00:18:47 verbose #23743 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:47 verbose #23744 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:47 verbose #23745 > > │ ### velocity_ft │ 00:18:47 verbose #23746 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:47 verbose #23747 > > 00:18:47 verbose #23748 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:47 verbose #23749 > > type velocity_ft = mass -> velocity -> list (time -> force) -> (time -> 00:18:47 verbose #23750 > > velocity) 00:18:47 verbose #23751 > > 00:18:47 verbose #23752 > > inl velocity_ft dt : velocity_ft = 00:18:47 verbose #23753 > > fun m v0 fs => 00:18:47 verbose #23754 > > inl f_net t = fs |> listm.map (fun f => f t) |> listm'.sum 00:18:47 verbose #23755 > > inl a t = f_net t / m 00:18:47 verbose #23756 > > anti_derivative dt v0 a 00:18:47 verbose #23757 > > 00:18:47 verbose #23758 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:47 verbose #23759 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:47 verbose #23760 > > │ ### position_ft │ 00:18:47 verbose #23761 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:47 verbose #23762 > > 00:18:47 verbose #23763 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:47 verbose #23764 > > type position_ft = mass -> position -> velocity -> list (time -> force) -> (time 00:18:47 verbose #23765 > > -> position) 00:18:47 verbose #23766 > > 00:18:47 verbose #23767 > > inl position_ft dt : position_ft = 00:18:47 verbose #23768 > > fun m x0 v0 fs => 00:18:47 verbose #23769 > > velocity_ft dt m v0 fs 00:18:47 verbose #23770 > > |> anti_derivative dt x0 00:18:47 verbose #23771 > > 00:18:47 verbose #23772 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:47 verbose #23773 > > //// test 00:18:47 verbose #23774 > > 00:18:47 verbose #23775 > > inl pedal_coast (t : time) : force = 00:18:47 verbose #23776 > > inl t_cycle = 20 00:18:47 verbose #23777 > > inl n_complete : i32 = t / t_cycle |> conv 00:18:47 verbose #23778 > > inl remainder = t - conv n_complete * t_cycle 00:18:47 verbose #23779 > > if remainder > 0 && remainder < 10 00:18:47 verbose #23780 > > then 10 00:18:47 verbose #23781 > > else 0 00:18:47 verbose #23782 > > 00:18:47 verbose #23783 > > inl x = am'.init_series -5f64 45 0.1 00:18:47 verbose #23784 > > inl y = x |> am'.map_base pedal_coast 00:18:47 verbose #23785 > > "child pedaling then coasting", "time (s)", "", ;[[ "force on bike (N)", x, y ]] 00:18:47 verbose #23786 > > 00:18:47 verbose #23787 > > ╭─[ 115.90ms - return value ]──────────────────────────────────────────────────╮ 00:18:47 verbose #23788 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:18:47 verbose #23789 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:18:47 verbose #23790 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:18:47 verbose #23791 > > │ stroke="none"/> │ 00:18:47 verbose #23792 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:18:47 verbose #23793 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:47 verbose #23794 > > │ fill="#FFFFFF"> │ 00:18:47 verbose #23795 > > │ child pedaling then coasting │ 00:18:47 verbose #23796 > > │ </text> │ 00:18:47 verbose #23797 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │ 00:18:47 verbose #23798 > > │ y2="75"/> │ 00:18:47 verbose #23799 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:18:47 verbose #23800 > > │ y2="75"/> │ 00:18:47 verbose #23801 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │ 00:18:47 verbose #23802 > > │ y2="75"/> │ 00:18:47 verbose #23803 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │ 00:18:47 verbose #23804 > > │ y2="75"/> │ 00:18:47 verbose #23805 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │ 00:18:47 verbose #23806 > > │ y2="75"/> │ 00:18:47 verbose #23807 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424" │ 00:18:47 verbose #23808 > > │ x2="109" y2="75"/> │ 00:18:47 verbose #23809 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:18:47 verbose #23810 > > │ x2="119" y2="75"/> │ 00:18:47 verbose #23811 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424" │ 00:18:47 verbose #23812 > > │ x2="129" y2="75"/> │ 00:18:47 verbose #23813 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424" │ 00:18:47 verbose #23814 > > │ x2="139" y2="75"/> │ 00:18:47 verbose #23815 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424" │ 00:18:47 verbose #23816 > > │ x2="149" y2="75"/> │ 00:18:47 verbose #23817 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424" │ 00:18:47 verbose #23818 > > │ x2="159" y2="75"/> │ 00:18:47 verbose #23819 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424" │ 00:18:47 verbose #23820 > > │ x2="169" y2="75"/> │ 00:18:47 verbose #23821 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424" │ 00:18:47 verbose #23822 > > │ x2="179" y2="75"/> │ 00:18:47 verbose #23823 > > │ <line...421,415 422,415 423,415 424,415 425,415 426,415 427,415 428,415 │ 00:18:47 verbose #23824 > > │ 429,415 430,415 431,415 432,415 433,415 434,415 435,415 436,415 437,415 │ 00:18:47 verbose #23825 > > │ 438,415 439,415 440,415 441,415 442,415 443,415 444,415 445,415 446,415 │ 00:18:47 verbose #23826 > > │ 447,415 448,415 449,415 450,415 451,415 452,415 453,415 454,415 455,415 │ 00:18:47 verbose #23827 > > │ 456,415 457,415 458,415 459,415 460,415 461,415 462,415 463,415 464,415 │ 00:18:47 verbose #23828 > > │ 465,415 466,415 467,415 468,415 469,415 470,415 471,415 472,415 473,415 │ 00:18:47 verbose #23829 > > │ 474,415 475,415 476,415 477,415 478,415 479,415 480,415 481,415 482,415 │ 00:18:47 verbose #23830 > > │ 483,415 484,415 485,415 486,415 487,415 488,415 489,415 490,415 491,415 │ 00:18:47 verbose #23831 > > │ 492,415 493,415 494,415 495,415 496,415 497,415 498,415 499,415 500,415 │ 00:18:47 verbose #23832 > > │ 501,415 502,415 503,415 504,415 505,415 506,415 507,415 508,415 509,415 │ 00:18:47 verbose #23833 > > │ 510,415 511,415 512,415 513,415 514,415 515,415 516,415 517,415 518,415 │ 00:18:47 verbose #23834 > > │ 519,415 520,85 521,85 522,85 523,85 524,85 525,85 526,85 527,85 528,85 │ 00:18:47 verbose #23835 > > │ 529,85 530,85 531,85 532,85 533,85 534,85 535,85 536,85 537,85 538,85 539,85 │ 00:18:47 verbose #23836 > > │ 540,85 541,85 542,85 543,85 544,85 545,85 546,85 547,85 548,85 549,85 550,85 │ 00:18:47 verbose #23837 > > │ 551,85 552,85 553,85 554,85 555,85 556,85 557,85 558,85 559,85 560,85 561,85 │ 00:18:47 verbose #23838 > > │ 562,85 563,85 564,85 565,85 566,85 567,85 568,85 569,85 "/> │ 00:18:47 verbose #23839 > > │ <rect x="437" y="235" width="143" height="30" opacity="1" fill="none" │ 00:18:47 verbose #23840 > > │ stroke="#FFFFFF"/> │ 00:18:47 verbose #23841 > > │ <text x="477" y="245" dy="0.76em" text-anchor="start" │ 00:18:47 verbose #23842 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:47 verbose #23843 > > │ fill="#FFFFFF"> │ 00:18:47 verbose #23844 > > │ force on bike (N) │ 00:18:47 verbose #23845 > > │ </text> │ 00:18:47 verbose #23846 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:18:47 verbose #23847 > > │ points="447,250 467,250 "/> │ 00:18:47 verbose #23848 > > │ </svg> │ 00:18:47 verbose #23849 > > │ │ 00:18:47 verbose #23850 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:47 verbose #23851 > > 00:18:47 verbose #23852 > > ╭─[ 120.31ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:47 verbose #23853 > > │ 00:00:07 debug #13 runtime.execute_with_options_async / { options = { │ 00:18:47 verbose #23854 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:18:47 verbose #23855 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:18:47 verbose #23856 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:18:47 verbose #23857 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:18:47 verbose #23858 > > │ 00:00:07 verbose #14 > Creating │ 00:18:47 verbose #23859 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/0ac10ed4fc31e5733d3 │ 00:18:47 verbose #23860 > > │ eadbbffbf047568e7cb8eed5922ef2828dbad94721326.svg │ 00:18:47 verbose #23861 > > │ 00:00:07 debug #15 runtime.execute_with_options_async / { exit_code = │ 00:18:47 verbose #23862 > > │ 0; output_length = 134 } │ 00:18:47 verbose #23863 > > │ │ 00:18:47 verbose #23864 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:47 verbose #23865 > > 00:18:47 verbose #23866 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:47 verbose #23867 > > //// test 00:18:47 verbose #23868 > > 00:18:47 verbose #23869 > > inl x = am'.init_series -5 45 1 00:18:47 verbose #23870 > > inl y = x |> am'.map_base (position_ft 0.1f64 20 0 0 [[ pedal_coast ]]) 00:18:47 verbose #23871 > > "child pedaling then coasting", "time (s)", "", ;[[ "position of bike (m)", x, y 00:18:47 verbose #23872 > > ]] 00:18:47 verbose #23873 > > 00:18:47 verbose #23874 > > ╭─[ 297.09ms - return value ]──────────────────────────────────────────────────╮ 00:18:47 verbose #23875 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:18:47 verbose #23876 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:18:47 verbose #23877 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:18:47 verbose #23878 > > │ stroke="none"/> │ 00:18:47 verbose #23879 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:18:47 verbose #23880 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:47 verbose #23881 > > │ fill="#FFFFFF"> │ 00:18:47 verbose #23882 > > │ child pedaling then coasting │ 00:18:47 verbose #23883 > > │ </text> │ 00:18:47 verbose #23884 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │ 00:18:47 verbose #23885 > > │ y2="75"/> │ 00:18:47 verbose #23886 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:18:47 verbose #23887 > > │ y2="75"/> │ 00:18:47 verbose #23888 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │ 00:18:47 verbose #23889 > > │ y2="75"/> │ 00:18:47 verbose #23890 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │ 00:18:47 verbose #23891 > > │ y2="75"/> │ 00:18:47 verbose #23892 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │ 00:18:47 verbose #23893 > > │ y2="75"/> │ 00:18:47 verbose #23894 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424" │ 00:18:47 verbose #23895 > > │ x2="109" y2="75"/> │ 00:18:47 verbose #23896 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:18:47 verbose #23897 > > │ x2="119" y2="75"/> │ 00:18:47 verbose #23898 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424" │ 00:18:47 verbose #23899 > > │ x2="129" y2="75"/> │ 00:18:47 verbose #23900 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424" │ 00:18:47 verbose #23901 > > │ x2="139" y2="75"/> │ 00:18:47 verbose #23902 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424" │ 00:18:47 verbose #23903 > > │ x2="149" y2="75"/> │ 00:18:47 verbose #23904 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424" │ 00:18:47 verbose #23905 > > │ x2="159" y2="75"/> │ 00:18:47 verbose #23906 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424" │ 00:18:47 verbose #23907 > > │ x2="169" y2="75"/> │ 00:18:47 verbose #23908 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424" │ 00:18:47 verbose #23909 > > │ x2="179" y2="75"/> │ 00:18:47 verbose #23910 > > │ <line...serif" font-size="9.67741935483871" opacity="1" fill="#FFFFFF"> │ 00:18:47 verbose #23911 > > │ 200.0 │ 00:18:47 verbose #23912 > > │ </text> │ 00:18:47 verbose #23913 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" │ 00:18:47 verbose #23914 > > │ points="585,201 590,201 "/> │ 00:18:47 verbose #23915 > > │ <text x="595" y="147" dy="0.5ex" text-anchor="start" │ 00:18:47 verbose #23916 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:47 verbose #23917 > > │ fill="#FFFFFF"> │ 00:18:47 verbose #23918 > > │ 250.0 │ 00:18:47 verbose #23919 > > │ </text> │ 00:18:47 verbose #23920 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" │ 00:18:47 verbose #23921 > > │ points="585,147 590,147 "/> │ 00:18:47 verbose #23922 > > │ <text x="595" y="94" dy="0.5ex" text-anchor="start" font-family="sans-serif" │ 00:18:47 verbose #23923 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF"> │ 00:18:47 verbose #23924 > > │ 300.0 │ 00:18:47 verbose #23925 > > │ </text> │ 00:18:47 verbose #23926 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" │ 00:18:47 verbose #23927 > > │ points="585,94 590,94 "/> │ 00:18:47 verbose #23928 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:18:47 verbose #23929 > > │ points="69,415 79,415 89,415 99,415 109,415 119,415 129,414 139,413 149,412 │ 00:18:47 verbose #23930 > > │ 159,410 169,408 179,405 189,401 199,397 209,393 219,388 229,382 239,377 │ 00:18:47 verbose #23931 > > │ 249,372 259,366 269,361 279,356 289,350 299,345 309,340 319,334 329,329 │ 00:18:47 verbose #23932 > > │ 339,322 349,316 359,308 369,301 379,292 389,284 399,274 409,264 419,254 │ 00:18:47 verbose #23933 > > │ 429,243 439,232 449,221 459,210 469,199 479,189 489,178 499,167 509,157 │ 00:18:47 verbose #23934 > > │ 519,146 529,135 539,123 549,111 559,99 569,85 "/> │ 00:18:47 verbose #23935 > > │ <rect x="421" y="235" width="159" height="30" opacity="1" fill="none" │ 00:18:47 verbose #23936 > > │ stroke="#FFFFFF"/> │ 00:18:47 verbose #23937 > > │ <text x="461" y="245" dy="0.76em" text-anchor="start" │ 00:18:47 verbose #23938 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:47 verbose #23939 > > │ fill="#FFFFFF"> │ 00:18:47 verbose #23940 > > │ position of bike (m) │ 00:18:47 verbose #23941 > > │ </text> │ 00:18:47 verbose #23942 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:18:47 verbose #23943 > > │ points="431,250 451,250 "/> │ 00:18:47 verbose #23944 > > │ </svg> │ 00:18:47 verbose #23945 > > │ │ 00:18:47 verbose #23946 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:47 verbose #23947 > > 00:18:47 verbose #23948 > > ╭─[ 301.59ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:47 verbose #23949 > > │ 00:00:07 debug #16 runtime.execute_with_options_async / { options = { │ 00:18:47 verbose #23950 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:18:47 verbose #23951 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:18:47 verbose #23952 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:18:47 verbose #23953 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:18:47 verbose #23954 > > │ 00:00:07 verbose #17 > Creating │ 00:18:47 verbose #23955 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/111e334258a3fc6398b │ 00:18:47 verbose #23956 > > │ 55a8d561905d49cd0648a39dd06c1856b1cb0e8a9546c.svg │ 00:18:47 verbose #23957 > > │ 00:00:07 debug #18 runtime.execute_with_options_async / { exit_code = │ 00:18:47 verbose #23958 > > │ 0; output_length = 134 } │ 00:18:47 verbose #23959 > > │ │ 00:18:47 verbose #23960 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:47 verbose #23961 > > 00:18:47 verbose #23962 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:47 verbose #23963 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:47 verbose #23964 > > │ ### velocity_fv │ 00:18:47 verbose #23965 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:47 verbose #23966 > > 00:18:47 verbose #23967 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:47 verbose #23968 > > inl newton_second_v m fs v0 = 00:18:47 verbose #23969 > > fs |> listm.map (fun f => f v0) |> listm'.sum |> fun x => x / m 00:18:47 verbose #23970 > > 00:18:47 verbose #23971 > > inl update_velocity dt m fs v0 = 00:18:47 verbose #23972 > > v0 + newton_second_v m fs v0 * dt 00:18:47 verbose #23973 > > 00:18:47 verbose #23974 > > inl velocity_fv dt m v0 fs t = 00:18:47 verbose #23975 > > stream.iterate (update_velocity dt m fs) v0 00:18:47 verbose #23976 > > |> stream.try_item (t / dt |> math.round |> abs) 00:18:47 verbose #23977 > > |> optionm'.default_value 0 00:18:47 verbose #23978 > > 00:18:47 verbose #23979 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:47 verbose #23980 > > inl f_air drag rho area v = 00:18:47 verbose #23981 > > -drag * rho * area * abs v * v / 2 00:18:47 verbose #23982 > > 00:18:47 verbose #23983 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:47 verbose #23984 > > //// test 00:18:47 verbose #23985 > > 00:18:47 verbose #23986 > > inl x = am'.init_series 0 60 0.5 00:18:47 verbose #23987 > > inl y = x |> am'.map_base (velocity_fv 1 70 0f64 [[ fun _ => 100; f_air 2 1.225 00:18:47 verbose #23988 > > 0.6 ]]) 00:18:47 verbose #23989 > > "bike velocity", "time (s)", "", ;[[ "velocity of bike (m/s)", x, y ]] 00:18:48 verbose #23990 > > 00:18:48 verbose #23991 > > ╭─[ 318.82ms - return value ]──────────────────────────────────────────────────╮ 00:18:48 verbose #23992 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:18:48 verbose #23993 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:18:48 verbose #23994 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:18:48 verbose #23995 > > │ stroke="none"/> │ 00:18:48 verbose #23996 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:18:48 verbose #23997 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:48 verbose #23998 > > │ fill="#FFFFFF"> │ 00:18:48 verbose #23999 > > │ bike velocity │ 00:18:48 verbose #24000 > > │ </text> │ 00:18:48 verbose #24001 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" y1="424" x2="61" │ 00:18:48 verbose #24002 > > │ y2="75"/> │ 00:18:48 verbose #24003 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:18:48 verbose #24004 > > │ y2="75"/> │ 00:18:48 verbose #24005 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" y1="424" x2="78" │ 00:18:48 verbose #24006 > > │ y2="75"/> │ 00:18:48 verbose #24007 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" y1="424" x2="86" │ 00:18:48 verbose #24008 > > │ y2="75"/> │ 00:18:48 verbose #24009 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │ 00:18:48 verbose #24010 > > │ y2="75"/> │ 00:18:48 verbose #24011 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="103" y1="424" │ 00:18:48 verbose #24012 > > │ x2="103" y2="75"/> │ 00:18:48 verbose #24013 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="111" y1="424" │ 00:18:48 verbose #24014 > > │ x2="111" y2="75"/> │ 00:18:48 verbose #24015 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:18:48 verbose #24016 > > │ x2="119" y2="75"/> │ 00:18:48 verbose #24017 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="128" y1="424" │ 00:18:48 verbose #24018 > > │ x2="128" y2="75"/> │ 00:18:48 verbose #24019 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="136" y1="424" │ 00:18:48 verbose #24020 > > │ x2="136" y2="75"/> │ 00:18:48 verbose #24021 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" y1="424" │ 00:18:48 verbose #24022 > > │ x2="144" y2="75"/> │ 00:18:48 verbose #24023 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153" y1="424" │ 00:18:48 verbose #24024 > > │ x2="153" y2="75"/> │ 00:18:48 verbose #24025 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="161" y1="424" │ 00:18:48 verbose #24026 > > │ x2="161" y2="75"/> │ 00:18:48 verbose #24027 > > │ <line opacity="1" st...t" font-family="sans-serif" │ 00:18:48 verbose #24028 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF"> │ 00:18:48 verbose #24029 > > │ 12.0 │ 00:18:48 verbose #24030 > > │ </text> │ 00:18:48 verbose #24031 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" │ 00:18:48 verbose #24032 > > │ points="585,76 590,76 "/> │ 00:18:48 verbose #24033 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:18:48 verbose #24034 > > │ points="69,415 74,415 78,374 82,335 86,335 90,335 94,297 99,261 103,261 │ 00:18:48 verbose #24035 > > │ 107,261 111,230 115,202 119,202 124,202 128,179 132,159 136,159 140,159 │ 00:18:48 verbose #24036 > > │ 144,143 148,130 153,130 157,130 161,120 165,112 169,112 173,112 178,106 │ 00:18:48 verbose #24037 > > │ 182,101 186,101 190,101 194,97 198,94 203,94 207,94 211,92 215,91 219,91 │ 00:18:48 verbose #24038 > > │ 223,91 228,89 232,88 236,88 240,88 244,88 248,87 252,87 257,87 261,87 265,86 │ 00:18:48 verbose #24039 > > │ 269,86 273,86 277,86 282,86 286,86 290,86 294,86 298,86 302,86 307,86 311,86 │ 00:18:48 verbose #24040 > > │ 315,86 319,86 323,86 327,86 331,85 336,85 340,85 344,85 348,85 352,85 356,85 │ 00:18:48 verbose #24041 > > │ 361,85 365,85 369,85 373,85 377,85 381,85 386,85 390,85 394,85 398,85 402,85 │ 00:18:48 verbose #24042 > > │ 406,85 410,85 415,85 419,85 423,85 427,85 431,85 435,85 440,85 444,85 448,85 │ 00:18:48 verbose #24043 > > │ 452,85 456,85 460,85 465,85 469,85 473,85 477,85 481,85 485,85 490,85 494,85 │ 00:18:48 verbose #24044 > > │ 498,85 502,85 506,85 510,85 514,85 519,85 523,85 527,85 531,85 535,85 539,85 │ 00:18:48 verbose #24045 > > │ 544,85 548,85 552,85 556,85 560,85 564,85 569,85 "/> │ 00:18:48 verbose #24046 > > │ <rect x="410" y="235" width="170" height="30" opacity="1" fill="none" │ 00:18:48 verbose #24047 > > │ stroke="#FFFFFF"/> │ 00:18:48 verbose #24048 > > │ <text x="450" y="245" dy="0.76em" text-anchor="start" │ 00:18:48 verbose #24049 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:48 verbose #24050 > > │ fill="#FFFFFF"> │ 00:18:48 verbose #24051 > > │ velocity of bike (m/s) │ 00:18:48 verbose #24052 > > │ </text> │ 00:18:48 verbose #24053 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:18:48 verbose #24054 > > │ points="420,250 440,250 "/> │ 00:18:48 verbose #24055 > > │ </svg> │ 00:18:48 verbose #24056 > > │ │ 00:18:48 verbose #24057 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:48 verbose #24058 > > 00:18:48 verbose #24059 > > ╭─[ 323.07ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:48 verbose #24060 > > │ 00:00:08 debug #19 runtime.execute_with_options_async / { options = { │ 00:18:48 verbose #24061 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:18:48 verbose #24062 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:18:48 verbose #24063 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:18:48 verbose #24064 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:18:48 verbose #24065 > > │ 00:00:08 verbose #20 > Creating │ 00:18:48 verbose #24066 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/b1c46a76c7d24517390 │ 00:18:48 verbose #24067 > > │ 9491beb9557fd28414b9dde459da20a63459014535a90.svg │ 00:18:48 verbose #24068 > > │ 00:00:08 debug #21 runtime.execute_with_options_async / { exit_code = │ 00:18:48 verbose #24069 > > │ 0; output_length = 134 } │ 00:18:48 verbose #24070 > > │ │ 00:18:48 verbose #24071 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:48 verbose #24072 > > 00:18:48 verbose #24073 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:48 verbose #24074 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:48 verbose #24075 > > │ ### velocity_ftv │ 00:18:48 verbose #24076 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:48 verbose #24077 > > 00:18:48 verbose #24078 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:48 verbose #24079 > > inl newton_second_tv m fs (t, v0) = 00:18:48 verbose #24080 > > inl f_net = fs |> listm.map (fun f => f (t, v0)) |> listm'.sum 00:18:48 verbose #24081 > > inl acc = f_net / m 00:18:48 verbose #24082 > > 1, acc 00:18:48 verbose #24083 > > 00:18:48 verbose #24084 > > inl update_tv dt m fs (t, v0) = 00:18:48 verbose #24085 > > inl dtdt, dvdt = newton_second_tv m fs (t, v0) 00:18:48 verbose #24086 > > t + dtdt * dt, v0 + dvdt * dt 00:18:48 verbose #24087 > > 00:18:48 verbose #24088 > > inl velocity_ftv dt m tv0 fs t = 00:18:48 verbose #24089 > > stream.iterate (join update_tv dt m fs) tv0 00:18:48 verbose #24090 > > |> stream.try_item (t / dt |> math.round |> abs) 00:18:48 verbose #24091 > > |> optionm.map snd 00:18:48 verbose #24092 > > |> optionm'.default_value 0 00:18:48 verbose #24093 > > 00:18:48 verbose #24094 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:48 verbose #24095 > > //// test 00:18:48 verbose #24096 > > 00:18:48 verbose #24097 > > inl x = am'.init_series 0 100 0.1 00:18:48 verbose #24098 > > inl y = 00:18:48 verbose #24099 > > x 00:18:48 verbose #24100 > > |> am'.map_base ( 00:18:48 verbose #24101 > > velocity_ftv 0.1 20 (dyn (0, 0)) [[ fun (t, _) => pedal_coast t; fun (_, 00:18:48 verbose #24102 > > v) => f_air 2 1.225 0.5 v ]] 00:18:48 verbose #24103 > > ) 00:18:48 verbose #24104 > > "pedaling and coasting with air", "time (s)", "", ;[[ "velocity of bike (m/s)", 00:18:48 verbose #24105 > > x, y ]] 00:18:48 verbose #24106 > > 00:18:48 verbose #24107 > > ╭─[ 248.30ms - return value ]──────────────────────────────────────────────────╮ 00:18:48 verbose #24108 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:18:48 verbose #24109 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:18:48 verbose #24110 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:18:48 verbose #24111 > > │ stroke="none"/> │ 00:18:48 verbose #24112 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:18:48 verbose #24113 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:48 verbose #24114 > > │ fill="#FFFFFF"> │ 00:18:48 verbose #24115 > > │ pedaling and coasting with air │ 00:18:48 verbose #24116 > > │ </text> │ 00:18:48 verbose #24117 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │ 00:18:48 verbose #24118 > > │ y2="75"/> │ 00:18:48 verbose #24119 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:18:48 verbose #24120 > > │ y2="75"/> │ 00:18:48 verbose #24121 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │ 00:18:48 verbose #24122 > > │ y2="75"/> │ 00:18:48 verbose #24123 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │ 00:18:48 verbose #24124 > > │ y2="75"/> │ 00:18:48 verbose #24125 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │ 00:18:48 verbose #24126 > > │ y2="75"/> │ 00:18:48 verbose #24127 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424" │ 00:18:48 verbose #24128 > > │ x2="109" y2="75"/> │ 00:18:48 verbose #24129 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:18:48 verbose #24130 > > │ x2="119" y2="75"/> │ 00:18:48 verbose #24131 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424" │ 00:18:48 verbose #24132 > > │ x2="129" y2="75"/> │ 00:18:48 verbose #24133 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424" │ 00:18:48 verbose #24134 > > │ x2="139" y2="75"/> │ 00:18:48 verbose #24135 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424" │ 00:18:48 verbose #24136 > > │ x2="149" y2="75"/> │ 00:18:48 verbose #24137 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424" │ 00:18:48 verbose #24138 > > │ x2="159" y2="75"/> │ 00:18:48 verbose #24139 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424" │ 00:18:48 verbose #24140 > > │ x2="169" y2="75"/> │ 00:18:48 verbose #24141 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424" │ 00:18:48 verbose #24142 > > │ x2="179" y2="75"/> │ 00:18:48 verbose #24143 > > │ <li... 497,128 497,126 498,125 498,123 499,122 499,121 500,119 500,118 │ 00:18:48 verbose #24144 > > │ 501,117 501,116 502,114 502,113 503,112 503,111 504,110 504,109 505,108 │ 00:18:48 verbose #24145 > > │ 505,107 506,106 506,105 507,104 507,103 508,102 508,101 509,100 509,99 │ 00:18:48 verbose #24146 > > │ 510,98 510,98 511,97 511,96 512,95 512,94 513,94 513,93 514,92 514,92 515,91 │ 00:18:48 verbose #24147 > > │ 515,90 516,90 516,89 517,88 517,88 518,87 518,87 519,86 519,85 520,89 520,93 │ 00:18:48 verbose #24148 > > │ 521,97 521,100 522,104 522,107 523,110 523,114 524,117 524,120 525,123 │ 00:18:48 verbose #24149 > > │ 525,126 526,129 526,132 527,135 527,137 528,140 528,143 529,145 529,148 │ 00:18:48 verbose #24150 > > │ 530,150 530,153 531,155 531,158 532,160 532,162 533,165 533,167 534,169 │ 00:18:48 verbose #24151 > > │ 534,171 535,173 535,175 536,177 536,179 537,181 537,183 538,185 538,187 │ 00:18:48 verbose #24152 > > │ 539,189 539,190 540,192 540,194 541,196 541,197 542,199 542,201 543,202 │ 00:18:48 verbose #24153 > > │ 543,204 544,205 544,207 545,208 545,210 546,211 546,213 547,214 547,216 │ 00:18:48 verbose #24154 > > │ 548,217 548,219 549,220 549,221 550,223 550,224 551,225 551,226 552,228 │ 00:18:48 verbose #24155 > > │ 552,229 553,230 553,231 554,232 554,234 555,235 555,236 556,237 556,238 │ 00:18:48 verbose #24156 > > │ 557,239 557,240 558,241 558,242 559,243 559,245 560,246 560,247 561,248 │ 00:18:48 verbose #24157 > > │ 561,249 562,249 562,250 563,251 563,252 564,253 564,254 565,255 565,256 │ 00:18:48 verbose #24158 > > │ 566,257 566,258 567,259 567,259 568,260 568,261 569,262 "/> │ 00:18:48 verbose #24159 > > │ <rect x="410" y="235" width="170" height="30" opacity="1" fill="none" │ 00:18:48 verbose #24160 > > │ stroke="#FFFFFF"/> │ 00:18:48 verbose #24161 > > │ <text x="450" y="245" dy="0.76em" text-anchor="start" │ 00:18:48 verbose #24162 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:48 verbose #24163 > > │ fill="#FFFFFF"> │ 00:18:48 verbose #24164 > > │ velocity of bike (m/s) │ 00:18:48 verbose #24165 > > │ </text> │ 00:18:48 verbose #24166 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:18:48 verbose #24167 > > │ points="420,250 440,250 "/> │ 00:18:48 verbose #24168 > > │ </svg> │ 00:18:48 verbose #24169 > > │ │ 00:18:48 verbose #24170 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:48 verbose #24171 > > 00:18:48 verbose #24172 > > ╭─[ 252.56ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:48 verbose #24173 > > │ 00:00:08 debug #22 runtime.execute_with_options_async / { options = { │ 00:18:48 verbose #24174 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:18:48 verbose #24175 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:18:48 verbose #24176 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:18:48 verbose #24177 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:18:48 verbose #24178 > > │ 00:00:08 verbose #23 > Creating │ 00:18:48 verbose #24179 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/7ce179a0676b6aeb087 │ 00:18:48 verbose #24180 > > │ 3f38a984563540676d6a701ce833dc3c5e65d8ab7def7.svg │ 00:18:48 verbose #24181 > > │ 00:00:08 debug #24 runtime.execute_with_options_async / { exit_code = │ 00:18:48 verbose #24182 > > │ 0; output_length = 134 } │ 00:18:48 verbose #24183 > > │ │ 00:18:48 verbose #24184 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:48 verbose #24185 > > 00:18:48 verbose #24186 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:48 verbose #24187 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:48 verbose #24188 > > │ ### velocity_ftxv │ 00:18:48 verbose #24189 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:48 verbose #24190 > > 00:18:48 verbose #24191 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:48 verbose #24192 > > nominal state_1d = time * position * velocity 00:18:48 verbose #24193 > > nominal rrr = f64 * f64 * f64 00:18:48 verbose #24194 > > 00:18:48 verbose #24195 > > inl newton_second_1d m fs (state_1d (t, x0, v0)) = 00:18:48 verbose #24196 > > inl f_net = fs |> listm.map (fun f => f (state_1d (t, x0, v0))) |> 00:18:48 verbose #24197 > > listm'.sum 00:18:48 verbose #24198 > > inl acc = f_net / m 00:18:48 verbose #24199 > > rrr (1f64, v0, acc) 00:18:48 verbose #24200 > > 00:18:48 verbose #24201 > > inl euler_1d dt deriv (state_1d (t0, x0, v0) as t) = 00:18:48 verbose #24202 > > inl (rrr (_, _, dvdt)) = deriv t 00:18:48 verbose #24203 > > inl t1 = t0 + dt 00:18:48 verbose #24204 > > inl x1 = x0 + v0 * dt 00:18:48 verbose #24205 > > inl v1 = v0 + dvdt * dt 00:18:48 verbose #24206 > > state_1d (t1, x1, v1) 00:18:48 verbose #24207 > > 00:18:48 verbose #24208 > > inl update_txv dt m fs = 00:18:48 verbose #24209 > > newton_second_1d m fs |> euler_1d dt 00:18:48 verbose #24210 > > 00:18:48 verbose #24211 > > inl states_txv dt m txv0 fs = 00:18:48 verbose #24212 > > seq.iterate_ (update_txv dt m fs) txv0 00:18:48 verbose #24213 > > 00:18:48 verbose #24214 > > inl velocity_1d sts t = 00:18:48 verbose #24215 > > inl (state_1d (t0, _, _)) = sts 0 00:18:48 verbose #24216 > > inl (state_1d (t1, _, _)) = sts 1 00:18:48 verbose #24217 > > inl dt = t1 - t0 00:18:48 verbose #24218 > > inl num_steps = t / dt |> math.round |> abs 00:18:48 verbose #24219 > > inl (state_1d (_, _, v0)) = sts num_steps 00:18:48 verbose #24220 > > v0 00:18:48 verbose #24221 > > 00:18:48 verbose #24222 > > inl velocity_ftxv dt m txv0 fs = 00:18:48 verbose #24223 > > states_txv dt m txv0 fs |> velocity_1d 00:18:48 verbose #24224 > > 00:18:48 verbose #24225 > > inl position_1d sts t = 00:18:48 verbose #24226 > > inl (state_1d (t0, _, _)) = sts 0 00:18:48 verbose #24227 > > inl (state_1d (t1, _, _)) = sts 1 00:18:48 verbose #24228 > > inl dt = t1 - t0 00:18:48 verbose #24229 > > inl num_steps = t / dt |> math.round |> abs 00:18:48 verbose #24230 > > inl (state_1d (_, x0, _)) = sts num_steps 00:18:48 verbose #24231 > > x0 00:18:48 verbose #24232 > > 00:18:48 verbose #24233 > > inl position_ftxv dt m txv0 fs = 00:18:48 verbose #24234 > > states_txv dt m txv0 fs |> position_1d 00:18:48 verbose #24235 > > 00:18:48 verbose #24236 > > inl spring_force k (state_1d (_, x0, _)) = 00:18:48 verbose #24237 > > -k * x0 00:18:48 verbose #24238 > > 00:18:48 verbose #24239 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:48 verbose #24240 > > //// test 00:18:48 verbose #24241 > > 00:18:48 verbose #24242 > > inl damped_ho_forces () = 00:18:48 verbose #24243 > > [[ 00:18:48 verbose #24244 > > spring_force 0.8 00:18:48 verbose #24245 > > fun (state_1d (_, _, v0)) => f_air 2 1.225 (pi * math.square 0.02) v0 00:18:48 verbose #24246 > > fun _ => -0.0027 * 9.80665 00:18:48 verbose #24247 > > ]] 00:18:48 verbose #24248 > > 00:18:48 verbose #24249 > > inl damped_ho_states () = 00:18:48 verbose #24250 > > states_txv 0.001 0.0027 (state_1d (0, 0.1, 0)) (damped_ho_forces ()) 00:18:48 verbose #24251 > > 00:18:48 verbose #24252 > > inl pingpong_position t = 00:18:48 verbose #24253 > > position_ftxv 0.001 0.0027 (state_1d (0, 0.1, 0)) (damped_ho_forces ()) t 00:18:48 verbose #24254 > > 00:18:48 verbose #24255 > > inl x = am'.init_series 0 3 0.01 00:18:48 verbose #24256 > > inl y = x |> am'.map_base pingpong_position 00:18:48 verbose #24257 > > "ping pong ball on a slinky", "time (s)", "", ;[[ "position (m)", x, y ]] 00:18:48 verbose #24258 > > 00:18:48 verbose #24259 > > ╭─[ 137.37ms - return value ]──────────────────────────────────────────────────╮ 00:18:48 verbose #24260 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:18:48 verbose #24261 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:18:48 verbose #24262 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:18:48 verbose #24263 > > │ stroke="none"/> │ 00:18:48 verbose #24264 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:18:48 verbose #24265 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:48 verbose #24266 > > │ fill="#FFFFFF"> │ 00:18:48 verbose #24267 > > │ ping pong ball on a slinky │ 00:18:48 verbose #24268 > > │ </text> │ 00:18:48 verbose #24269 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" y1="424" x2="61" │ 00:18:48 verbose #24270 > > │ y2="75"/> │ 00:18:48 verbose #24271 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:18:48 verbose #24272 > > │ y2="75"/> │ 00:18:48 verbose #24273 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" y1="424" x2="78" │ 00:18:48 verbose #24274 > > │ y2="75"/> │ 00:18:48 verbose #24275 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" y1="424" x2="86" │ 00:18:48 verbose #24276 > > │ y2="75"/> │ 00:18:48 verbose #24277 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │ 00:18:48 verbose #24278 > > │ y2="75"/> │ 00:18:48 verbose #24279 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="103" y1="424" │ 00:18:48 verbose #24280 > > │ x2="103" y2="75"/> │ 00:18:48 verbose #24281 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="111" y1="424" │ 00:18:48 verbose #24282 > > │ x2="111" y2="75"/> │ 00:18:48 verbose #24283 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:18:48 verbose #24284 > > │ x2="119" y2="75"/> │ 00:18:48 verbose #24285 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="128" y1="424" │ 00:18:48 verbose #24286 > > │ x2="128" y2="75"/> │ 00:18:48 verbose #24287 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="136" y1="424" │ 00:18:48 verbose #24288 > > │ x2="136" y2="75"/> │ 00:18:48 verbose #24289 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" y1="424" │ 00:18:48 verbose #24290 > > │ x2="144" y2="75"/> │ 00:18:48 verbose #24291 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153" y1="424" │ 00:18:48 verbose #24292 > > │ x2="153" y2="75"/> │ 00:18:48 verbose #24293 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="161" y1="424" │ 00:18:48 verbose #24294 > > │ x2="161" y2="75"/> │ 00:18:48 verbose #24295 > > │ <line o...88 332,305 334,321 336,334 337,346 339,354 341,360 342,363 344,362 │ 00:18:48 verbose #24296 > > │ 346,359 347,352 349,342 351,330 352,316 354,300 356,283 357,265 359,247 │ 00:18:48 verbose #24297 > > │ 361,229 362,212 364,197 366,183 367,172 369,163 371,156 372,153 374,153 │ 00:18:48 verbose #24298 > > │ 376,156 377,161 379,170 381,181 382,194 384,209 386,226 387,243 389,260 │ 00:18:48 verbose #24299 > > │ 391,277 392,294 394,309 396,323 397,335 399,344 401,351 402,355 404,356 │ 00:18:48 verbose #24300 > > │ 406,354 407,349 409,341 410,331 412,319 414,305 415,289 417,273 419,256 │ 00:18:48 verbose #24301 > > │ 420,239 422,223 424,208 425,194 427,182 429,172 430,165 432,161 434,159 │ 00:18:48 verbose #24302 > > │ 435,160 437,164 439,171 440,180 442,192 444,205 445,220 447,235 449,252 │ 00:18:48 verbose #24303 > > │ 450,268 452,284 454,299 455,313 457,325 459,335 460,342 462,347 464,350 │ 00:18:48 verbose #24304 > > │ 465,349 467,346 469,340 470,332 472,321 474,309 475,295 477,280 479,264 │ 00:18:48 verbose #24305 > > │ 480,248 482,232 484,217 485,204 487,192 489,181 490,173 492,168 494,165 │ 00:18:48 verbose #24306 > > │ 495,165 497,167 499,172 500,180 502,189 504,201 505,215 507,229 509,244 │ 00:18:48 verbose #24307 > > │ 510,260 512,275 514,290 515,303 517,316 519,326 520,335 522,341 524,344 │ 00:18:48 verbose #24308 > > │ 525,345 527,343 529,339 530,332 532,323 534,312 535,300 537,286 539,271 │ 00:18:48 verbose #24309 > > │ 540,256 542,241 544,226 545,213 547,200 549,190 550,181 552,175 554,171 │ 00:18:48 verbose #24310 > > │ 555,169 557,170 559,174 560,180 562,188 564,198 565,210 567,223 569,238 "/> │ 00:18:48 verbose #24311 > > │ <rect x="464" y="235" width="116" height="30" opacity="1" fill="none" │ 00:18:48 verbose #24312 > > │ stroke="#FFFFFF"/> │ 00:18:48 verbose #24313 > > │ <text x="504" y="245" dy="0.76em" text-anchor="start" │ 00:18:48 verbose #24314 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:48 verbose #24315 > > │ fill="#FFFFFF"> │ 00:18:48 verbose #24316 > > │ position (m) │ 00:18:48 verbose #24317 > > │ </text> │ 00:18:48 verbose #24318 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:18:48 verbose #24319 > > │ points="474,250 494,250 "/> │ 00:18:48 verbose #24320 > > │ </svg> │ 00:18:48 verbose #24321 > > │ │ 00:18:48 verbose #24322 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:48 verbose #24323 > > 00:18:48 verbose #24324 > > ╭─[ 141.72ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:48 verbose #24325 > > │ 00:00:08 debug #25 runtime.execute_with_options_async / { options = { │ 00:18:48 verbose #24326 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:18:48 verbose #24327 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:18:48 verbose #24328 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:18:48 verbose #24329 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:18:48 verbose #24330 > > │ 00:00:08 verbose #26 > Creating │ 00:18:48 verbose #24331 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/105ea7be2f329a89809 │ 00:18:48 verbose #24332 > > │ 543cbc25878ca2117d619b4ff6fdec5ae9a8079ac700b.svg │ 00:18:48 verbose #24333 > > │ 00:00:08 debug #27 runtime.execute_with_options_async / { exit_code = │ 00:18:48 verbose #24334 > > │ 0; output_length = 134 } │ 00:18:48 verbose #24335 > > │ │ 00:18:48 verbose #24336 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:48 verbose #24337 > > 00:18:48 verbose #24338 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:48 verbose #24339 > > //// test 00:18:48 verbose #24340 > > 00:18:48 verbose #24341 > > inl pingpong_velocity t = 00:18:48 verbose #24342 > > velocity_ftxv 0.001 0.0027 (state_1d (0, 0.1, 0)) (damped_ho_forces ()) t 00:18:48 verbose #24343 > > 00:18:48 verbose #24344 > > inl x = am'.init_series 0 3 0.01 00:18:48 verbose #24345 > > inl y = x |> am'.map_base pingpong_velocity 00:18:48 verbose #24346 > > "ping pong ball on a slinky", "time (s)", "", ;[[ "velocity (m/s)", x, y ]] 00:18:48 verbose #24347 > > 00:18:48 verbose #24348 > > ╭─[ 147.88ms - return value ]──────────────────────────────────────────────────╮ 00:18:48 verbose #24349 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:18:48 verbose #24350 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:18:48 verbose #24351 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:18:48 verbose #24352 > > │ stroke="none"/> │ 00:18:48 verbose #24353 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:18:48 verbose #24354 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:48 verbose #24355 > > │ fill="#FFFFFF"> │ 00:18:48 verbose #24356 > > │ ping pong ball on a slinky │ 00:18:48 verbose #24357 > > │ </text> │ 00:18:48 verbose #24358 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" y1="424" x2="61" │ 00:18:48 verbose #24359 > > │ y2="75"/> │ 00:18:48 verbose #24360 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:18:48 verbose #24361 > > │ y2="75"/> │ 00:18:48 verbose #24362 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" y1="424" x2="78" │ 00:18:48 verbose #24363 > > │ y2="75"/> │ 00:18:48 verbose #24364 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" y1="424" x2="86" │ 00:18:48 verbose #24365 > > │ y2="75"/> │ 00:18:48 verbose #24366 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" y1="424" x2="94" │ 00:18:48 verbose #24367 > > │ y2="75"/> │ 00:18:48 verbose #24368 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="103" y1="424" │ 00:18:48 verbose #24369 > > │ x2="103" y2="75"/> │ 00:18:48 verbose #24370 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="111" y1="424" │ 00:18:48 verbose #24371 > > │ x2="111" y2="75"/> │ 00:18:48 verbose #24372 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:18:48 verbose #24373 > > │ x2="119" y2="75"/> │ 00:18:48 verbose #24374 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="128" y1="424" │ 00:18:48 verbose #24375 > > │ x2="128" y2="75"/> │ 00:18:48 verbose #24376 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="136" y1="424" │ 00:18:48 verbose #24377 > > │ x2="136" y2="75"/> │ 00:18:48 verbose #24378 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" y1="424" │ 00:18:48 verbose #24379 > > │ x2="144" y2="75"/> │ 00:18:48 verbose #24380 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153" y1="424" │ 00:18:48 verbose #24381 > > │ x2="153" y2="75"/> │ 00:18:48 verbose #24382 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="161" y1="424" │ 00:18:48 verbose #24383 > > │ x2="161" y2="75"/> │ 00:18:48 verbose #24384 > > │ <line o... 332,343 334,332 336,319 337,304 339,287 341,269 342,250 344,231 │ 00:18:48 verbose #24385 > > │ 346,212 347,195 349,178 351,164 352,153 354,144 356,138 357,136 359,136 │ 00:18:48 verbose #24386 > > │ 361,140 362,147 364,157 366,169 367,183 369,199 371,216 372,234 374,253 │ 00:18:48 verbose #24387 > > │ 376,271 377,288 379,304 381,318 382,330 384,339 386,346 387,349 389,349 │ 00:18:48 verbose #24388 > > │ 391,346 392,340 394,332 396,321 397,307 399,292 401,276 402,258 404,241 │ 00:18:48 verbose #24389 > > │ 406,223 407,206 409,190 410,176 412,164 414,154 415,148 417,144 419,143 │ 00:18:48 verbose #24390 > > │ 420,145 422,150 424,158 425,168 427,180 429,194 430,210 432,227 434,244 │ 00:18:48 verbose #24391 > > │ 435,261 437,278 439,293 440,307 442,320 444,330 445,337 447,341 449,343 │ 00:18:48 verbose #24392 > > │ 450,342 452,338 454,331 455,322 457,310 459,297 460,282 462,266 464,249 │ 00:18:48 verbose #24393 > > │ 465,233 467,216 469,201 470,187 472,174 474,164 475,156 477,151 479,149 │ 00:18:48 verbose #24394 > > │ 480,149 482,153 484,159 485,167 487,178 489,190 490,204 492,220 494,236 │ 00:18:48 verbose #24395 > > │ 495,252 497,268 499,283 500,297 502,310 504,320 505,329 507,334 509,337 │ 00:18:48 verbose #24396 > > │ 510,337 512,335 514,330 515,322 517,312 519,300 520,287 522,272 524,257 │ 00:18:48 verbose #24397 > > │ 525,241 527,226 529,210 530,196 532,184 534,173 535,164 537,158 539,154 │ 00:18:48 verbose #24398 > > │ 540,154 542,155 544,160 545,167 547,176 549,187 550,199 552,213 554,228 │ 00:18:48 verbose #24399 > > │ 555,244 557,259 559,274 560,288 562,301 564,312 565,321 567,327 569,332 "/> │ 00:18:48 verbose #24400 > > │ <rect x="454" y="235" width="126" height="30" opacity="1" fill="none" │ 00:18:48 verbose #24401 > > │ stroke="#FFFFFF"/> │ 00:18:48 verbose #24402 > > │ <text x="494" y="245" dy="0.76em" text-anchor="start" │ 00:18:48 verbose #24403 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:48 verbose #24404 > > │ fill="#FFFFFF"> │ 00:18:48 verbose #24405 > > │ velocity (m/s) │ 00:18:48 verbose #24406 > > │ </text> │ 00:18:48 verbose #24407 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:18:48 verbose #24408 > > │ points="464,250 484,250 "/> │ 00:18:48 verbose #24409 > > │ </svg> │ 00:18:48 verbose #24410 > > │ │ 00:18:48 verbose #24411 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:48 verbose #24412 > > 00:18:48 verbose #24413 > > ╭─[ 156.40ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:48 verbose #24414 > > │ 00:00:09 debug #28 runtime.execute_with_options_async / { options = { │ 00:18:48 verbose #24415 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:18:48 verbose #24416 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:18:48 verbose #24417 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:18:48 verbose #24418 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:18:48 verbose #24419 > > │ 00:00:09 verbose #29 > Creating │ 00:18:48 verbose #24420 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/6e1af89de9d77d91499 │ 00:18:48 verbose #24421 > > │ 1731dc22cdee69efe252557400e2aeaa7feb3756058da.svg │ 00:18:48 verbose #24422 > > │ 00:00:09 debug #30 runtime.execute_with_options_async / { exit_code = │ 00:18:48 verbose #24423 > > │ 0; output_length = 134 } │ 00:18:48 verbose #24424 > > │ │ 00:18:48 verbose #24425 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:48 verbose #24426 > > 00:18:48 verbose #24427 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:48 verbose #24428 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:48 verbose #24429 > > │ ### shift │ 00:18:48 verbose #24430 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:48 verbose #24431 > > 00:18:48 verbose #24432 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:48 verbose #24433 > > type update_function s = s -> s 00:18:48 verbose #24434 > > 00:18:48 verbose #24435 > > type differential_equation s ds = s -> ds 00:18:48 verbose #24436 > > 00:18:48 verbose #24437 > > type numerical_method s ds = differential_equation s ds -> update_function s 00:18:48 verbose #24438 > > 00:18:48 verbose #24439 > > 00:18:48 verbose #24440 > > inl solver method = 00:18:48 verbose #24441 > > method >> seq.iterate 00:18:48 verbose #24442 > > inl solver' method = 00:18:48 verbose #24443 > > method >> seq.iterate' 00:18:48 verbose #24444 > > inl solver_ method = 00:18:48 verbose #24445 > > method >> seq.iterate_ 00:18:48 verbose #24446 > > 00:18:48 verbose #24447 > > 00:18:48 verbose #24448 > > inl euler_cromer_1d dt deriv (state_1d (t0, x0, v0) as t) = 00:18:48 verbose #24449 > > inl (rrr (_, _, dvdt)) = deriv t 00:18:48 verbose #24450 > > inl t1 = t0 + dt 00:18:48 verbose #24451 > > inl v1 = v0 + dvdt * dt 00:18:48 verbose #24452 > > inl x1 = x0 + v1 * dt 00:18:48 verbose #24453 > > state_1d (t1, x1, v1) 00:18:48 verbose #24454 > > 00:18:48 verbose #24455 > > inl update_txv_ec dt m fs = 00:18:48 verbose #24456 > > euler_cromer_1d dt (newton_second_1d m fs) 00:18:48 verbose #24457 > > 00:18:48 verbose #24458 > > prototype (+++) ds : ds -> ds -> ds 00:18:48 verbose #24459 > > prototype scale ds : f64 -> ds -> ds 00:18:48 verbose #24460 > > 00:18:48 verbose #24461 > > instance (+++) rrr = fun (rrr (dtdt0, dxdt0, dvdt0)) (rrr (dtdt1, dxdt1, dvdt1)) 00:18:48 verbose #24462 > > => 00:18:48 verbose #24463 > > rrr (dtdt0 + dtdt1, dxdt0 + dxdt1, dvdt0 + dvdt1) 00:18:48 verbose #24464 > > 00:18:48 verbose #24465 > > instance scale rrr = fun w (rrr (dtdt0, dxdt0, dvdt0)) => 00:18:48 verbose #24466 > > rrr (w * dtdt0, w * dxdt0, w * dvdt0) 00:18:48 verbose #24467 > > 00:18:48 verbose #24468 > > prototype shift s : forall ds. f64 -> ds -> s -> s 00:18:48 verbose #24469 > > 00:18:48 verbose #24470 > > instance shift state_1d = fun dt ds (state_1d (t, x, v)) => 00:18:48 verbose #24471 > > inl dtdt, dxdt, dvdt = 00:18:48 verbose #24472 > > real 00:18:48 verbose #24473 > > match ds with 00:18:48 verbose #24474 > > | rrr x => x 00:18:48 verbose #24475 > > | state_1d x => x 00:18:48 verbose #24476 > > state_1d (t + dtdt * dt, x + dxdt * dt, v + dvdt * dt) 00:18:48 verbose #24477 > > 00:18:48 verbose #24478 > > inl euler dt deriv st0 = 00:18:48 verbose #24479 > > shift dt (deriv st0) st0 00:18:48 verbose #24480 > > 00:18:48 verbose #24481 > > inl runge_kutta_4 dt deriv st0 = 00:18:48 verbose #24482 > > inl m0 = deriv st0 00:18:48 verbose #24483 > > inl m1 = deriv (shift (dt / 2) m0 st0) 00:18:48 verbose #24484 > > inl m2 = deriv (shift (dt / 2) m1 st0) 00:18:48 verbose #24485 > > inl m3 = deriv (shift dt m2 st0) 00:18:48 verbose #24486 > > shift (dt / 6) (m0 +++ m1 +++ m1 +++ m2 +++ m2 +++ m3) st0 00:18:48 verbose #24487 > > 00:18:48 verbose #24488 > > inl exponential (_, x0, v0) = 00:18:48 verbose #24489 > > 1f64, v0, x0 00:18:48 verbose #24490 > > 00:18:48 verbose #24491 > > inl of_state_1d (state_1d (t, x, v)) = 00:18:48 verbose #24492 > > t, x, v 00:18:49 verbose #24493 > > 00:18:49 verbose #24494 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:49 verbose #24495 > > //// test 00:18:49 verbose #24496 > > 00:18:49 verbose #24497 > > solver (euler 0.01) (of_state_1d >> exponential >> state_1d) (state_1d (0, 1, 00:18:49 verbose #24498 > > 1)) 800i32 00:18:49 verbose #24499 > > |> _assert_eq (state_1d (7.999999999999874, 2864.8311229272326, 00:18:49 verbose #24500 > > 2864.8311229272326)) 00:18:49 verbose #24501 > > 00:18:49 verbose #24502 > > solver (euler_cromer_1d 0.1) (of_state_1d >> exponential >> rrr) (state_1d (0, 00:18:49 verbose #24503 > > 1, 1)) 80i32 00:18:49 verbose #24504 > > |> _assert_eq (state_1d (7.999999999999988, 3043.379244966009, 00:18:49 verbose #24505 > > 2895.0121485099035)) 00:18:49 verbose #24506 > > 00:18:49 verbose #24507 > > solver (runge_kutta_4 1) (of_state_1d >> exponential >> rrr) (state_1d (0, 1, 00:18:49 verbose #24508 > > 1)) 8i32 00:18:49 verbose #24509 > > |> _assert_eq (state_1d (8.0, 2894.789038540849, 2894.789038540849)) 00:18:49 verbose #24510 > > 00:18:49 verbose #24511 > > ╭─[ 222.95ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:49 verbose #24512 > > │ __assert_eq / actual: struct (8.0, 2864.831123, 2864.831123) / expected: │ 00:18:49 verbose #24513 > > │ struct (8.0, 2864.831123, 2864.831123) │ 00:18:49 verbose #24514 > > │ __assert_eq / actual: struct (8.0, 3043.379245, 2895.012149) / expected: │ 00:18:49 verbose #24515 > > │ struct (8.0, 3043.379245, 2895.012149) │ 00:18:49 verbose #24516 > > │ __assert_eq / actual: struct (8.0, 2894.789039, 2894.789039) / expected: │ 00:18:49 verbose #24517 > > │ struct (8.0, 2894.789039, 2894.789039) │ 00:18:49 verbose #24518 > > │ │ 00:18:49 verbose #24519 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:49 verbose #24520 > > 00:18:49 verbose #24521 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:49 verbose #24522 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:49 verbose #24523 > > │ ### vec │ 00:18:49 verbose #24524 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:49 verbose #24525 > > 00:18:49 verbose #24526 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:49 verbose #24527 > > type vec = 00:18:49 verbose #24528 > > { 00:18:49 verbose #24529 > > x : f64 00:18:49 verbose #24530 > > y : f64 00:18:49 verbose #24531 > > z : f64 00:18:49 verbose #24532 > > } 00:18:49 verbose #24533 > > 00:18:49 verbose #24534 > > inl vec x y z : vec = 00:18:49 verbose #24535 > > { x y z } 00:18:49 verbose #24536 > > 00:18:49 verbose #24537 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:49 verbose #24538 > > //// test 00:18:49 verbose #24539 > > 00:18:49 verbose #24540 > > vec 1 2 3 .z 00:18:49 verbose #24541 > > |> _assert_eq 3 00:18:49 verbose #24542 > > 00:18:49 verbose #24543 > > ╭─[ 102.04ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:49 verbose #24544 > > │ __assert_eq / actual: 3.0 / expected: 3.0 │ 00:18:49 verbose #24545 > > │ │ 00:18:49 verbose #24546 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:49 verbose #24547 > > 00:18:49 verbose #24548 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:49 verbose #24549 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:49 verbose #24550 > > │ #### consts │ 00:18:49 verbose #24551 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:49 verbose #24552 > > 00:18:49 verbose #24553 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:49 verbose #24554 > > inl i_hat () = vec 1 0 0 00:18:49 verbose #24555 > > inl j_hat () = vec 0 1 0 00:18:49 verbose #24556 > > inl k_hat () = vec 0 0 1 00:18:49 verbose #24557 > > inl zero_vec () = vec 0 0 0 00:18:49 verbose #24558 > > 00:18:49 verbose #24559 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:49 verbose #24560 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:49 verbose #24561 > > │ #### ^+^ │ 00:18:49 verbose #24562 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:49 verbose #24563 > > 00:18:49 verbose #24564 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:49 verbose #24565 > > inl (^+^) (a : vec) (b : vec) = 00:18:49 verbose #24566 > > vec (a.x + b.x) (a.y + b.y) (a.z + b.z) 00:18:49 verbose #24567 > > 00:18:49 verbose #24568 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:49 verbose #24569 > > //// test 00:18:49 verbose #24570 > > 00:18:49 verbose #24571 > > vec 1 2 3 ^+^ vec 4 5 6 00:18:49 verbose #24572 > > |> _assert_eq (vec 5 7 9) 00:18:49 verbose #24573 > > 00:18:49 verbose #24574 > > ╭─[ 107.43ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:49 verbose #24575 > > │ __assert_eq / actual: struct (5.0, 7.0, 9.0) / expected: struct (5.0, 7.0, │ 00:18:49 verbose #24576 > > │ 9.0) │ 00:18:49 verbose #24577 > > │ │ 00:18:49 verbose #24578 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:49 verbose #24579 > > 00:18:49 verbose #24580 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:49 verbose #24581 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:49 verbose #24582 > > │ #### sum_vec │ 00:18:49 verbose #24583 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:49 verbose #24584 > > 00:18:49 verbose #24585 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:49 verbose #24586 > > inl sum_vec vs = 00:18:49 verbose #24587 > > vs |> listm.fold (^+^) (zero_vec ()) 00:18:49 verbose #24588 > > 00:18:49 verbose #24589 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:49 verbose #24590 > > //// test 00:18:49 verbose #24591 > > 00:18:49 verbose #24592 > > [[ vec 1 2 3; vec 4 5 6 ]] 00:18:49 verbose #24593 > > |> sum_vec 00:18:49 verbose #24594 > > |> _assert_eq (vec 5 7 9) 00:18:49 verbose #24595 > > 00:18:49 verbose #24596 > > ╭─[ 109.92ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:49 verbose #24597 > > │ __assert_eq / actual: struct (5.0, 7.0, 9.0) / expected: struct (5.0, 7.0, │ 00:18:49 verbose #24598 > > │ 9.0) │ 00:18:49 verbose #24599 > > │ │ 00:18:49 verbose #24600 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:49 verbose #24601 > > 00:18:49 verbose #24602 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:49 verbose #24603 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:49 verbose #24604 > > │ #### *^ │ 00:18:49 verbose #24605 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:49 verbose #24606 > > 00:18:49 verbose #24607 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:49 verbose #24608 > > inl (*^) c { x y z } = 00:18:49 verbose #24609 > > vec (c * x) (c * y) (c * z) 00:18:50 verbose #24610 > > 00:18:50 verbose #24611 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:50 verbose #24612 > > //// test 00:18:50 verbose #24613 > > 00:18:50 verbose #24614 > > 5 *^ vec 1 2 3 00:18:50 verbose #24615 > > |> _assert_eq (vec 5 10 15) 00:18:50 verbose #24616 > > 00:18:50 verbose #24617 > > ╭─[ 101.72ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:50 verbose #24618 > > │ __assert_eq / actual: struct (5.0, 10.0, 15.0) / expected: struct (5.0, │ 00:18:50 verbose #24619 > > │ 10.0, 15.0) │ 00:18:50 verbose #24620 > > │ │ 00:18:50 verbose #24621 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:50 verbose #24622 > > 00:18:50 verbose #24623 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:50 verbose #24624 > > //// test 00:18:50 verbose #24625 > > 00:18:50 verbose #24626 > > 3 *^ i_hat () ^+^ 4 *^ k_hat () 00:18:50 verbose #24627 > > |> _assert_eq (vec 3 0 4) 00:18:50 verbose #24628 > > 00:18:50 verbose #24629 > > ╭─[ 110.21ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:50 verbose #24630 > > │ __assert_eq / actual: struct (3.0, 0.0, 4.0) / expected: struct (3.0, 0.0, │ 00:18:50 verbose #24631 > > │ 4.0) │ 00:18:50 verbose #24632 > > │ │ 00:18:50 verbose #24633 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:50 verbose #24634 > > 00:18:50 verbose #24635 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:50 verbose #24636 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:50 verbose #24637 > > │ #### ^* │ 00:18:50 verbose #24638 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:50 verbose #24639 > > 00:18:50 verbose #24640 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:50 verbose #24641 > > inl (^*) v c = 00:18:50 verbose #24642 > > (*^) c v 00:18:50 verbose #24643 > > 00:18:50 verbose #24644 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:50 verbose #24645 > > //// test 00:18:50 verbose #24646 > > 00:18:50 verbose #24647 > > vec 1 2 3 ^* 5 00:18:50 verbose #24648 > > |> _assert_eq (vec 5 10 15) 00:18:50 verbose #24649 > > 00:18:50 verbose #24650 > > ╭─[ 120.96ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:50 verbose #24651 > > │ __assert_eq / actual: struct (5.0, 10.0, 15.0) / expected: struct (5.0, │ 00:18:50 verbose #24652 > > │ 10.0, 15.0) │ 00:18:50 verbose #24653 > > │ │ 00:18:50 verbose #24654 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:50 verbose #24655 > > 00:18:50 verbose #24656 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:50 verbose #24657 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:50 verbose #24658 > > │ #### ^/ │ 00:18:50 verbose #24659 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:50 verbose #24660 > > 00:18:50 verbose #24661 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:50 verbose #24662 > > inl (^/) { x y z } c = 00:18:50 verbose #24663 > > vec (x / c) (y / c) (z / c) 00:18:50 verbose #24664 > > 00:18:50 verbose #24665 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:50 verbose #24666 > > //// test 00:18:50 verbose #24667 > > 00:18:50 verbose #24668 > > vec 1 2 3 ^/ 5 00:18:50 verbose #24669 > > |> _assert_eq (vec 0.2 0.4 0.6) 00:18:50 verbose #24670 > > 00:18:50 verbose #24671 > > ╭─[ 103.15ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:50 verbose #24672 > > │ __assert_eq / actual: struct (0.2, 0.4, 0.6) / expected: struct (0.2, 0.4, │ 00:18:50 verbose #24673 > > │ 0.6) │ 00:18:50 verbose #24674 > > │ │ 00:18:50 verbose #24675 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:50 verbose #24676 > > 00:18:50 verbose #24677 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:50 verbose #24678 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:50 verbose #24679 > > │ #### negate_vec │ 00:18:50 verbose #24680 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:50 verbose #24681 > > 00:18:50 verbose #24682 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:50 verbose #24683 > > inl negate_vec v = 00:18:50 verbose #24684 > > v ^* -1 00:18:50 verbose #24685 > > 00:18:50 verbose #24686 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:50 verbose #24687 > > //// test 00:18:50 verbose #24688 > > 00:18:50 verbose #24689 > > vec 1 2 3 00:18:50 verbose #24690 > > |> negate_vec 00:18:50 verbose #24691 > > |> _assert_eq (vec -1 -2 -3) 00:18:50 verbose #24692 > > 00:18:50 verbose #24693 > > ╭─[ 109.51ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:50 verbose #24694 > > │ __assert_eq / actual: struct (-1.0, -2.0, -3.0) / expected: struct (-1.0, │ 00:18:50 verbose #24695 > > │ -2.0, -3.0) │ 00:18:50 verbose #24696 > > │ │ 00:18:50 verbose #24697 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:50 verbose #24698 > > 00:18:50 verbose #24699 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:50 verbose #24700 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:50 verbose #24701 > > │ #### ^-^ │ 00:18:50 verbose #24702 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:50 verbose #24703 > > 00:18:50 verbose #24704 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:50 verbose #24705 > > inl (^-^) a b = 00:18:50 verbose #24706 > > a ^+^ (negate_vec b) 00:18:50 verbose #24707 > > 00:18:50 verbose #24708 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:50 verbose #24709 > > //// test 00:18:50 verbose #24710 > > 00:18:50 verbose #24711 > > vec 1 2 3 ^-^ vec 4 5 6 00:18:50 verbose #24712 > > |> _assert_eq (vec -3 -3 -3) 00:18:51 verbose #24713 > > 00:18:51 verbose #24714 > > ╭─[ 109.38ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:51 verbose #24715 > > │ __assert_eq / actual: struct (-3.0, -3.0, -3.0) / expected: struct (-3.0, │ 00:18:51 verbose #24716 > > │ -3.0, -3.0) │ 00:18:51 verbose #24717 > > │ │ 00:18:51 verbose #24718 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:51 verbose #24719 > > 00:18:51 verbose #24720 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:51 verbose #24721 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:51 verbose #24722 > > │ #### <.> │ 00:18:51 verbose #24723 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:51 verbose #24724 > > 00:18:51 verbose #24725 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:51 verbose #24726 > > inl (<.>) { x = ax y = ay z = az } { x = bx y = by z = bz } = 00:18:51 verbose #24727 > > ax * bx + ay * by + az * bz 00:18:51 verbose #24728 > > 00:18:51 verbose #24729 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:51 verbose #24730 > > //// test 00:18:51 verbose #24731 > > 00:18:51 verbose #24732 > > vec 1 2 3 <.> vec 4 5 6 00:18:51 verbose #24733 > > |> _assert_eq 32 00:18:51 verbose #24734 > > 00:18:51 verbose #24735 > > ╭─[ 408.87ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:51 verbose #24736 > > │ __assert_eq / actual: 32.0 / expected: 32.0 │ 00:18:51 verbose #24737 > > │ │ 00:18:51 verbose #24738 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:51 verbose #24739 > > 00:18:51 verbose #24740 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:51 verbose #24741 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:51 verbose #24742 > > │ #### \>\< │ 00:18:51 verbose #24743 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:51 verbose #24744 > > 00:18:51 verbose #24745 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:51 verbose #24746 > > inl (><) (a : vec) (b : vec) = 00:18:51 verbose #24747 > > vec 00:18:51 verbose #24748 > > (a.y * b.z - a.z * b.y) 00:18:51 verbose #24749 > > (a.z * b.x - a.x * b.z) 00:18:51 verbose #24750 > > (a.x * b.y - a.y * b.x) 00:18:51 verbose #24751 > > 00:18:51 verbose #24752 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:51 verbose #24753 > > //// test 00:18:51 verbose #24754 > > 00:18:51 verbose #24755 > > vec 1 2 3 >< vec 4 5 6 00:18:51 verbose #24756 > > |> _assert_eq (vec -3 6 -3) 00:18:51 verbose #24757 > > 00:18:51 verbose #24758 > > ╭─[ 105.25ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:51 verbose #24759 > > │ __assert_eq / actual: struct (-3.0, 6.0, -3.0) / expected: struct (-3.0, │ 00:18:51 verbose #24760 > > │ 6.0, -3.0) │ 00:18:51 verbose #24761 > > │ │ 00:18:51 verbose #24762 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:51 verbose #24763 > > 00:18:51 verbose #24764 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:51 verbose #24765 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:51 verbose #24766 > > │ #### magnitude │ 00:18:51 verbose #24767 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:51 verbose #24768 > > 00:18:51 verbose #24769 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:51 verbose #24770 > > inl magnitude v = 00:18:51 verbose #24771 > > v <.> v |> sqrt 00:18:51 verbose #24772 > > 00:18:51 verbose #24773 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:51 verbose #24774 > > //// test 00:18:51 verbose #24775 > > 00:18:51 verbose #24776 > > vec 1 2 3 00:18:51 verbose #24777 > > |> magnitude 00:18:51 verbose #24778 > > |> _assert_approx_eq None 3.7416573867739413 00:18:52 verbose #24779 > > 00:18:52 verbose #24780 > > ╭─[ 102.55ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:52 verbose #24781 > > │ __assert_approx_eq / actual: 3.741657387 / expected: 3.741657387 │ 00:18:52 verbose #24782 > > │ │ 00:18:52 verbose #24783 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:52 verbose #24784 > > 00:18:52 verbose #24785 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:52 verbose #24786 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:52 verbose #24787 > > │ #### v1 │ 00:18:52 verbose #24788 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:52 verbose #24789 > > 00:18:52 verbose #24790 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:52 verbose #24791 > > inl v1 t = 00:18:52 verbose #24792 > > 2 *^ (t ** 2 *^ i_hat () ^+^ 3 *^ (t ** 3 *^ j_hat () ^+^ t ** 4 *^ k_hat 00:18:52 verbose #24793 > > ())) 00:18:52 verbose #24794 > > 00:18:52 verbose #24795 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:52 verbose #24796 > > //// test 00:18:52 verbose #24797 > > 00:18:52 verbose #24798 > > v1 1 00:18:52 verbose #24799 > > |> _assert_eq (vec 2 6 6) 00:18:52 verbose #24800 > > 00:18:52 verbose #24801 > > ╭─[ 108.89ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:52 verbose #24802 > > │ __assert_eq / actual: struct (2.0, 6.0, 6.0) / expected: struct (2.0, 6.0, │ 00:18:52 verbose #24803 > > │ 6.0) │ 00:18:52 verbose #24804 > > │ │ 00:18:52 verbose #24805 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:52 verbose #24806 > > 00:18:52 verbose #24807 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:52 verbose #24808 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:52 verbose #24809 > > │ #### vec_derivative │ 00:18:52 verbose #24810 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:52 verbose #24811 > > 00:18:52 verbose #24812 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:52 verbose #24813 > > type vec_derivative = (f64 -> vec) -> f64 -> vec 00:18:52 verbose #24814 > > 00:18:52 verbose #24815 > > inl vec_derivative dt : vec_derivative = 00:18:52 verbose #24816 > > fun v t => 00:18:52 verbose #24817 > > (v (t + dt / 2) ^-^ v (t - dt / 2)) ^/ dt 00:18:52 verbose #24818 > > 00:18:52 verbose #24819 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:52 verbose #24820 > > //// test 00:18:52 verbose #24821 > > 00:18:52 verbose #24822 > > vec_derivative 0.01 v1 3 .x 00:18:52 verbose #24823 > > |> _assert_approx_eq None (derivative 0.01 (v1 >> fun v => v.x) 3) 00:18:52 verbose #24824 > > 00:18:52 verbose #24825 > > ╭─[ 114.45ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:52 verbose #24826 > > │ __assert_approx_eq / actual: 12.0 / expected: 12.0 │ 00:18:52 verbose #24827 > > │ │ 00:18:52 verbose #24828 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:52 verbose #24829 > > 00:18:52 verbose #24830 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:52 verbose #24831 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:52 verbose #24832 > > │ ### states_ps │ 00:18:52 verbose #24833 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:52 verbose #24834 > > 00:18:52 verbose #24835 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:52 verbose #24836 > > nominal particle_state = 00:18:52 verbose #24837 > > { 00:18:52 verbose #24838 > > mass : f64 00:18:52 verbose #24839 > > charge : f64 00:18:52 verbose #24840 > > time : f64 00:18:52 verbose #24841 > > pos_vec : vec 00:18:52 verbose #24842 > > velocity : vec 00:18:52 verbose #24843 > > } 00:18:52 verbose #24844 > > 00:18:52 verbose #24845 > > inl default_particle_state () : particle_state = 00:18:52 verbose #24846 > > particle_state { 00:18:52 verbose #24847 > > mass = 1 00:18:52 verbose #24848 > > charge = 0 00:18:52 verbose #24849 > > time = 0 00:18:52 verbose #24850 > > pos_vec = zero_vec () 00:18:52 verbose #24851 > > velocity = zero_vec () 00:18:52 verbose #24852 > > } 00:18:52 verbose #24853 > > 00:18:52 verbose #24854 > > type one_body_force = particle_state -> vec 00:18:52 verbose #24855 > > 00:18:52 verbose #24856 > > nominal d_particle_state = 00:18:52 verbose #24857 > > { 00:18:52 verbose #24858 > > dmdt : f64 00:18:52 verbose #24859 > > dqdt : f64 00:18:52 verbose #24860 > > dtdt : f64 00:18:52 verbose #24861 > > drdt : vec 00:18:52 verbose #24862 > > dvdt : vec 00:18:52 verbose #24863 > > } 00:18:52 verbose #24864 > > 00:18:52 verbose #24865 > > inl newton_second_ps (fs : list one_body_force) (st : particle_state) : 00:18:52 verbose #24866 > > d_particle_state = 00:18:52 verbose #24867 > > inl f_net = fs |> listm.map (fun f => f st) |> sum_vec 00:18:52 verbose #24868 > > d_particle_state { 00:18:52 verbose #24869 > > dmdt = 0 00:18:52 verbose #24870 > > dqdt = 0 00:18:52 verbose #24871 > > dtdt = 1 00:18:52 verbose #24872 > > drdt = st.velocity 00:18:52 verbose #24873 > > dvdt = f_net ^/ st.mass 00:18:52 verbose #24874 > > } 00:18:52 verbose #24875 > > 00:18:52 verbose #24876 > > inl earth_surface_gravity (st : particle_state) = 00:18:52 verbose #24877 > > inl g = 9.80665 00:18:52 verbose #24878 > > -st.mass * g *^ k_hat () 00:18:52 verbose #24879 > > 00:18:52 verbose #24880 > > inl air_resistance drag rho area (st : particle_state) = 00:18:52 verbose #24881 > > -0.5 * drag * rho * area * magnitude st.velocity *^ st.velocity 00:18:52 verbose #24882 > > 00:18:52 verbose #24883 > > inl euler_cromer_ps dt (deriv : particle_state -> d_particle_state) 00:18:52 verbose #24884 > > (particle_state st) = 00:18:52 verbose #24885 > > inl dst : d_particle_state = deriv (particle_state st) 00:18:52 verbose #24886 > > inl v' = st.velocity ^+^ dst.dvdt ^* dt 00:18:52 verbose #24887 > > particle_state { st with 00:18:52 verbose #24888 > > time = st.time + dt 00:18:52 verbose #24889 > > pos_vec = st.pos_vec ^+^ v' ^* dt 00:18:52 verbose #24890 > > velocity = st.velocity ^+^ dst.dvdt ^* dt 00:18:52 verbose #24891 > > } 00:18:52 verbose #24892 > > 00:18:52 verbose #24893 > > instance (+++) d_particle_state = fun (dps : d_particle_state) (dps' : 00:18:52 verbose #24894 > > d_particle_state) => 00:18:52 verbose #24895 > > d_particle_state { 00:18:52 verbose #24896 > > dmdt = dps.dmdt + dps'.dmdt 00:18:52 verbose #24897 > > dqdt = dps.dqdt + dps'.dqdt 00:18:52 verbose #24898 > > dtdt = dps.dtdt + dps'.dtdt 00:18:52 verbose #24899 > > drdt = dps.drdt ^+^ dps'.drdt 00:18:52 verbose #24900 > > dvdt = dps.dvdt ^+^ dps'.dvdt 00:18:52 verbose #24901 > > } 00:18:52 verbose #24902 > > 00:18:52 verbose #24903 > > instance scale d_particle_state = fun w (dps : d_particle_state) => 00:18:52 verbose #24904 > > d_particle_state { 00:18:52 verbose #24905 > > dmdt = w * dps.dmdt 00:18:52 verbose #24906 > > dqdt = w * dps.dqdt 00:18:52 verbose #24907 > > dtdt = w * dps.dtdt 00:18:52 verbose #24908 > > drdt = w *^ dps.drdt 00:18:52 verbose #24909 > > dvdt = w *^ dps.dvdt 00:18:52 verbose #24910 > > } 00:18:52 verbose #24911 > > 00:18:52 verbose #24912 > > instance shift particle_state = fun dt dps (particle_state st) => 00:18:52 verbose #24913 > > inl (d_particle_state dps) = 00:18:52 verbose #24914 > > real 00:18:52 verbose #24915 > > match dps with 00:18:52 verbose #24916 > > | d_particle_state _ => dps 00:18:52 verbose #24917 > > particle_state { st with 00:18:52 verbose #24918 > > time = st.time + dps.dtdt * dt 00:18:52 verbose #24919 > > pos_vec = st.pos_vec ^+^ dps.drdt ^* dt 00:18:52 verbose #24920 > > velocity = st.velocity ^+^ dps.dvdt ^* dt 00:18:52 verbose #24921 > > } 00:18:52 verbose #24922 > > 00:18:52 verbose #24923 > > inl states_ps (method : numerical_method particle_state d_particle_state) : _ -> 00:18:52 verbose #24924 > > _ -> i32 -> particle_state = 00:18:52 verbose #24925 > > newton_second_ps >> method >> seq.iterate_ 00:18:52 verbose #24926 > > 00:18:52 verbose #24927 > > inl z_ge0 sts = 00:18:52 verbose #24928 > > sts 00:18:52 verbose #24929 > > |> seq.take_while_ (fun (particle_state st) _ => st.pos_vec.z >= 0) 00:18:52 verbose #24930 > > 00:18:52 verbose #24931 > > inl trajectory sts = 00:18:52 verbose #24932 > > sts |> listm.map (fun (particle_state st) => st.pos_vec.y, st.pos_vec.z) 00:18:52 verbose #24933 > > 00:18:52 verbose #24934 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:52 verbose #24935 > > //// test 00:18:52 verbose #24936 > > 00:18:52 verbose #24937 > > inl update_ps (method : numerical_method particle_state d_particle_state) = 00:18:52 verbose #24938 > > newton_second_ps >> method 00:18:52 verbose #24939 > > 00:18:52 verbose #24940 > > inl position_ps (method : numerical_method particle_state d_particle_state) fs 00:18:52 verbose #24941 > > st t = 00:18:52 verbose #24942 > > inl states : i32 -> particle_state = states_ps method fs st 00:18:52 verbose #24943 > > inl dt = (states 1).time - (states 0).time 00:18:52 verbose #24944 > > inl num_steps = t / dt |> math.round |> abs 00:18:52 verbose #24945 > > inl st1 = solver' method (newton_second_ps fs) st num_steps 00:18:52 verbose #24946 > > st1.pos_vec 00:18:52 verbose #24947 > > 00:18:52 verbose #24948 > > inl sun_gravity (st : particle_state) : vec = 00:18:52 verbose #24949 > > inl big_g = 0.0000000000667408 00:18:52 verbose #24950 > > inl sun_mass = 1988480000000000000000000000000 00:18:52 verbose #24951 > > -big_g * sun_mass * st.mass *^ st.pos_vec ^/ magnitude st.pos_vec ** 3 00:18:52 verbose #24952 > > 00:18:52 verbose #24953 > > inl wind_force v_wind drag rho area (st : particle_state) = 00:18:52 verbose #24954 > > inl v_rel = st.velocity ^-^ v_wind 00:18:52 verbose #24955 > > -0.5 * drag * rho * area * magnitude v_rel *^ v_rel 00:18:52 verbose #24956 > > 00:18:52 verbose #24957 > > inl rock_state () = 00:18:52 verbose #24958 > > inl (particle_state default_particle_state') = default_particle_state () 00:18:52 verbose #24959 > > particle_state { default_particle_state' with 00:18:52 verbose #24960 > > mass = 2 00:18:52 verbose #24961 > > velocity = vec 3 0 4 00:18:52 verbose #24962 > > } 00:18:52 verbose #24963 > > 00:18:52 verbose #24964 > > inl halley_update dt = 00:18:52 verbose #24965 > > update_ps (euler_cromer_ps dt) [[ sun_gravity ]] 00:18:52 verbose #24966 > > 00:18:52 verbose #24967 > > inl halley_initial () = 00:18:52 verbose #24968 > > inl (particle_state default_particle_state') = default_particle_state () 00:18:52 verbose #24969 > > particle_state { default_particle_state' with 00:18:52 verbose #24970 > > mass = 220000000000000 00:18:52 verbose #24971 > > pos_vec = 87660000000 *^ i_hat () 00:18:52 verbose #24972 > > velocity = 54569 *^ j_hat () 00:18:52 verbose #24973 > > } 00:18:52 verbose #24974 > > 00:18:52 verbose #24975 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:52 verbose #24976 > > //// test 00:18:52 verbose #24977 > > 00:18:52 verbose #24978 > > inl baseball_forces () = 00:18:52 verbose #24979 > > inl area = pi * (0.074 / 2) ** 2 00:18:52 verbose #24980 > > [[ 00:18:52 verbose #24981 > > earth_surface_gravity 00:18:52 verbose #24982 > > air_resistance 0.3 1.225 area 00:18:52 verbose #24983 > > ]] 00:18:52 verbose #24984 > > 00:18:52 verbose #24985 > > inl baseball_trajectory dt v0 theta_deg = 00:18:52 verbose #24986 > > inl theta_rad = theta_deg * pi / 180 00:18:52 verbose #24987 > > inl vy0 = v0 * cos theta_rad 00:18:52 verbose #24988 > > inl vz0 = v0 * sin theta_rad 00:18:52 verbose #24989 > > inl initial_state = 00:18:52 verbose #24990 > > particle_state { 00:18:52 verbose #24991 > > mass = 0.145 00:18:52 verbose #24992 > > charge = 0 00:18:52 verbose #24993 > > time = 0 00:18:52 verbose #24994 > > pos_vec = zero_vec () 00:18:52 verbose #24995 > > velocity = vec 0 vy0 vz0 00:18:52 verbose #24996 > > } 00:18:52 verbose #24997 > > states_ps (euler_cromer_ps dt) (baseball_forces ()) initial_state 00:18:52 verbose #24998 > > >> Some 00:18:52 verbose #24999 > > |> z_ge0 00:18:52 verbose #25000 > > |> trajectory 00:18:52 verbose #25001 > > 00:18:52 verbose #25002 > > inl baseball_range dt v0 theta_deg = 00:18:52 verbose #25003 > > baseball_trajectory dt v0 theta_deg 00:18:52 verbose #25004 > > |> listm.fold (fun _ (y, _) => y) 0 00:18:52 verbose #25005 > > 00:18:52 verbose #25006 > > inl x = am'.init_series 10 80 1 00:18:52 verbose #25007 > > inl y = x |> am'.map_base (baseball_range 0.01 45) 00:18:52 verbose #25008 > > "range for a baseball hit at 45 m/s", 00:18:52 verbose #25009 > > "angle above horizontal (degrees)", 00:18:52 verbose #25010 > > "", 00:18:52 verbose #25011 > > ;[[ "horizontal range (m)", x, y ]] 00:18:53 verbose #25012 > > 00:18:53 verbose #25013 > > ╭─[ 901.95ms - return value ]──────────────────────────────────────────────────╮ 00:18:53 verbose #25014 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:18:53 verbose #25015 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:18:53 verbose #25016 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:18:53 verbose #25017 > > │ stroke="none"/> │ 00:18:53 verbose #25018 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:18:53 verbose #25019 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:53 verbose #25020 > > │ fill="#FFFFFF"> │ 00:18:53 verbose #25021 > > │ range for a baseball hit at 45 m/s │ 00:18:53 verbose #25022 > > │ </text> │ 00:18:53 verbose #25023 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="55" y1="424" x2="55" │ 00:18:53 verbose #25024 > > │ y2="75"/> │ 00:18:53 verbose #25025 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="62" y1="424" x2="62" │ 00:18:53 verbose #25026 > > │ y2="75"/> │ 00:18:53 verbose #25027 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:18:53 verbose #25028 > > │ y2="75"/> │ 00:18:53 verbose #25029 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="77" y1="424" x2="77" │ 00:18:53 verbose #25030 > > │ y2="75"/> │ 00:18:53 verbose #25031 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="84" y1="424" x2="84" │ 00:18:53 verbose #25032 > > │ y2="75"/> │ 00:18:53 verbose #25033 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="91" y1="424" x2="91" │ 00:18:53 verbose #25034 > > │ y2="75"/> │ 00:18:53 verbose #25035 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="98" y1="424" x2="98" │ 00:18:53 verbose #25036 > > │ y2="75"/> │ 00:18:53 verbose #25037 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="105" y1="424" │ 00:18:53 verbose #25038 > > │ x2="105" y2="75"/> │ 00:18:53 verbose #25039 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="112" y1="424" │ 00:18:53 verbose #25040 > > │ x2="112" y2="75"/> │ 00:18:53 verbose #25041 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:18:53 verbose #25042 > > │ x2="119" y2="75"/> │ 00:18:53 verbose #25043 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="127" y1="424" │ 00:18:53 verbose #25044 > > │ x2="127" y2="75"/> │ 00:18:53 verbose #25045 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="134" y1="424" │ 00:18:53 verbose #25046 > > │ x2="134" y2="75"/> │ 00:18:53 verbose #25047 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="141" y1="424" │ 00:18:53 verbose #25048 > > │ x2="141" y2="75"/> │ 00:18:53 verbose #25049 > > │ <li...nts="585,199 590,199 "/> │ 00:18:53 verbose #25050 > > │ <text x="595" y="156" dy="0.5ex" text-anchor="start" │ 00:18:53 verbose #25051 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:53 verbose #25052 > > │ fill="#FFFFFF"> │ 00:18:53 verbose #25053 > > │ 100.0 │ 00:18:53 verbose #25054 > > │ </text> │ 00:18:53 verbose #25055 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" │ 00:18:53 verbose #25056 > > │ points="585,156 590,156 "/> │ 00:18:53 verbose #25057 > > │ <text x="595" y="114" dy="0.5ex" text-anchor="start" │ 00:18:53 verbose #25058 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:53 verbose #25059 > > │ fill="#FFFFFF"> │ 00:18:53 verbose #25060 > > │ 110.0 │ 00:18:53 verbose #25061 > > │ </text> │ 00:18:53 verbose #25062 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" │ 00:18:53 verbose #25063 > > │ points="585,114 590,114 "/> │ 00:18:53 verbose #25064 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:18:53 verbose #25065 > > │ points="69,343 77,325 84,307 91,290 98,275 105,259 112,245 119,231 127,219 │ 00:18:53 verbose #25066 > > │ 134,207 141,196 148,184 155,174 162,164 169,155 176,147 184,139 191,132 │ 00:18:53 verbose #25067 > > │ 198,126 205,119 212,114 219,109 226,104 233,100 241,96 248,93 255,91 262,89 │ 00:18:53 verbose #25068 > > │ 269,88 276,86 283,86 290,85 298,86 305,87 312,88 319,90 326,92 333,95 340,98 │ 00:18:53 verbose #25069 > > │ 348,102 355,106 362,110 369,115 376,120 383,126 390,132 397,139 405,146 │ 00:18:53 verbose #25070 > > │ 412,153 419,161 426,169 433,178 440,187 447,197 454,207 462,217 469,228 │ 00:18:53 verbose #25071 > > │ 476,239 483,250 490,262 497,274 504,287 511,300 519,313 526,326 533,340 │ 00:18:53 verbose #25072 > > │ 540,355 547,369 554,384 561,399 569,415 "/> │ 00:18:53 verbose #25073 > > │ <rect x="421" y="235" width="159" height="30" opacity="1" fill="none" │ 00:18:53 verbose #25074 > > │ stroke="#FFFFFF"/> │ 00:18:53 verbose #25075 > > │ <text x="461" y="245" dy="0.76em" text-anchor="start" │ 00:18:53 verbose #25076 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:53 verbose #25077 > > │ fill="#FFFFFF"> │ 00:18:53 verbose #25078 > > │ horizontal range (m) │ 00:18:53 verbose #25079 > > │ </text> │ 00:18:53 verbose #25080 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:18:53 verbose #25081 > > │ points="431,250 451,250 "/> │ 00:18:53 verbose #25082 > > │ </svg> │ 00:18:53 verbose #25083 > > │ │ 00:18:53 verbose #25084 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:53 verbose #25085 > > 00:18:53 verbose #25086 > > ╭─[ 906.24ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:53 verbose #25087 > > │ 00:00:13 debug #31 runtime.execute_with_options_async / { options = { │ 00:18:53 verbose #25088 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:18:53 verbose #25089 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:18:53 verbose #25090 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:18:53 verbose #25091 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:18:53 verbose #25092 > > │ 00:00:13 verbose #32 > Creating │ 00:18:53 verbose #25093 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/8a3ef67f953e2a32e50 │ 00:18:53 verbose #25094 > > │ 71e8c55259d45275b376bbff5ccca65f5dad1aeac78c0.svg │ 00:18:53 verbose #25095 > > │ 00:00:13 debug #33 runtime.execute_with_options_async / { exit_code = │ 00:18:53 verbose #25096 > > │ 0; output_length = 134 } │ 00:18:53 verbose #25097 > > │ │ 00:18:53 verbose #25098 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:53 verbose #25099 > > 00:18:53 verbose #25100 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:53 verbose #25101 > > //// test 00:18:53 verbose #25102 > > 00:18:53 verbose #25103 > > inl best_angle (min, max) = 00:18:53 verbose #25104 > > let rec loop theta_deg (best_range, best_theta_deg) = 00:18:53 verbose #25105 > > if theta_deg > max 00:18:53 verbose #25106 > > then best_range, best_theta_deg 00:18:53 verbose #25107 > > else 00:18:53 verbose #25108 > > inl range = baseball_range 0.01 45 theta_deg 00:18:53 verbose #25109 > > loop 00:18:53 verbose #25110 > > (theta_deg + 1) 00:18:53 verbose #25111 > > (if range > best_range 00:18:53 verbose #25112 > > then range, theta_deg 00:18:53 verbose #25113 > > else best_range, best_theta_deg) 00:18:53 verbose #25114 > > loop min (0f64, min) 00:18:53 verbose #25115 > > 00:18:53 verbose #25116 > > best_angle (30f64, 60f64) 00:18:53 verbose #25117 > > |> _assert_eq (116.77499158246208, 41) 00:18:54 verbose #25118 > > 00:18:54 verbose #25119 > > ╭─[ 467.33ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:54 verbose #25120 > > │ __assert_eq / actual: struct (116.7749916, 41.0) / expected: struct │ 00:18:54 verbose #25121 > > │ (116.7749916, 41.0) │ 00:18:54 verbose #25122 > > │ │ 00:18:54 verbose #25123 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:54 verbose #25124 > > 00:18:54 verbose #25125 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:54 verbose #25126 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:54 verbose #25127 > > │ ### relativity_ps │ 00:18:54 verbose #25128 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:54 verbose #25129 > > 00:18:54 verbose #25130 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:54 verbose #25131 > > inl relativity_ps fs (st : particle_state) = 00:18:54 verbose #25132 > > inl f_net = fs |> listm.map (fun f => f st) |> sum_vec 00:18:54 verbose #25133 > > inl c = 299792458 00:18:54 verbose #25134 > > inl u = st.velocity ^/ c 00:18:54 verbose #25135 > > inl acc = sqrt (1 - (u <.> u)) *^ (f_net ^-^ (f_net <.> u) *^ u) ^/ st.mass 00:18:54 verbose #25136 > > d_particle_state { 00:18:54 verbose #25137 > > dmdt = 0 00:18:54 verbose #25138 > > dqdt = 0 00:18:54 verbose #25139 > > dtdt = 1 00:18:54 verbose #25140 > > drdt = st.velocity 00:18:54 verbose #25141 > > dvdt = acc 00:18:54 verbose #25142 > > } 00:18:54 verbose #25143 > > 00:18:54 verbose #25144 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:54 verbose #25145 > > //// test 00:18:54 verbose #25146 > > 00:18:54 verbose #25147 > > inl year = 365.25 * 24 * 60 * 60 00:18:54 verbose #25148 > > inl c = 299792458 00:18:54 verbose #25149 > > inl ~method = runge_kutta_4 100000 00:18:54 verbose #25150 > > inl forces = [[ fun _ => 10 *^ i_hat () ]] 00:18:54 verbose #25151 > > inl (particle_state default_particle_state') = default_particle_state () 00:18:54 verbose #25152 > > inl initial_state = 00:18:54 verbose #25153 > > particle_state { default_particle_state' with 00:18:54 verbose #25154 > > mass = 1 00:18:54 verbose #25155 > > } 00:18:54 verbose #25156 > > 00:18:54 verbose #25157 > > inl newton_states = solver_ method (newton_second_ps forces) initial_state 00:18:54 verbose #25158 > > inl relativity_states = solver_ method (relativity_ps forces) initial_state 00:18:54 verbose #25159 > > 00:18:54 verbose #25160 > > inl newton_x, newton_y = 00:18:54 verbose #25161 > > newton_states 00:18:54 verbose #25162 > > >> Some 00:18:54 verbose #25163 > > |> seq.take_while_ (fun (particle_state st) (_ : i32) => st.time <= year) 00:18:54 verbose #25164 > > |> listm.map (fun (particle_state st) => st.time / year, st.velocity.x / c) 00:18:54 verbose #25165 > > |> listm'.unzip 00:18:54 verbose #25166 > > 00:18:54 verbose #25167 > > inl _, relativity_y = 00:18:54 verbose #25168 > > relativity_states 00:18:54 verbose #25169 > > >> Some 00:18:54 verbose #25170 > > |> seq.take_while_ (fun (particle_state st) (_ : i32) => st.time <= year) 00:18:54 verbose #25171 > > |> listm.map (fun (particle_state st) => st.time / year, st.velocity.x / c) 00:18:54 verbose #25172 > > |> listm'.unzip 00:18:54 verbose #25173 > > 00:18:54 verbose #25174 > > inl newton_x = newton_x |> listm'.box |> listm'.to_array' 00:18:54 verbose #25175 > > inl newton_y = newton_y |> listm'.box |> listm'.to_array' 00:18:54 verbose #25176 > > inl relativity_y = relativity_y |> listm'.box |> listm'.to_array' 00:18:54 verbose #25177 > > 00:18:54 verbose #25178 > > "response to a constant force", 00:18:54 verbose #25179 > > "time (years)", 00:18:54 verbose #25180 > > "velocity (multiples of c)", 00:18:54 verbose #25181 > > ;[[ 00:18:54 verbose #25182 > > "newtonian", newton_x, newton_y 00:18:54 verbose #25183 > > "relativistic", newton_x, relativity_y 00:18:54 verbose #25184 > > ]] 00:18:54 verbose #25185 > > 00:18:54 verbose #25186 > > ╭─[ 362.85ms - return value ]──────────────────────────────────────────────────╮ 00:18:54 verbose #25187 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:18:54 verbose #25188 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:18:54 verbose #25189 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:18:54 verbose #25190 > > │ stroke="none"/> │ 00:18:54 verbose #25191 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:18:54 verbose #25192 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:54 verbose #25193 > > │ fill="#FFFFFF"> │ 00:18:54 verbose #25194 > > │ response to a constant force │ 00:18:54 verbose #25195 > > │ </text> │ 00:18:54 verbose #25196 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │ 00:18:54 verbose #25197 > > │ y2="75"/> │ 00:18:54 verbose #25198 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:18:54 verbose #25199 > > │ y2="75"/> │ 00:18:54 verbose #25200 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │ 00:18:54 verbose #25201 > > │ y2="75"/> │ 00:18:54 verbose #25202 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │ 00:18:54 verbose #25203 > > │ y2="75"/> │ 00:18:54 verbose #25204 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │ 00:18:54 verbose #25205 > > │ y2="75"/> │ 00:18:54 verbose #25206 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424" │ 00:18:54 verbose #25207 > > │ x2="109" y2="75"/> │ 00:18:54 verbose #25208 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:18:54 verbose #25209 > > │ x2="119" y2="75"/> │ 00:18:54 verbose #25210 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424" │ 00:18:54 verbose #25211 > > │ x2="129" y2="75"/> │ 00:18:54 verbose #25212 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424" │ 00:18:54 verbose #25213 > > │ x2="139" y2="75"/> │ 00:18:54 verbose #25214 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424" │ 00:18:54 verbose #25215 > > │ x2="149" y2="75"/> │ 00:18:54 verbose #25216 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424" │ 00:18:54 verbose #25217 > > │ x2="159" y2="75"/> │ 00:18:54 verbose #25218 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424" │ 00:18:54 verbose #25219 > > │ x2="169" y2="75"/> │ 00:18:54 verbose #25220 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424" │ 00:18:54 verbose #25221 > > │ x2="179" y2="75"/> │ 00:18:54 verbose #25222 > > │ <line... 393,238 394,238 396,237 397,237 399,236 401,235 402,235 404,234 │ 00:18:54 verbose #25223 > > │ 405,234 407,233 409,233 410,232 412,231 413,231 415,230 416,230 418,229 │ 00:18:54 verbose #25224 > > │ 420,229 421,228 423,228 424,227 426,227 428,226 429,225 431,225 432,224 │ 00:18:54 verbose #25225 > > │ 434,224 435,223 437,223 439,222 440,222 442,221 443,221 445,220 447,220 │ 00:18:54 verbose #25226 > > │ 448,219 450,219 451,218 453,218 454,217 456,217 458,216 459,216 461,215 │ 00:18:54 verbose #25227 > > │ 462,215 464,214 466,214 467,213 469,213 470,213 472,212 473,212 475,211 │ 00:18:54 verbose #25228 > > │ 477,211 478,210 480,210 481,209 483,209 485,208 486,208 488,208 489,207 │ 00:18:54 verbose #25229 > > │ 491,207 492,206 494,206 496,205 497,205 499,204 500,204 502,204 504,203 │ 00:18:54 verbose #25230 > > │ 505,203 507,202 508,202 510,202 511,201 513,201 515,200 516,200 518,200 │ 00:18:54 verbose #25231 > > │ 519,199 521,199 523,198 524,198 526,198 527,197 529,197 531,196 532,196 │ 00:18:54 verbose #25232 > > │ 534,196 535,195 537,195 538,194 540,194 542,194 543,193 545,193 546,193 │ 00:18:54 verbose #25233 > > │ 548,192 550,192 551,192 553,191 554,191 556,190 557,190 559,190 561,189 │ 00:18:54 verbose #25234 > > │ 562,189 564,189 565,188 567,188 569,188 "/> │ 00:18:54 verbose #25235 > > │ <rect x="464" y="227" width="116" height="45" opacity="1" fill="none" │ 00:18:54 verbose #25236 > > │ stroke="#FFFFFF"/> │ 00:18:54 verbose #25237 > > │ <text x="504" y="237" dy="0.76em" text-anchor="start" │ 00:18:54 verbose #25238 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:54 verbose #25239 > > │ fill="#FFFFFF"> │ 00:18:54 verbose #25240 > > │ newtonian │ 00:18:54 verbose #25241 > > │ </text> │ 00:18:54 verbose #25242 > > │ <text x="504" y="252" dy="0.76em" text-anchor="start" │ 00:18:54 verbose #25243 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:54 verbose #25244 > > │ fill="#FFFFFF"> │ 00:18:54 verbose #25245 > > │ relativistic │ 00:18:54 verbose #25246 > > │ </text> │ 00:18:54 verbose #25247 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:18:54 verbose #25248 > > │ points="474,242 494,242 "/> │ 00:18:54 verbose #25249 > > │ <polyline fill="none" opacity="1" stroke="#0000FF" stroke-width="1" │ 00:18:54 verbose #25250 > > │ points="474,257 494,257 "/> │ 00:18:54 verbose #25251 > > │ </svg> │ 00:18:54 verbose #25252 > > │ │ 00:18:54 verbose #25253 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:54 verbose #25254 > > 00:18:54 verbose #25255 > > ╭─[ 367.16ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:54 verbose #25256 > > │ 00:00:14 debug #34 runtime.execute_with_options_async / { options = { │ 00:18:54 verbose #25257 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:18:54 verbose #25258 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:18:54 verbose #25259 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:18:54 verbose #25260 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:18:54 verbose #25261 > > │ 00:00:14 verbose #35 > Creating │ 00:18:54 verbose #25262 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/5e278a736af1809d8dc │ 00:18:54 verbose #25263 > > │ dc13453b35993d336214d079bbcd9b2cf063181d8e59d.svg │ 00:18:54 verbose #25264 > > │ 00:00:14 debug #36 runtime.execute_with_options_async / { exit_code = │ 00:18:54 verbose #25265 > > │ 0; output_length = 134 } │ 00:18:54 verbose #25266 > > │ │ 00:18:54 verbose #25267 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:54 verbose #25268 > > 00:18:54 verbose #25269 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:54 verbose #25270 > > inl uniform_lorentz_force v_e v_b (st : particle_state) = 00:18:54 verbose #25271 > > st.charge *^ (v_e ^+^ st.velocity >< v_b) 00:18:54 verbose #25272 > > 00:18:54 verbose #25273 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:54 verbose #25274 > > //// test 00:18:54 verbose #25275 > > 00:18:54 verbose #25276 > > inl c : f64 = 299792458 00:18:54 verbose #25277 > > inl ~method = runge_kutta_4 0.000000001 00:18:54 verbose #25278 > > inl forces = [[ uniform_lorentz_force (zero_vec ()) (k_hat ()) ]] 00:18:54 verbose #25279 > > inl (particle_state default_particle_state') = default_particle_state () 00:18:54 verbose #25280 > > inl initial_state = 00:18:54 verbose #25281 > > particle_state { default_particle_state' with 00:18:54 verbose #25282 > > mass = 0.000000000000000000000000001672621898 00:18:54 verbose #25283 > > charge = 0.0000000000000000001602176621 00:18:54 verbose #25284 > > velocity = 0.8 *^ (c *^ j_hat ()) 00:18:54 verbose #25285 > > } 00:18:54 verbose #25286 > > 00:18:54 verbose #25287 > > inl newton_states = solver_ method (newton_second_ps forces) initial_state 00:18:54 verbose #25288 > > inl relativity_states = solver_ method (relativity_ps forces) initial_state 00:18:54 verbose #25289 > > 00:18:54 verbose #25290 > > inl newton_x, newton_y = 00:18:54 verbose #25291 > > newton_states 00:18:54 verbose #25292 > > >> Some 00:18:54 verbose #25293 > > |> seq.take_while_ (fun (particle_state st) i => i < 100i32) 00:18:54 verbose #25294 > > |> listm.map (fun (particle_state st) => st.pos_vec.x, st.pos_vec.y) 00:18:54 verbose #25295 > > |> listm'.unzip 00:18:54 verbose #25296 > > 00:18:54 verbose #25297 > > inl relativity_x, relativity_y = 00:18:54 verbose #25298 > > relativity_states 00:18:54 verbose #25299 > > >> Some 00:18:54 verbose #25300 > > |> seq.take_while_ (fun (particle_state st) i => i < 165i32) 00:18:54 verbose #25301 > > |> listm.map (fun (particle_state st) => st.pos_vec.x, st.pos_vec.y) 00:18:54 verbose #25302 > > |> listm'.unzip 00:18:54 verbose #25303 > > 00:18:54 verbose #25304 > > inl newton_x = newton_x |> listm'.box |> listm'.to_array' 00:18:54 verbose #25305 > > inl newton_y = newton_y |> listm'.box |> listm'.to_array' 00:18:54 verbose #25306 > > 00:18:54 verbose #25307 > > inl relativity_x = relativity_x |> listm'.box |> listm'.to_array' 00:18:54 verbose #25308 > > inl relativity_y = relativity_y |> listm'.box |> listm'.to_array' 00:18:54 verbose #25309 > > 00:18:54 verbose #25310 > > "proton in a 1-t magnetic field", 00:18:54 verbose #25311 > > "x (m)", 00:18:54 verbose #25312 > > "y (m)", 00:18:54 verbose #25313 > > ;[[ 00:18:54 verbose #25314 > > "newtonian", newton_x, newton_y 00:18:54 verbose #25315 > > "relativistic", relativity_x, relativity_y 00:18:54 verbose #25316 > > ]] 00:18:54 verbose #25317 > > 00:18:54 verbose #25318 > > ╭─[ 310.44ms - return value ]──────────────────────────────────────────────────╮ 00:18:54 verbose #25319 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:18:54 verbose #25320 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:18:54 verbose #25321 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:18:54 verbose #25322 > > │ stroke="none"/> │ 00:18:54 verbose #25323 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:18:54 verbose #25324 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:54 verbose #25325 > > │ fill="#FFFFFF"> │ 00:18:54 verbose #25326 > > │ proton in a 1-t magnetic field │ 00:18:54 verbose #25327 > > │ </text> │ 00:18:54 verbose #25328 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="58" y1="424" x2="58" │ 00:18:54 verbose #25329 > > │ y2="75"/> │ 00:18:54 verbose #25330 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:18:54 verbose #25331 > > │ y2="75"/> │ 00:18:54 verbose #25332 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="81" y1="424" x2="81" │ 00:18:54 verbose #25333 > > │ y2="75"/> │ 00:18:54 verbose #25334 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="93" y1="424" x2="93" │ 00:18:54 verbose #25335 > > │ y2="75"/> │ 00:18:54 verbose #25336 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="105" y1="424" │ 00:18:54 verbose #25337 > > │ x2="105" y2="75"/> │ 00:18:54 verbose #25338 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="117" y1="424" │ 00:18:54 verbose #25339 > > │ x2="117" y2="75"/> │ 00:18:54 verbose #25340 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424" │ 00:18:54 verbose #25341 > > │ x2="129" y2="75"/> │ 00:18:54 verbose #25342 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="141" y1="424" │ 00:18:54 verbose #25343 > > │ x2="141" y2="75"/> │ 00:18:54 verbose #25344 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153" y1="424" │ 00:18:54 verbose #25345 > > │ x2="153" y2="75"/> │ 00:18:54 verbose #25346 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="165" y1="424" │ 00:18:54 verbose #25347 > > │ x2="165" y2="75"/> │ 00:18:54 verbose #25348 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="177" y1="424" │ 00:18:54 verbose #25349 > > │ x2="177" y2="75"/> │ 00:18:54 verbose #25350 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="189" y1="424" │ 00:18:54 verbose #25351 > > │ x2="189" y2="75"/> │ 00:18:54 verbose #25352 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="201" y1="424" │ 00:18:54 verbose #25353 > > │ x2="201" y2="75"/> │ 00:18:54 verbose #25354 > > │ <...555,197 560,206 563,216 566,225 567,234 568,244 568,253 568,263 566,272 │ 00:18:54 verbose #25355 > > │ 564,281 561,291 557,300 552,309 547,317 540,326 533,334 526,342 517,350 │ 00:18:54 verbose #25356 > > │ 508,357 499,364 488,371 478,377 466,383 455,388 442,393 430,398 417,402 │ 00:18:54 verbose #25357 > > │ 403,405 390,408 376,410 362,412 348,414 333,414 319,415 305,414 290,414 │ 00:18:54 verbose #25358 > > │ 276,412 262,410 248,408 235,405 221,401 208,397 196,393 183,388 171,383 │ 00:18:54 verbose #25359 > > │ 160,377 149,371 139,364 129,357 120,350 112,342 104,334 97,326 91,317 86,309 │ 00:18:54 verbose #25360 > > │ 81,300 77,290 74,281 72,272 70,263 70,253 70,244 71,234 72,225 75,215 78,206 │ 00:18:54 verbose #25361 > > │ 83,197 88,188 93,180 100,171 107,163 115,155 124,148 133,140 143,133 153,127 │ 00:18:54 verbose #25362 > > │ 164,121 176,115 188,110 200,105 213,101 226,97 239,94 253,91 267,89 281,87 │ 00:18:54 verbose #25363 > > │ 295,86 310,85 324,85 338,86 353,87 367,88 381,90 394,93 408,96 421,100 │ 00:18:54 verbose #25364 > > │ 434,104 447,109 459,114 470,119 482,125 492,131 502,138 512,145 520,153 │ 00:18:54 verbose #25365 > > │ 529,161 536,169 543,177 549,186 554,194 558,203 562,213 565,222 567,231 │ 00:18:54 verbose #25366 > > │ 568,241 569,250 "/> │ 00:18:54 verbose #25367 > > │ <rect x="464" y="227" width="116" height="45" opacity="1" fill="none" │ 00:18:54 verbose #25368 > > │ stroke="#FFFFFF"/> │ 00:18:54 verbose #25369 > > │ <text x="504" y="237" dy="0.76em" text-anchor="start" │ 00:18:54 verbose #25370 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:54 verbose #25371 > > │ fill="#FFFFFF"> │ 00:18:54 verbose #25372 > > │ newtonian │ 00:18:54 verbose #25373 > > │ </text> │ 00:18:54 verbose #25374 > > │ <text x="504" y="252" dy="0.76em" text-anchor="start" │ 00:18:54 verbose #25375 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:54 verbose #25376 > > │ fill="#FFFFFF"> │ 00:18:54 verbose #25377 > > │ relativistic │ 00:18:54 verbose #25378 > > │ </text> │ 00:18:54 verbose #25379 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:18:54 verbose #25380 > > │ points="474,242 494,242 "/> │ 00:18:54 verbose #25381 > > │ <polyline fill="none" opacity="1" stroke="#0000FF" stroke-width="1" │ 00:18:54 verbose #25382 > > │ points="474,257 494,257 "/> │ 00:18:54 verbose #25383 > > │ </svg> │ 00:18:54 verbose #25384 > > │ │ 00:18:54 verbose #25385 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:54 verbose #25386 > > 00:18:54 verbose #25387 > > ╭─[ 314.73ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:54 verbose #25388 > > │ 00:00:15 debug #37 runtime.execute_with_options_async / { options = { │ 00:18:54 verbose #25389 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:18:54 verbose #25390 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:18:54 verbose #25391 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:18:54 verbose #25392 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:18:54 verbose #25393 > > │ 00:00:15 verbose #38 > Creating │ 00:18:54 verbose #25394 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/bb8f45eff587eeea2eb │ 00:18:54 verbose #25395 > > │ a0bc2ee5a7127055bf92453772b584569d1b580f6f89c.svg │ 00:18:54 verbose #25396 > > │ 00:00:15 debug #39 runtime.execute_with_options_async / { exit_code = │ 00:18:54 verbose #25397 > > │ 0; output_length = 134 } │ 00:18:54 verbose #25398 > > │ │ 00:18:54 verbose #25399 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:54 verbose #25400 > > 00:18:54 verbose #25401 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:54 verbose #25402 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:54 verbose #25403 > > │ #### system kinetic energy versus time 1 │ 00:18:54 verbose #25404 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:54 verbose #25405 > > 00:18:54 verbose #25406 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:54 verbose #25407 > > //// test 00:18:54 verbose #25408 > > 00:18:54 verbose #25409 > > inl central_force f (particle_state st1) (particle_state st2) = 00:18:54 verbose #25410 > > inl r1 = st1.pos_vec 00:18:54 verbose #25411 > > inl r2 = st2.pos_vec 00:18:54 verbose #25412 > > inl r21 = r2 ^-^ r1 00:18:54 verbose #25413 > > inl r21mag = magnitude r21 00:18:54 verbose #25414 > > f r21mag *^ r21 ^/ r21mag 00:18:54 verbose #25415 > > 00:18:54 verbose #25416 > > inl billiard_force k re = 00:18:54 verbose #25417 > > inl f r = 00:18:54 verbose #25418 > > if r >= re 00:18:54 verbose #25419 > > then 0 00:18:54 verbose #25420 > > else -k * (r - re) 00:18:54 verbose #25421 > > central_force f 00:18:54 verbose #25422 > > 00:18:54 verbose #25423 > > type force_vector = vec 00:18:54 verbose #25424 > > type two_body_force = particle_state -> particle_state -> force_vector 00:18:54 verbose #25425 > > 00:18:54 verbose #25426 > > union force = 00:18:54 verbose #25427 > > | ExternalForce : i32 * one_body_force 00:18:54 verbose #25428 > > | InternalForce : i32 * i32 * two_body_force 00:18:54 verbose #25429 > > 00:18:54 verbose #25430 > > nominal multi_particle_state = list particle_state 00:18:54 verbose #25431 > > 00:18:54 verbose #25432 > > nominal d_multi_particle_state = list d_particle_state 00:18:54 verbose #25433 > > 00:18:54 verbose #25434 > > inl force_on n sts force = 00:18:54 verbose #25435 > > match force with 00:18:54 verbose #25436 > > | ExternalForce (n0, f_one_body) => 00:18:54 verbose #25437 > > if n = n0 00:18:54 verbose #25438 > > then f_one_body 00:18:54 verbose #25439 > > else fun _ => zero_vec () 00:18:54 verbose #25440 > > | InternalForce (n0, n1, f_two_body) => 00:18:54 verbose #25441 > > if n = n0 00:18:54 verbose #25442 > > then f_two_body (sts |> listm'.item n1) 00:18:54 verbose #25443 > > elif n = n1 00:18:54 verbose #25444 > > then f_two_body (sts |> listm'.item n0) 00:18:54 verbose #25445 > > else fun _ => zero_vec () 00:18:54 verbose #25446 > > 00:18:54 verbose #25447 > > inl forces_on n (multi_particle_state sts) fs = 00:18:54 verbose #25448 > > fs |> listm.map (force_on n sts) 00:18:54 verbose #25449 > > 00:18:54 verbose #25450 > > inl newton_second_mps fs (multi_particle_state sts) : d_multi_particle_state = 00:18:54 verbose #25451 > > inl deriv (n, st) = 00:18:54 verbose #25452 > > newton_second_ps (forces_on n (multi_particle_state sts) fs) st 00:18:54 verbose #25453 > > sts |> listm'.indexed |> listm.map deriv |> d_multi_particle_state 00:18:54 verbose #25454 > > 00:18:54 verbose #25455 > > instance (+++) d_multi_particle_state = fun (d_multi_particle_state dsts1) 00:18:54 verbose #25456 > > (d_multi_particle_state dsts2) => 00:18:54 verbose #25457 > > d_multi_particle_state (listm'.zip_with_ (+++) dsts1 dsts2) 00:18:54 verbose #25458 > > 00:18:54 verbose #25459 > > instance scale d_multi_particle_state = fun w (d_multi_particle_state dsts) => 00:18:54 verbose #25460 > > d_multi_particle_state (dsts |> listm.map (scale w)) 00:18:54 verbose #25461 > > 00:18:54 verbose #25462 > > instance shift multi_particle_state = fun dt dsts (multi_particle_state sts) => 00:18:54 verbose #25463 > > inl (d_multi_particle_state dsts) = 00:18:54 verbose #25464 > > real 00:18:54 verbose #25465 > > match dsts with 00:18:54 verbose #25466 > > | d_multi_particle_state _ => dsts 00:18:54 verbose #25467 > > listm'.zip_with_ (shift dt) dsts sts |> multi_particle_state 00:18:54 verbose #25468 > > 00:18:54 verbose #25469 > > inl euler_cromer_mps dt : numerical_method multi_particle_state 00:18:54 verbose #25470 > > d_multi_particle_state = 00:18:54 verbose #25471 > > fun deriv mpst0 => 00:18:54 verbose #25472 > > inl mpst1 = euler dt deriv mpst0 00:18:54 verbose #25473 > > inl (multi_particle_state sts0) = mpst0 00:18:54 verbose #25474 > > inl (multi_particle_state sts1) = mpst1 00:18:54 verbose #25475 > > sts1 00:18:54 verbose #25476 > > |> listm'.zip_ sts0 00:18:54 verbose #25477 > > |> listm.map (fun ((particle_state st0), (particle_state st1)) => 00:18:54 verbose #25478 > > particle_state { 00:18:54 verbose #25479 > > st1 with 00:18:54 verbose #25480 > > pos_vec = st0.pos_vec ^+^ st1.velocity ^* dt 00:18:54 verbose #25481 > > } 00:18:54 verbose #25482 > > ) 00:18:54 verbose #25483 > > |> multi_particle_state 00:18:54 verbose #25484 > > 00:18:54 verbose #25485 > > inl update_mps (method : numerical_method multi_particle_state 00:18:54 verbose #25486 > > d_multi_particle_state) = 00:18:54 verbose #25487 > > newton_second_mps >> method 00:18:54 verbose #25488 > > 00:18:54 verbose #25489 > > inl states_mps (method : numerical_method multi_particle_state 00:18:54 verbose #25490 > > d_multi_particle_state) = 00:18:54 verbose #25491 > > newton_second_mps >> method >> seq.iterate_ 00:18:54 verbose #25492 > > 00:18:54 verbose #25493 > > 00:18:54 verbose #25494 > > inl kinetic_energy (particle_state st) = 00:18:54 verbose #25495 > > inl m = st.mass 00:18:54 verbose #25496 > > inl v = magnitude st.velocity 00:18:54 verbose #25497 > > 0.5 * m * v ** 2 00:18:54 verbose #25498 > > 00:18:54 verbose #25499 > > inl system_ke (multi_particle_state sts) = 00:18:54 verbose #25500 > > sts |> listm.map kinetic_energy |> listm'.sum 00:18:54 verbose #25501 > > 00:18:54 verbose #25502 > > inl linear_spring_pe k re (particle_state st1) (particle_state st2) = 00:18:54 verbose #25503 > > inl r1 = st1.pos_vec 00:18:54 verbose #25504 > > inl r2 = st2.pos_vec 00:18:54 verbose #25505 > > inl r21 = r2 ^-^ r1 00:18:54 verbose #25506 > > inl r21mag = magnitude r21 00:18:54 verbose #25507 > > k * (r21mag - re) ** 2 / 2 00:18:54 verbose #25508 > > 00:18:54 verbose #25509 > > inl earth_surface_gravity_pe (particle_state st) = 00:18:54 verbose #25510 > > inl g = 9.80665 00:18:54 verbose #25511 > > inl m = st.mass 00:18:54 verbose #25512 > > inl z = st.pos_vec.z 00:18:54 verbose #25513 > > m * g * z 00:18:54 verbose #25514 > > 00:18:54 verbose #25515 > > inl two_springs_pe (multi_particle_state sts) = 00:18:54 verbose #25516 > > inl st0 = sts |> listm'.item 0i32 00:18:54 verbose #25517 > > inl st1 = sts |> listm'.item 1i32 00:18:54 verbose #25518 > > linear_spring_pe 100 0.5 (default_particle_state ()) st0 00:18:54 verbose #25519 > > + linear_spring_pe 100 0.5 st0 st1 00:18:54 verbose #25520 > > + earth_surface_gravity_pe st0 00:18:54 verbose #25521 > > + earth_surface_gravity_pe st1 00:18:54 verbose #25522 > > 00:18:54 verbose #25523 > > inl two_springs_me mpst = 00:18:54 verbose #25524 > > system_ke mpst + two_springs_pe mpst 00:18:54 verbose #25525 > > 00:18:54 verbose #25526 > > inl ball_radius () = 0.03 00:18:54 verbose #25527 > > 00:18:54 verbose #25528 > > inl billiard_forces k = 00:18:54 verbose #25529 > > [[ InternalForce (0, 1, billiard_force k (2 * ball_radius ())) ]] 00:18:54 verbose #25530 > > 00:18:54 verbose #25531 > > inl billiard_update n_method k dt = 00:18:54 verbose #25532 > > update_mps (n_method dt) (billiard_forces k) 00:18:54 verbose #25533 > > 00:18:54 verbose #25534 > > inl billiard_initial () = 00:18:54 verbose #25535 > > inl ball_mass = 0.160 00:18:54 verbose #25536 > > inl (particle_state default_particle_state') = default_particle_state () 00:18:54 verbose #25537 > > multi_particle_state [[ 00:18:54 verbose #25538 > > particle_state { 00:18:54 verbose #25539 > > default_particle_state' with 00:18:54 verbose #25540 > > mass = ball_mass 00:18:54 verbose #25541 > > pos_vec = zero_vec () 00:18:54 verbose #25542 > > velocity = 0.2 *^ i_hat () 00:18:54 verbose #25543 > > } 00:18:54 verbose #25544 > > particle_state { 00:18:54 verbose #25545 > > default_particle_state' with 00:18:54 verbose #25546 > > mass = ball_mass 00:18:54 verbose #25547 > > pos_vec = i_hat () ^+^ 0.02 *^ j_hat () 00:18:54 verbose #25548 > > velocity = zero_vec () 00:18:54 verbose #25549 > > } 00:18:54 verbose #25550 > > ]] 00:18:54 verbose #25551 > > 00:18:54 verbose #25552 > > inl billiard_states ~n_method k dt = 00:18:54 verbose #25553 > > states_mps (n_method dt) (billiard_forces k) (billiard_initial ()) 00:18:54 verbose #25554 > > 00:18:54 verbose #25555 > > inl billiard_states_finite n_method k dt = 00:18:54 verbose #25556 > > billiard_states n_method k dt 00:18:54 verbose #25557 > > >> Some 00:18:54 verbose #25558 > > |> seq.take_while_ (fun (multi_particle_state mpst) (_ : i32) => 00:18:54 verbose #25559 > > (mpst |> listm'.item 0i32).time <= 10 00:18:54 verbose #25560 > > ) 00:18:54 verbose #25561 > > 00:18:54 verbose #25562 > > inl momentum (particle_state st) = 00:18:54 verbose #25563 > > inl m = st.mass 00:18:54 verbose #25564 > > inl v = st.velocity 00:18:54 verbose #25565 > > m *^ v 00:18:54 verbose #25566 > > 00:18:54 verbose #25567 > > inl system_p (multi_particle_state sts) = 00:18:54 verbose #25568 > > sts |> listm.map momentum |> sum_vec 00:18:54 verbose #25569 > > 00:18:54 verbose #25570 > > 00:18:54 verbose #25571 > > inl time_ke_ec_x, time_ke_ec_y = 00:18:54 verbose #25572 > > billiard_states_finite euler_cromer_mps 30 0.03 00:18:54 verbose #25573 > > |> listm.map (fun (multi_particle_state mpst) => 00:18:54 verbose #25574 > > (mpst |> listm'.item 0i32).time, system_ke (multi_particle_state mpst) 00:18:54 verbose #25575 > > ) 00:18:54 verbose #25576 > > |> listm'.unzip 00:18:54 verbose #25577 > > 00:18:54 verbose #25578 > > inl time_ke_rk4_x, time_ke_rk4_y = 00:18:54 verbose #25579 > > billiard_states_finite runge_kutta_4 30 0.03 00:18:54 verbose #25580 > > |> listm.map (fun (multi_particle_state mpst) => 00:18:54 verbose #25581 > > (mpst |> listm'.item 0i32).time, system_ke (multi_particle_state mpst) 00:18:54 verbose #25582 > > ) 00:18:54 verbose #25583 > > |> listm'.unzip 00:18:54 verbose #25584 > > 00:18:54 verbose #25585 > > inl time_ke_ec_x = time_ke_ec_x |> listm'.box |> listm'.to_array' 00:18:54 verbose #25586 > > inl time_ke_ec_y = time_ke_ec_y |> listm'.box |> listm'.to_array' 00:18:54 verbose #25587 > > 00:18:54 verbose #25588 > > inl time_ke_rk4_x = time_ke_rk4_x |> listm'.box |> listm'.to_array' 00:18:54 verbose #25589 > > inl time_ke_rk4_y = time_ke_rk4_y |> listm'.box |> listm'.to_array' 00:18:54 verbose #25590 > > 00:18:54 verbose #25591 > > "system kinetic energy versus time", 00:18:54 verbose #25592 > > "time (s)", 00:18:54 verbose #25593 > > "system kinetic energy (j)", 00:18:54 verbose #25594 > > ;[[ 00:18:54 verbose #25595 > > "euler-cromer", time_ke_ec_x, time_ke_ec_y 00:18:54 verbose #25596 > > "runge-kutta 4", time_ke_rk4_x, time_ke_rk4_y 00:18:54 verbose #25597 > > ]] 00:18:56 verbose #25598 > > 00:18:56 verbose #25599 > > ╭─[ 1.15s - return value ]─────────────────────────────────────────────────────╮ 00:18:56 verbose #25600 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:18:56 verbose #25601 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:18:56 verbose #25602 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:18:56 verbose #25603 > > │ stroke="none"/> │ 00:18:56 verbose #25604 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:18:56 verbose #25605 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:56 verbose #25606 > > │ fill="#FFFFFF"> │ 00:18:56 verbose #25607 > > │ system kinetic energy versus time │ 00:18:56 verbose #25608 > > │ </text> │ 00:18:56 verbose #25609 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │ 00:18:56 verbose #25610 > > │ y2="75"/> │ 00:18:56 verbose #25611 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:18:56 verbose #25612 > > │ y2="75"/> │ 00:18:56 verbose #25613 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │ 00:18:56 verbose #25614 > > │ y2="75"/> │ 00:18:56 verbose #25615 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │ 00:18:56 verbose #25616 > > │ y2="75"/> │ 00:18:56 verbose #25617 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │ 00:18:56 verbose #25618 > > │ y2="75"/> │ 00:18:56 verbose #25619 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424" │ 00:18:56 verbose #25620 > > │ x2="109" y2="75"/> │ 00:18:56 verbose #25621 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:18:56 verbose #25622 > > │ x2="119" y2="75"/> │ 00:18:56 verbose #25623 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424" │ 00:18:56 verbose #25624 > > │ x2="129" y2="75"/> │ 00:18:56 verbose #25625 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424" │ 00:18:56 verbose #25626 > > │ x2="139" y2="75"/> │ 00:18:56 verbose #25627 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424" │ 00:18:56 verbose #25628 > > │ x2="149" y2="75"/> │ 00:18:56 verbose #25629 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424" │ 00:18:56 verbose #25630 > > │ x2="159" y2="75"/> │ 00:18:56 verbose #25631 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424" │ 00:18:56 verbose #25632 > > │ x2="169" y2="75"/> │ 00:18:56 verbose #25633 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424" │ 00:18:56 verbose #25634 > > │ x2="179" y2="75"/> │ 00:18:56 verbose #25635 > > │ ...,104 404,104 405,104 407,104 408,104 410,104 411,104 413,104 414,104 │ 00:18:56 verbose #25636 > > │ 416,104 417,104 419,104 420,104 422,104 423,104 425,104 426,104 428,104 │ 00:18:56 verbose #25637 > > │ 429,104 431,104 432,104 434,104 435,104 437,104 438,104 440,104 441,104 │ 00:18:56 verbose #25638 > > │ 443,104 444,104 446,104 447,104 449,104 450,104 452,104 453,104 455,104 │ 00:18:56 verbose #25639 > > │ 456,104 458,104 459,104 461,104 462,104 464,104 465,104 467,104 468,104 │ 00:18:56 verbose #25640 > > │ 470,104 471,104 473,104 474,104 476,104 477,104 479,104 480,104 482,104 │ 00:18:56 verbose #25641 > > │ 483,104 485,104 486,104 488,104 489,104 491,104 492,104 494,104 495,104 │ 00:18:56 verbose #25642 > > │ 497,104 498,104 500,104 501,104 503,104 504,104 506,104 507,104 509,104 │ 00:18:56 verbose #25643 > > │ 510,104 512,104 513,104 515,104 516,104 518,104 519,104 521,104 522,104 │ 00:18:56 verbose #25644 > > │ 524,104 525,104 527,104 528,104 530,104 531,104 533,104 534,104 536,104 │ 00:18:56 verbose #25645 > > │ 537,104 539,104 540,104 542,104 543,104 545,104 546,104 548,104 549,104 │ 00:18:56 verbose #25646 > > │ 551,104 552,104 554,104 555,104 557,104 558,104 560,104 561,104 563,104 │ 00:18:56 verbose #25647 > > │ 564,104 566,104 567,104 569,104 "/> │ 00:18:56 verbose #25648 > > │ <rect x="459" y="227" width="121" height="45" opacity="1" fill="none" │ 00:18:56 verbose #25649 > > │ stroke="#FFFFFF"/> │ 00:18:56 verbose #25650 > > │ <text x="499" y="237" dy="0.76em" text-anchor="start" │ 00:18:56 verbose #25651 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:56 verbose #25652 > > │ fill="#FFFFFF"> │ 00:18:56 verbose #25653 > > │ euler-cromer │ 00:18:56 verbose #25654 > > │ </text> │ 00:18:56 verbose #25655 > > │ <text x="499" y="252" dy="0.76em" text-anchor="start" │ 00:18:56 verbose #25656 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:56 verbose #25657 > > │ fill="#FFFFFF"> │ 00:18:56 verbose #25658 > > │ runge-kutta 4 │ 00:18:56 verbose #25659 > > │ </text> │ 00:18:56 verbose #25660 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:18:56 verbose #25661 > > │ points="469,242 489,242 "/> │ 00:18:56 verbose #25662 > > │ <polyline fill="none" opacity="1" stroke="#0000FF" stroke-width="1" │ 00:18:56 verbose #25663 > > │ points="469,257 489,257 "/> │ 00:18:56 verbose #25664 > > │ </svg> │ 00:18:56 verbose #25665 > > │ │ 00:18:56 verbose #25666 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:56 verbose #25667 > > 00:18:56 verbose #25668 > > ╭─[ 1.16s - stdout ]───────────────────────────────────────────────────────────╮ 00:18:56 verbose #25669 > > │ 00:00:16 debug #40 runtime.execute_with_options_async / { options = { │ 00:18:56 verbose #25670 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:18:56 verbose #25671 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:18:56 verbose #25672 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:18:56 verbose #25673 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:18:56 verbose #25674 > > │ 00:00:16 verbose #41 > Creating │ 00:18:56 verbose #25675 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/6c2e10892d6afcf0c02 │ 00:18:56 verbose #25676 > > │ bfe44bc49895c6de5037e535b9df0fb226e37177775eb.svg │ 00:18:56 verbose #25677 > > │ 00:00:16 debug #42 runtime.execute_with_options_async / { exit_code = │ 00:18:56 verbose #25678 > > │ 0; output_length = 134 } │ 00:18:56 verbose #25679 > > │ │ 00:18:56 verbose #25680 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:56 verbose #25681 > > 00:18:56 verbose #25682 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:56 verbose #25683 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:56 verbose #25684 > > │ #### wave 1 │ 00:18:56 verbose #25685 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:56 verbose #25686 > > 00:18:56 verbose #25687 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:56 verbose #25688 > > //// test 00:18:56 verbose #25689 > > 00:18:56 verbose #25690 > > inl linear_spring k re (particle_state st1) (particle_state st2) = 00:18:56 verbose #25691 > > inl r1 = st1.pos_vec 00:18:56 verbose #25692 > > inl r2 = st2.pos_vec 00:18:56 verbose #25693 > > inl r21 = r2 ^-^ r1 00:18:56 verbose #25694 > > inl r21mag = magnitude r21 00:18:56 verbose #25695 > > -k * (r21mag - re) *^ r21 ^/ r21mag 00:18:56 verbose #25696 > > 00:18:56 verbose #25697 > > inl fixed_linear_spring k re r1 = 00:18:56 verbose #25698 > > inl (particle_state default_particle_state') = default_particle_state () 00:18:56 verbose #25699 > > linear_spring k re (particle_state { default_particle_state' with pos_vec = 00:18:56 verbose #25700 > > r1 }) 00:18:56 verbose #25701 > > 00:18:56 verbose #25702 > > inl forces_string () = 00:18:56 verbose #25703 > > [[ 00:18:56 verbose #25704 > > ExternalForce (0, fixed_linear_spring 5384 0 (zero_vec ())) 00:18:56 verbose #25705 > > ExternalForce (63, fixed_linear_spring 5384 0 (0.65 *^ i_hat ())) 00:18:56 verbose #25706 > > ]] ++ ( 00:18:56 verbose #25707 > > listm'.init_series 0 59 1 00:18:56 verbose #25708 > > |> listm.map (fun n => InternalForce (n, n + 1, linear_spring 5384 0)) 00:18:56 verbose #25709 > > ) 00:18:56 verbose #25710 > > 00:18:56 verbose #25711 > > inl string_update dt = 00:18:56 verbose #25712 > > update_mps (runge_kutta_4 dt) (forces_string ()) 00:18:56 verbose #25713 > > 00:18:56 verbose #25714 > > inl string_initial_overtone n = 00:18:56 verbose #25715 > > inl ball_mass = 0.0008293 * 0.65 / 64 00:18:56 verbose #25716 > > inl (particle_state default_particle_state') = default_particle_state () 00:18:56 verbose #25717 > > listm'.init_series 0.01 0.64 0.01 00:18:56 verbose #25718 > > |> listm.map (fun x => 00:18:56 verbose #25719 > > inl y = 0.005 * sin (conv n * pi * x / 0.65) 00:18:56 verbose #25720 > > particle_state { 00:18:56 verbose #25721 > > default_particle_state' with 00:18:56 verbose #25722 > > mass = ball_mass 00:18:56 verbose #25723 > > pos_vec = x *^ i_hat () ^+^ y *^ j_hat () 00:18:56 verbose #25724 > > velocity = zero_vec () 00:18:56 verbose #25725 > > } 00:18:56 verbose #25726 > > ) 00:18:56 verbose #25727 > > |> multi_particle_state 00:18:56 verbose #25728 > > 00:18:56 verbose #25729 > > inl string_initial_pluck () = 00:18:56 verbose #25730 > > inl ball_mass = 0.0008293 * 0.65 / 64 00:18:56 verbose #25731 > > inl (particle_state default_particle_state') = default_particle_state () 00:18:56 verbose #25732 > > listm'.init_series 0.01 0.64 0.01 00:18:56 verbose #25733 > > |> listm.map (fun x => 00:18:56 verbose #25734 > > inl y = 00:18:56 verbose #25735 > > inl n = if x <= 0.51 then 0 else 0.65 00:18:56 verbose #25736 > > 0.005 / (0.51 - n) * (x - n) 00:18:56 verbose #25737 > > particle_state { 00:18:56 verbose #25738 > > default_particle_state' with 00:18:56 verbose #25739 > > mass = ball_mass 00:18:56 verbose #25740 > > pos_vec = x *^ i_hat () ^+^ y *^ j_hat () 00:18:56 verbose #25741 > > velocity = zero_vec () 00:18:56 verbose #25742 > > } 00:18:56 verbose #25743 > > ) 00:18:56 verbose #25744 > > |> multi_particle_state 00:18:56 verbose #25745 > > 00:18:56 verbose #25746 > > let main () = 00:18:56 verbose #25747 > > inl ~frames = listm'.init_series 0 9 1f64 00:18:56 verbose #25748 > > inl initial_state = string_initial_overtone 3i32 00:18:56 verbose #25749 > > inl frames = 00:18:56 verbose #25750 > > frames 00:18:56 verbose #25751 > > |> listm.map (fun n => 00:18:56 verbose #25752 > > inl (multi_particle_state sts) = 00:18:56 verbose #25753 > > seq.iterate' (string_update 0.000025) initial_state |> fun f => 00:18:56 verbose #25754 > > f 0f64 00:18:56 verbose #25755 > > inl rs = 00:18:56 verbose #25756 > > [[ zero_vec () ]] 00:18:56 verbose #25757 > > ++ (sts |> listm.map (fun (particle_state st) => st.pos_vec)) 00:18:56 verbose #25758 > > ++ [[ 0.65 *^ i_hat () ]] 00:18:56 verbose #25759 > > inl x, y = 00:18:56 verbose #25760 > > rs 00:18:56 verbose #25761 > > |> listm.map (fun r => r.x, r.y) 00:18:56 verbose #25762 > > |> listm'.unzip 00:18:56 verbose #25763 > > inl x = x |> listm'.box |> listm'.to_array' 00:18:56 verbose #25764 > > inl y = y |> listm'.box |> listm'.to_array' 00:18:56 verbose #25765 > > x, y 00:18:56 verbose #25766 > > ) 00:18:56 verbose #25767 > > |> listm'.box |> listm'.to_array' 00:18:56 verbose #25768 > > 00:18:56 verbose #25769 > > inl n = 0i32 00:18:56 verbose #25770 > > 00:18:56 verbose #25771 > > inl x, y = a frames |> am'.index n 00:18:56 verbose #25772 > > 00:18:56 verbose #25773 > > "wave", 00:18:56 verbose #25774 > > "position (m)", 00:18:56 verbose #25775 > > "displacement (m)", 00:18:56 verbose #25776 > > ;[[ 00:18:56 verbose #25777 > > ($'$"{!n}"' : string), x, y 00:18:56 verbose #25778 > > ]] 00:18:56 verbose #25779 > > 00:18:56 verbose #25780 > > ╭─[ 286.37ms - return value ]──────────────────────────────────────────────────╮ 00:18:56 verbose #25781 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:18:56 verbose #25782 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:18:56 verbose #25783 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:18:56 verbose #25784 > > │ stroke="none"/> │ 00:18:56 verbose #25785 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:18:56 verbose #25786 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:56 verbose #25787 > > │ fill="#FFFFFF"> │ 00:18:56 verbose #25788 > > │ wave │ 00:18:56 verbose #25789 > > │ </text> │ 00:18:56 verbose #25790 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="62" y1="424" x2="62" │ 00:18:56 verbose #25791 > > │ y2="75"/> │ 00:18:56 verbose #25792 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:18:56 verbose #25793 > > │ y2="75"/> │ 00:18:56 verbose #25794 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="77" y1="424" x2="77" │ 00:18:56 verbose #25795 > > │ y2="75"/> │ 00:18:56 verbose #25796 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="85" y1="424" x2="85" │ 00:18:56 verbose #25797 > > │ y2="75"/> │ 00:18:56 verbose #25798 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="93" y1="424" x2="93" │ 00:18:56 verbose #25799 > > │ y2="75"/> │ 00:18:56 verbose #25800 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="100" y1="424" │ 00:18:56 verbose #25801 > > │ x2="100" y2="75"/> │ 00:18:56 verbose #25802 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="108" y1="424" │ 00:18:56 verbose #25803 > > │ x2="108" y2="75"/> │ 00:18:56 verbose #25804 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="116" y1="424" │ 00:18:56 verbose #25805 > > │ x2="116" y2="75"/> │ 00:18:56 verbose #25806 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="123" y1="424" │ 00:18:56 verbose #25807 > > │ x2="123" y2="75"/> │ 00:18:56 verbose #25808 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="131" y1="424" │ 00:18:56 verbose #25809 > > │ x2="131" y2="75"/> │ 00:18:56 verbose #25810 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424" │ 00:18:56 verbose #25811 > > │ x2="139" y2="75"/> │ 00:18:56 verbose #25812 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="146" y1="424" │ 00:18:56 verbose #25813 > > │ x2="146" y2="75"/> │ 00:18:56 verbose #25814 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="154" y1="424" │ 00:18:56 verbose #25815 > > │ x2="154" y2="75"/> │ 00:18:56 verbose #25816 > > │ <line opacity="1" stroke="#32...ne fill="none" opacity="1" stroke="#FFFFFF" │ 00:18:56 verbose #25817 > > │ stroke-width="1" points="585,250 590,250 "/> │ 00:18:56 verbose #25818 > > │ <text x="617" y="184" dy="0.5ex" text-anchor="end" font-family="sans-serif" │ 00:18:56 verbose #25819 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF"> │ 00:18:56 verbose #25820 > > │ 0.0 │ 00:18:56 verbose #25821 > > │ </text> │ 00:18:56 verbose #25822 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" │ 00:18:56 verbose #25823 > > │ points="585,184 590,184 "/> │ 00:18:56 verbose #25824 > > │ <text x="617" y="118" dy="0.5ex" text-anchor="end" font-family="sans-serif" │ 00:18:56 verbose #25825 > > │ font-size="9.67741935483871" opacity="1" fill="#FFFFFF"> │ 00:18:56 verbose #25826 > > │ 0.0 │ 00:18:56 verbose #25827 > > │ </text> │ 00:18:56 verbose #25828 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" │ 00:18:56 verbose #25829 > > │ points="585,118 590,118 "/> │ 00:18:56 verbose #25830 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:18:56 verbose #25831 > > │ points="69,250 77,226 85,203 93,181 100,160 108,141 116,124 123,110 131,99 │ 00:18:56 verbose #25832 > > │ 139,91 146,87 154,85 162,88 169,93 177,102 185,115 192,129 200,147 208,167 │ 00:18:56 verbose #25833 > > │ 215,188 223,211 231,234 238,258 246,282 254,305 261,327 269,347 277,365 │ 00:18:56 verbose #25834 > > │ 284,381 292,394 300,404 307,411 315,415 323,415 331,411 338,404 346,394 │ 00:18:56 verbose #25835 > > │ 354,381 361,365 369,347 377,327 384,305 392,282 400,258 407,234 415,211 │ 00:18:56 verbose #25836 > > │ 423,188 430,167 438,147 446,129 453,115 461,102 469,93 476,88 484,85 492,87 │ 00:18:56 verbose #25837 > > │ 499,91 507,99 515,110 522,124 530,141 538,160 545,181 553,203 561,226 │ 00:18:56 verbose #25838 > > │ 569,250 "/> │ 00:18:56 verbose #25839 > > │ <rect x="525" y="235" width="55" height="30" opacity="1" fill="none" │ 00:18:56 verbose #25840 > > │ stroke="#FFFFFF"/> │ 00:18:56 verbose #25841 > > │ <text x="565" y="245" dy="0.76em" text-anchor="start" │ 00:18:56 verbose #25842 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:56 verbose #25843 > > │ fill="#FFFFFF"> │ 00:18:56 verbose #25844 > > │ 0 │ 00:18:56 verbose #25845 > > │ </text> │ 00:18:56 verbose #25846 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:18:56 verbose #25847 > > │ points="535,250 555,250 "/> │ 00:18:56 verbose #25848 > > │ </svg> │ 00:18:56 verbose #25849 > > │ │ 00:18:56 verbose #25850 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:56 verbose #25851 > > 00:18:56 verbose #25852 > > ╭─[ 290.47ms - stdout ]────────────────────────────────────────────────────────╮ 00:18:56 verbose #25853 > > │ 00:00:16 debug #43 runtime.execute_with_options_async / { options = { │ 00:18:56 verbose #25854 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:18:56 verbose #25855 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:18:56 verbose #25856 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:18:56 verbose #25857 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:18:56 verbose #25858 > > │ 00:00:16 verbose #44 > Creating │ 00:18:56 verbose #25859 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/c7418df0ce04ccaab7c │ 00:18:56 verbose #25860 > > │ 4d85e07df47a9669ac0ab4f1d50ec3d2fa160947066c1.svg │ 00:18:56 verbose #25861 > > │ 00:00:16 debug #45 runtime.execute_with_options_async / { exit_code = │ 00:18:56 verbose #25862 > > │ 0; output_length = 134 } │ 00:18:56 verbose #25863 > > │ │ 00:18:56 verbose #25864 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:56 verbose #25865 > > 00:18:56 verbose #25866 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:56 verbose #25867 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:56 verbose #25868 > > │ #### system kinetic energy versus time 2 │ 00:18:56 verbose #25869 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:56 verbose #25870 > > 00:18:56 verbose #25871 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:56 verbose #25872 > > //// test 00:18:56 verbose #25873 > > 00:18:56 verbose #25874 > > inl central_force f (particle_state st1) (particle_state st2) = 00:18:56 verbose #25875 > > inl r1 = st1.pos_vec 00:18:56 verbose #25876 > > inl r2 = st2.pos_vec 00:18:56 verbose #25877 > > inl r21 = r2 ^-^ r1 00:18:56 verbose #25878 > > inl r21mag = magnitude r21 00:18:56 verbose #25879 > > f r21mag *^ r21 ^/ r21mag 00:18:56 verbose #25880 > > 00:18:56 verbose #25881 > > inl billiard_force k re = 00:18:56 verbose #25882 > > inl f r = 00:18:56 verbose #25883 > > if r >= re 00:18:56 verbose #25884 > > then 0 00:18:56 verbose #25885 > > else -k * (r - re) 00:18:56 verbose #25886 > > central_force f 00:18:56 verbose #25887 > > 00:18:56 verbose #25888 > > type force_vector = vec 00:18:56 verbose #25889 > > type two_body_force = particle_state -> particle_state -> force_vector 00:18:56 verbose #25890 > > 00:18:56 verbose #25891 > > union force t = 00:18:56 verbose #25892 > > | ExternalForce : t * one_body_force 00:18:56 verbose #25893 > > | InternalForce : t * t * two_body_force 00:18:56 verbose #25894 > > 00:18:56 verbose #25895 > > nominal multi_particle_state = stream.stream particle_state 00:18:56 verbose #25896 > > 00:18:56 verbose #25897 > > nominal d_multi_particle_state = stream.stream d_particle_state 00:18:56 verbose #25898 > > 00:18:56 verbose #25899 > > inl force_on n s force = 00:18:56 verbose #25900 > > match force with 00:18:56 verbose #25901 > > | ExternalForce (n0, f_one_body) => 00:18:56 verbose #25902 > > if n = n0 00:18:56 verbose #25903 > > then f_one_body 00:18:56 verbose #25904 > > else fun _ => zero_vec () 00:18:56 verbose #25905 > > | InternalForce (n0, n1, f_two_body) => 00:18:56 verbose #25906 > > if n = n0 00:18:56 verbose #25907 > > then s |> stream.try_item n1 |> optionm.map f_two_body 00:18:56 verbose #25908 > > elif n = n1 00:18:56 verbose #25909 > > then s |> stream.try_item n0 |> optionm.map f_two_body 00:18:56 verbose #25910 > > else None 00:18:56 verbose #25911 > > |> optionm'.default_value (fun _ => zero_vec ()) 00:18:56 verbose #25912 > > 00:18:56 verbose #25913 > > inl forces_on n (multi_particle_state sts) fs = 00:18:56 verbose #25914 > > fs 00:18:56 verbose #25915 > > |> listm.map (force_on n sts) 00:18:56 verbose #25916 > > 00:18:56 verbose #25917 > > inl newton_second_mps fs ((multi_particle_state sts) as mpst) = 00:18:56 verbose #25918 > > inl deriv (n, st) = 00:18:56 verbose #25919 > > newton_second_ps (forces_on n mpst fs) st 00:18:56 verbose #25920 > > sts |> stream.indexed |> stream.map deriv |> d_multi_particle_state 00:18:56 verbose #25921 > > 00:18:56 verbose #25922 > > instance (+++) d_multi_particle_state = 00:18:56 verbose #25923 > > fun (d_multi_particle_state dsts1) (d_multi_particle_state dsts2) => 00:18:56 verbose #25924 > > (dsts1, dsts2) 00:18:56 verbose #25925 > > ||> stream.zip_with (+++) 00:18:56 verbose #25926 > > |> d_multi_particle_state 00:18:56 verbose #25927 > > 00:18:56 verbose #25928 > > instance scale d_multi_particle_state = fun w (d_multi_particle_state dsts) => 00:18:56 verbose #25929 > > dsts 00:18:56 verbose #25930 > > |> stream.map (scale w) 00:18:56 verbose #25931 > > |> d_multi_particle_state 00:18:56 verbose #25932 > > 00:18:56 verbose #25933 > > instance shift multi_particle_state = fun dt dsts (multi_particle_state sts) => 00:18:56 verbose #25934 > > inl (d_multi_particle_state dsts) = 00:18:56 verbose #25935 > > real 00:18:56 verbose #25936 > > match dsts with 00:18:56 verbose #25937 > > | d_multi_particle_state _ => dsts 00:18:56 verbose #25938 > > (dsts, sts) 00:18:56 verbose #25939 > > ||> stream.zip_with (shift dt) 00:18:56 verbose #25940 > > |> stream.memoize 00:18:56 verbose #25941 > > |> fun x => x () 00:18:56 verbose #25942 > > |> multi_particle_state 00:18:56 verbose #25943 > > 00:18:56 verbose #25944 > > inl euler_cromer_mps dt : numerical_method multi_particle_state 00:18:56 verbose #25945 > > d_multi_particle_state = 00:18:56 verbose #25946 > > fun deriv ((multi_particle_state sts0) as mpst0) => 00:18:56 verbose #25947 > > inl (multi_particle_state sts1) = euler dt deriv mpst0 00:18:56 verbose #25948 > > (sts0, sts1) 00:18:56 verbose #25949 > > ||> stream.zip 00:18:56 verbose #25950 > > |> stream.map (fun ((particle_state st0), (particle_state st1)) => 00:18:56 verbose #25951 > > particle_state { 00:18:56 verbose #25952 > > st1 with 00:18:56 verbose #25953 > > pos_vec = st0.pos_vec ^+^ st1.velocity ^* dt 00:18:56 verbose #25954 > > } 00:18:56 verbose #25955 > > ) 00:18:56 verbose #25956 > > |> multi_particle_state 00:18:56 verbose #25957 > > 00:18:56 verbose #25958 > > inl update_mps (method : numerical_method multi_particle_state 00:18:56 verbose #25959 > > d_multi_particle_state) = 00:18:56 verbose #25960 > > newton_second_mps >> method 00:18:56 verbose #25961 > > 00:18:56 verbose #25962 > > inl states_mps (method : numerical_method multi_particle_state 00:18:56 verbose #25963 > > d_multi_particle_state) = 00:18:56 verbose #25964 > > newton_second_mps 00:18:56 verbose #25965 > > >> method 00:18:56 verbose #25966 > > >> (fun x (multi_particle_state y) => 00:18:56 verbose #25967 > > y 00:18:56 verbose #25968 > > |> stream.memoize 00:18:56 verbose #25969 > > |> (fun x => x ()) 00:18:56 verbose #25970 > > |> multi_particle_state |> x 00:18:56 verbose #25971 > > ) 00:18:56 verbose #25972 > > // >> stream.iterate 00:18:56 verbose #25973 > > >> seq.iterate' 00:18:56 verbose #25974 > > 00:18:56 verbose #25975 > > inl kinetic_energy (particle_state st) = 00:18:56 verbose #25976 > > inl m = st.mass 00:18:56 verbose #25977 > > inl v = magnitude st.velocity 00:18:56 verbose #25978 > > 0.5 * m * v ** 2 00:18:56 verbose #25979 > > 00:18:56 verbose #25980 > > inl system_ke (multi_particle_state sts) = 00:18:56 verbose #25981 > > sts 00:18:56 verbose #25982 > > |> stream.map kinetic_energy 00:18:56 verbose #25983 > > |> stream.sum 00:18:56 verbose #25984 > > 00:18:56 verbose #25985 > > inl linear_spring_pe k re (particle_state st1) (particle_state st2) = 00:18:56 verbose #25986 > > inl r1 = st1.pos_vec 00:18:56 verbose #25987 > > inl r2 = st2.pos_vec 00:18:56 verbose #25988 > > inl r21 = r2 ^-^ r1 00:18:56 verbose #25989 > > inl r21mag = magnitude r21 00:18:56 verbose #25990 > > k * (r21mag - re) ** 2 / 2 00:18:56 verbose #25991 > > 00:18:56 verbose #25992 > > inl earth_surface_gravity_pe (particle_state st) = 00:18:56 verbose #25993 > > inl g = 9.80665 00:18:56 verbose #25994 > > inl m = st.mass 00:18:56 verbose #25995 > > inl z = st.pos_vec.z 00:18:56 verbose #25996 > > m * g * z 00:18:56 verbose #25997 > > 00:18:56 verbose #25998 > > inl ball_radius () = 0.03 00:18:56 verbose #25999 > > 00:18:56 verbose #26000 > > inl billiard_forces k = 00:18:56 verbose #26001 > > [[ InternalForce (0i32, 1, billiard_force k (2 * ball_radius ())) ]] 00:18:56 verbose #26002 > > 00:18:56 verbose #26003 > > inl billiard_initial () = 00:18:56 verbose #26004 > > inl ball_mass = 0.160 00:18:56 verbose #26005 > > inl (particle_state default_particle_state') = default_particle_state () 00:18:56 verbose #26006 > > [[ 00:18:56 verbose #26007 > > particle_state { 00:18:56 verbose #26008 > > default_particle_state' with 00:18:56 verbose #26009 > > mass = ball_mass 00:18:56 verbose #26010 > > pos_vec = zero_vec () 00:18:56 verbose #26011 > > velocity = 0.2 *^ i_hat () 00:18:56 verbose #26012 > > } 00:18:56 verbose #26013 > > particle_state { 00:18:56 verbose #26014 > > default_particle_state' with 00:18:56 verbose #26015 > > mass = ball_mass 00:18:56 verbose #26016 > > pos_vec = i_hat () ^+^ 0.02 *^ j_hat () 00:18:56 verbose #26017 > > velocity = zero_vec () 00:18:56 verbose #26018 > > } 00:18:56 verbose #26019 > > ]] 00:18:56 verbose #26020 > > |> stream.from_list 00:18:56 verbose #26021 > > |> multi_particle_state 00:18:56 verbose #26022 > > 00:18:56 verbose #26023 > > inl billiard_states ~n_method k dt = 00:18:56 verbose #26024 > > states_mps (n_method dt) (billiard_forces k) (billiard_initial ()) 00:18:56 verbose #26025 > > 00:18:56 verbose #26026 > > inl billiard_states_finite n_method k dt = 00:18:56 verbose #26027 > > billiard_states n_method k dt 00:18:56 verbose #26028 > > >> Some 00:18:56 verbose #26029 > > |> seq.take_while_ (fun (multi_particle_state mpst) (_ : i32) => 00:18:56 verbose #26030 > > match mpst |> stream.try_item 0i32 with 00:18:56 verbose #26031 > > | Some st => 00:18:56 verbose #26032 > > st.time <= 10 00:18:56 verbose #26033 > > | None => false 00:18:56 verbose #26034 > > ) 00:18:56 verbose #26035 > > 00:18:56 verbose #26036 > > inl momentum (particle_state st) = 00:18:56 verbose #26037 > > inl m = st.mass 00:18:56 verbose #26038 > > inl v = st.velocity 00:18:56 verbose #26039 > > m *^ v 00:18:56 verbose #26040 > > 00:18:56 verbose #26041 > > inl system_p (multi_particle_state sts) = 00:18:56 verbose #26042 > > sts 00:18:56 verbose #26043 > > |> stream.map momentum 00:18:56 verbose #26044 > > |> stream.fold (^+^) (zero_vec ()) 00:18:56 verbose #26045 > > 00:18:56 verbose #26046 > > inl time_ke_ec_x, time_ke_ec_y = 00:18:56 verbose #26047 > > billiard_states_finite euler_cromer_mps 30 0.03 00:18:56 verbose #26048 > > |> listm.map (fun (multi_particle_state mpst) => 00:18:56 verbose #26049 > > mpst |> stream.try_item 0i32 00:18:56 verbose #26050 > > |> optionm.map (fun st => 00:18:56 verbose #26051 > > st.time, system_ke (multi_particle_state mpst) 00:18:56 verbose #26052 > > ) 00:18:56 verbose #26053 > > ) 00:18:56 verbose #26054 > > // |> stream.to_list 00:18:56 verbose #26055 > > |> listm'.choose id 00:18:56 verbose #26056 > > |> listm'.unzip 00:18:56 verbose #26057 > > 00:18:56 verbose #26058 > > inl time_ke_rk4_x, time_ke_rk4_y = 00:18:56 verbose #26059 > > billiard_states_finite runge_kutta_4 30 0.03 00:18:56 verbose #26060 > > |> listm.map (fun (multi_particle_state mpst) => 00:18:56 verbose #26061 > > mpst |> stream.try_item 0i32 00:18:56 verbose #26062 > > |> optionm.map (fun st => 00:18:56 verbose #26063 > > st.time, system_ke (multi_particle_state mpst) 00:18:56 verbose #26064 > > ) 00:18:56 verbose #26065 > > ) 00:18:56 verbose #26066 > > // |> stream.to_list 00:18:56 verbose #26067 > > |> listm'.choose id 00:18:56 verbose #26068 > > |> listm'.unzip 00:18:56 verbose #26069 > > 00:18:56 verbose #26070 > > inl time_ke_ec_x = time_ke_ec_x |> listm'.box |> listm'.to_array' 00:18:56 verbose #26071 > > inl time_ke_ec_y = time_ke_ec_y |> listm'.box |> listm'.to_array' 00:18:56 verbose #26072 > > 00:18:56 verbose #26073 > > inl time_ke_rk4_x = time_ke_rk4_x |> listm'.box |> listm'.to_array' 00:18:56 verbose #26074 > > inl time_ke_rk4_y = time_ke_rk4_y |> listm'.box |> listm'.to_array' 00:18:56 verbose #26075 > > 00:18:56 verbose #26076 > > "system kinetic energy versus time", 00:18:56 verbose #26077 > > "time (s)", 00:18:56 verbose #26078 > > "system kinetic energy (j)", 00:18:56 verbose #26079 > > ;[[ 00:18:56 verbose #26080 > > "euler-cromer", time_ke_ec_x, time_ke_ec_y 00:18:56 verbose #26081 > > "runge-kutta 4", time_ke_rk4_x, time_ke_rk4_y 00:18:56 verbose #26082 > > ]] 00:18:57 verbose #26083 > > 00:18:57 verbose #26084 > > ╭─[ 1.53s - return value ]─────────────────────────────────────────────────────╮ 00:18:57 verbose #26085 > > │ <svg width="640" height="480" viewBox="0 0 640 480" │ 00:18:57 verbose #26086 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:18:57 verbose #26087 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:18:57 verbose #26088 > > │ stroke="none"/> │ 00:18:57 verbose #26089 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:18:57 verbose #26090 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:57 verbose #26091 > > │ fill="#FFFFFF"> │ 00:18:57 verbose #26092 > > │ system kinetic energy versus time │ 00:18:57 verbose #26093 > > │ </text> │ 00:18:57 verbose #26094 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" y1="424" x2="59" │ 00:18:57 verbose #26095 > > │ y2="75"/> │ 00:18:57 verbose #26096 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:18:57 verbose #26097 > > │ y2="75"/> │ 00:18:57 verbose #26098 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" y1="424" x2="79" │ 00:18:57 verbose #26099 > > │ y2="75"/> │ 00:18:57 verbose #26100 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" y1="424" x2="89" │ 00:18:57 verbose #26101 > > │ y2="75"/> │ 00:18:57 verbose #26102 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" y1="424" x2="99" │ 00:18:57 verbose #26103 > > │ y2="75"/> │ 00:18:57 verbose #26104 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" y1="424" │ 00:18:57 verbose #26105 > > │ x2="109" y2="75"/> │ 00:18:57 verbose #26106 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" y1="424" │ 00:18:57 verbose #26107 > > │ x2="119" y2="75"/> │ 00:18:57 verbose #26108 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" y1="424" │ 00:18:57 verbose #26109 > > │ x2="129" y2="75"/> │ 00:18:57 verbose #26110 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424" │ 00:18:57 verbose #26111 > > │ x2="139" y2="75"/> │ 00:18:57 verbose #26112 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" y1="424" │ 00:18:57 verbose #26113 > > │ x2="149" y2="75"/> │ 00:18:57 verbose #26114 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" y1="424" │ 00:18:57 verbose #26115 > > │ x2="159" y2="75"/> │ 00:18:57 verbose #26116 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" y1="424" │ 00:18:57 verbose #26117 > > │ x2="169" y2="75"/> │ 00:18:57 verbose #26118 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" y1="424" │ 00:18:57 verbose #26119 > > │ x2="179" y2="75"/> │ 00:18:57 verbose #26120 > > │ ...,104 404,104 405,104 407,104 408,104 410,104 411,104 413,104 414,104 │ 00:18:57 verbose #26121 > > │ 416,104 417,104 419,104 420,104 422,104 423,104 425,104 426,104 428,104 │ 00:18:57 verbose #26122 > > │ 429,104 431,104 432,104 434,104 435,104 437,104 438,104 440,104 441,104 │ 00:18:57 verbose #26123 > > │ 443,104 444,104 446,104 447,104 449,104 450,104 452,104 453,104 455,104 │ 00:18:57 verbose #26124 > > │ 456,104 458,104 459,104 461,104 462,104 464,104 465,104 467,104 468,104 │ 00:18:57 verbose #26125 > > │ 470,104 471,104 473,104 474,104 476,104 477,104 479,104 480,104 482,104 │ 00:18:57 verbose #26126 > > │ 483,104 485,104 486,104 488,104 489,104 491,104 492,104 494,104 495,104 │ 00:18:57 verbose #26127 > > │ 497,104 498,104 500,104 501,104 503,104 504,104 506,104 507,104 509,104 │ 00:18:57 verbose #26128 > > │ 510,104 512,104 513,104 515,104 516,104 518,104 519,104 521,104 522,104 │ 00:18:57 verbose #26129 > > │ 524,104 525,104 527,104 528,104 530,104 531,104 533,104 534,104 536,104 │ 00:18:57 verbose #26130 > > │ 537,104 539,104 540,104 542,104 543,104 545,104 546,104 548,104 549,104 │ 00:18:57 verbose #26131 > > │ 551,104 552,104 554,104 555,104 557,104 558,104 560,104 561,104 563,104 │ 00:18:57 verbose #26132 > > │ 564,104 566,104 567,104 569,104 "/> │ 00:18:57 verbose #26133 > > │ <rect x="459" y="227" width="121" height="45" opacity="1" fill="none" │ 00:18:57 verbose #26134 > > │ stroke="#FFFFFF"/> │ 00:18:57 verbose #26135 > > │ <text x="499" y="237" dy="0.76em" text-anchor="start" │ 00:18:57 verbose #26136 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:57 verbose #26137 > > │ fill="#FFFFFF"> │ 00:18:57 verbose #26138 > > │ euler-cromer │ 00:18:57 verbose #26139 > > │ </text> │ 00:18:57 verbose #26140 > > │ <text x="499" y="252" dy="0.76em" text-anchor="start" │ 00:18:57 verbose #26141 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:18:57 verbose #26142 > > │ fill="#FFFFFF"> │ 00:18:57 verbose #26143 > > │ runge-kutta 4 │ 00:18:57 verbose #26144 > > │ </text> │ 00:18:57 verbose #26145 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:18:57 verbose #26146 > > │ points="469,242 489,242 "/> │ 00:18:57 verbose #26147 > > │ <polyline fill="none" opacity="1" stroke="#0000FF" stroke-width="1" │ 00:18:57 verbose #26148 > > │ points="469,257 489,257 "/> │ 00:18:57 verbose #26149 > > │ </svg> │ 00:18:57 verbose #26150 > > │ │ 00:18:57 verbose #26151 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:57 verbose #26152 > > 00:18:57 verbose #26153 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:57 verbose #26154 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:18:57 verbose #26155 > > │ #### wave 2 │ 00:18:57 verbose #26156 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:18:57 verbose #26157 > > 00:18:57 verbose #26158 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:57 verbose #26159 > > //// test 00:18:57 verbose #26160 > > 00:18:57 verbose #26161 > > inl linear_spring k re (particle_state st1) (particle_state st2) = 00:18:57 verbose #26162 > > inl r1 = st1.pos_vec 00:18:57 verbose #26163 > > inl r2 = st2.pos_vec 00:18:57 verbose #26164 > > inl r21 = r2 ^-^ r1 00:18:57 verbose #26165 > > inl r21mag = magnitude r21 00:18:57 verbose #26166 > > -k * (r21mag - re) *^ r21 ^/ r21mag 00:18:57 verbose #26167 > > 00:18:57 verbose #26168 > > inl fixed_linear_spring k re r1 = 00:18:57 verbose #26169 > > inl (particle_state default_particle_state') = default_particle_state () 00:18:57 verbose #26170 > > linear_spring k re (particle_state { default_particle_state' with pos_vec = 00:18:57 verbose #26171 > > r1 }) 00:18:57 verbose #26172 > > 00:18:57 verbose #26173 > > inl forces_string () = 00:18:57 verbose #26174 > > [[ 00:18:57 verbose #26175 > > ExternalForce (0i32, fixed_linear_spring 5384 0 (zero_vec ())) 00:18:57 verbose #26176 > > ExternalForce (63, fixed_linear_spring 5384 0 (0.65 *^ i_hat ())) 00:18:57 verbose #26177 > > ]] ++ ( 00:18:57 verbose #26178 > > listm'.init_series 0 59 1 00:18:57 verbose #26179 > > |> listm.map (fun n => InternalForce (n, n + 1, linear_spring 5384 0)) 00:18:57 verbose #26180 > > ) 00:18:57 verbose #26181 > > 00:18:57 verbose #26182 > > inl string_update dt = 00:18:57 verbose #26183 > > update_mps (join runge_kutta_4 dt) (join forces_string ()) 00:18:57 verbose #26184 > > 00:18:57 verbose #26185 > > inl string_initial_overtone n = 00:18:57 verbose #26186 > > inl ball_mass = 0.0008293 * 0.65 / 64 00:18:57 verbose #26187 > > inl (particle_state default_particle_state') = default_particle_state () 00:18:57 verbose #26188 > > listm'.init_series 0.01 0.64 0.01 00:18:57 verbose #26189 > > |> listm.map (fun x => 00:18:57 verbose #26190 > > inl y = 0.005 * sin (conv n * pi * x / 0.65) 00:18:57 verbose #26191 > > particle_state { 00:18:57 verbose #26192 > > default_particle_state' with 00:18:57 verbose #26193 > > mass = ball_mass 00:18:57 verbose #26194 > > pos_vec = x *^ i_hat () ^+^ y *^ j_hat () 00:18:57 verbose #26195 > > velocity = zero_vec () 00:18:57 verbose #26196 > > } 00:18:57 verbose #26197 > > ) 00:18:57 verbose #26198 > > |> stream.from_list 00:18:57 verbose #26199 > > |> multi_particle_state 00:18:57 verbose #26200 > > 00:18:57 verbose #26201 > > let main () = 00:18:57 verbose #26202 > > inl ~frames = listm'.init_series 0 65 1f64 |> stream.from_list 00:18:57 verbose #26203 > > inl ~initial_state = string_initial_overtone 3i32 00:18:57 verbose #26204 > > inl frames = 00:18:57 verbose #26205 > > frames 00:18:57 verbose #26206 > > |> stream.map (fun n => 00:18:57 verbose #26207 > > inl (multi_particle_state sts) = 00:18:57 verbose #26208 > > stream.iterate (string_update 0.000025) initial_state |> 00:18:57 verbose #26209 > > stream.item n 00:18:57 verbose #26210 > > inl x, y = 00:18:57 verbose #26211 > > [[ zero_vec () ]] 00:18:57 verbose #26212 > > ++ (sts |> stream.map (fun (particle_state st) => st.pos_vec) |> 00:18:57 verbose #26213 > > stream.to_list) 00:18:57 verbose #26214 > > ++ [[ 0.65 *^ i_hat () ]] 00:18:57 verbose #26215 > > |> listm.map (fun r => r.x, r.y) 00:18:57 verbose #26216 > > |> stream.from_list 00:18:57 verbose #26217 > > |> stream.unzip 00:18:57 verbose #26218 > > inl x = x |> stream.to_list |> listm'.box |> listm'.to_array' 00:18:57 verbose #26219 > > inl y = y |> stream.to_list |> listm'.box |> listm'.to_array' 00:18:57 verbose #26220 > > x, y 00:18:57 verbose #26221 > > ) 00:18:57 verbose #26222 > > 00:18:57 verbose #26223 > > inl plots = 00:18:57 verbose #26224 > > frames 00:18:57 verbose #26225 > > |> stream.indexed 00:18:57 verbose #26226 > > |> stream.map (fun ((n : i32), (x, y)) => 00:18:57 verbose #26227 > > "wave", 00:18:57 verbose #26228 > > "position (m)", 00:18:57 verbose #26229 > > "displacement (m)", 00:18:57 verbose #26230 > > ;[[ 00:18:57 verbose #26231 > > ($'$"{!n}"' : string), x, y 00:18:57 verbose #26232 > > ]] 00:18:57 verbose #26233 > > ) 00:18:57 verbose #26234 > > 00:18:57 verbose #26235 > > plots |> stream.to_list |> listm'.box |> listm'.to_array' 00:19:02 verbose #26236 > > 00:19:02 verbose #26237 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:02 verbose #26238 > > ╭─[ 4.53s - diagnostics ]──────────────────────────────────────────────────────╮ 00:19:02 verbose #26239 > > │ input.fsx (22,25)-(1084,1085) typecheck warning Incomplete pattern matches │ 00:19:02 verbose #26240 > > │ on this expression. For example, the value 'UH7_1 (_, _, _, _)' may indicate │ 00:19:02 verbose #26241 > > │ a case not covered by the pattern(s). │ 00:19:02 verbose #26242 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:02 verbose #26243 > > 00:19:02 verbose #26244 > > ╭─[ 4.82s - return value ]─────────────────────────────────────────────────────╮ 00:19:02 verbose #26245 > > │ <table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr │ 00:19:02 verbose #26246 > > │ ><td>0</td><td><svg width="640" height="480" viewBox="0 0 640 480" │ 00:19:02 verbose #26247 > > │ xmlns="http://www.w3.org/2000/svg"> │ 00:19:02 verbose #26248 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" fill="#141414" │ 00:19:02 verbose #26249 > > │ stroke="none"/> │ 00:19:02 verbose #26250 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" │ 00:19:02 verbose #26251 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:19:02 verbose #26252 > > │ fill="#FFFFFF"> │ 00:19:02 verbose #26253 > > │ wave │ 00:19:02 verbose #26254 > > │ </text> │ 00:19:02 verbose #26255 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="62" y1="424" x2="62" │ 00:19:02 verbose #26256 > > │ y2="75"/> │ 00:19:02 verbose #26257 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" y1="424" x2="69" │ 00:19:02 verbose #26258 > > │ y2="75"/> │ 00:19:02 verbose #26259 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="77" y1="424" x2="77" │ 00:19:02 verbose #26260 > > │ y2="75"/> │ 00:19:02 verbose #26261 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="85" y1="424" x2="85" │ 00:19:02 verbose #26262 > > │ y2="75"/> │ 00:19:02 verbose #26263 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="93" y1="424" x2="93" │ 00:19:02 verbose #26264 > > │ y2="75"/> │ 00:19:02 verbose #26265 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="100" y1="424" │ 00:19:02 verbose #26266 > > │ x2="100" y2="75"/> │ 00:19:02 verbose #26267 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="108" y1="424" │ 00:19:02 verbose #26268 > > │ x2="108" y2="75"/> │ 00:19:02 verbose #26269 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="116" y1="424" │ 00:19:02 verbose #26270 > > │ x2="116" y2="75"/> │ 00:19:02 verbose #26271 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="123" y1="424" │ 00:19:02 verbose #26272 > > │ x2="123" y2="75"/> │ 00:19:02 verbose #26273 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="131" y1="424" │ 00:19:02 verbose #26274 > > │ x2="131" y2="75"/> │ 00:19:02 verbose #26275 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" y1="424" │ 00:19:02 verbose #26276 > > │ x2="139" y2="75"/> │ 00:19:02 verbose #26277 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="146" y1="424" │ 00:19:02 verbose #26278 > > │ x2="146" y2="75"/> │ 00:19:02 verbose #26279 > > │ <line opacity="1" stroke="#... stroke-width="1" points="585,128 590,128 "/> │ 00:19:02 verbose #26280 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:19:02 verbose #26281 > > │ points="69,363 77,322 85,283 92,246 100,211 107,179 115,151 122,127 130,108 │ 00:19:02 verbose #26282 > > │ 138,95 145,87 153,85 160,89 168,99 175,114 183,134 190,159 198,188 205,220 │ 00:19:02 verbose #26283 > > │ 212,253 218,284 223,311 226,329 227,337 226,337 224,333 223,334 223,344 │ 00:19:02 verbose #26284 > > │ 224,357 225,367 224,370 223,374 224,383 224,393 224,397 224,400 224,406 │ 00:19:02 verbose #26285 > > │ 224,411 224,412 224,413 224,415 224,413 224,411 224,409 224,405 224,400 │ 00:19:02 verbose #26286 > > │ 224,395 224,388 224,382 224,375 224,367 224,360 224,353 224,346 224,339 │ 00:19:02 verbose #26287 > > │ 224,332 224,327 224,322 224,318 224,314 224,312 224,311 539,239 546,279 │ 00:19:02 verbose #26288 > > │ 569,403 561,363 "/> │ 00:19:02 verbose #26289 > > │ <rect x="519" y="235" width="61" height="30" opacity="1" fill="none" │ 00:19:02 verbose #26290 > > │ stroke="#FFFFFF"/> │ 00:19:02 verbose #26291 > > │ <text x="559" y="245" dy="0.76em" text-anchor="start" │ 00:19:02 verbose #26292 > > │ font-family="sans-serif" font-size="9.67741935483871" opacity="1" │ 00:19:02 verbose #26293 > > │ fill="#FFFFFF"> │ 00:19:02 verbose #26294 > > │ 65 │ 00:19:02 verbose #26295 > > │ </text> │ 00:19:02 verbose #26296 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" stroke-width="1" │ 00:19:02 verbose #26297 > > │ points="529,250 549,250 "/> │ 00:19:02 verbose #26298 > > │ </svg> │ 00:19:02 verbose #26299 > > │ </td></tr></tbody></table><style> │ 00:19:02 verbose #26300 > > │ .dni-code-hint { │ 00:19:02 verbose #26301 > > │ font-style: italic; │ 00:19:02 verbose #26302 > > │ overflow: hidden; │ 00:19:02 verbose #26303 > > │ white-space: nowrap; │ 00:19:02 verbose #26304 > > │ } │ 00:19:02 verbose #26305 > > │ .dni-treeview { │ 00:19:02 verbose #26306 > > │ white-space: nowrap; │ 00:19:02 verbose #26307 > > │ } │ 00:19:02 verbose #26308 > > │ .dni-treeview td { │ 00:19:02 verbose #26309 > > │ vertical-align: top; │ 00:19:02 verbose #26310 > > │ text-align: start; │ 00:19:02 verbose #26311 > > │ } │ 00:19:02 verbose #26312 > > │ details.dni-treeview { │ 00:19:02 verbose #26313 > > │ padding-left: 1em; │ 00:19:02 verbose #26314 > > │ } │ 00:19:02 verbose #26315 > > │ table td { │ 00:19:02 verbose #26316 > > │ text-align: start; │ 00:19:02 verbose #26317 > > │ } │ 00:19:02 verbose #26318 > > │ table tr { │ 00:19:02 verbose #26319 > > │ vertical-align: top; │ 00:19:02 verbose #26320 > > │ margin: 0em 0px; │ 00:19:02 verbose #26321 > > │ } │ 00:19:02 verbose #26322 > > │ table tr td pre │ 00:19:02 verbose #26323 > > │ { │ 00:19:02 verbose #26324 > > │ vertical-align: top !important; │ 00:19:02 verbose #26325 > > │ margin: 0em 0px !important; │ 00:19:02 verbose #26326 > > │ } │ 00:19:02 verbose #26327 > > │ table th { │ 00:19:02 verbose #26328 > > │ text-align: start; │ 00:19:02 verbose #26329 > > │ } │ 00:19:02 verbose #26330 > > │ </style> │ 00:19:02 verbose #26331 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:02 verbose #26332 > > 00:19:02 verbose #26333 > > ╭─[ 4.82s - stdout ]───────────────────────────────────────────────────────────╮ 00:19:02 verbose #26334 > > │ 00:00:22 debug #46 runtime.execute_with_options_async / { options = { │ 00:19:02 verbose #26335 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26336 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26337 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26338 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26339 > > │ 00:00:22 verbose #47 > Creating │ 00:19:02 verbose #26340 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/25b4386102d4e649cf3 │ 00:19:02 verbose #26341 > > │ 6c315e80448a1fa116c091b0086111cf413562ef6255c.svg │ 00:19:02 verbose #26342 > > │ 00:00:22 debug #48 runtime.execute_with_options_async / { exit_code = │ 00:19:02 verbose #26343 > > │ 0; output_length = 134 } │ 00:19:02 verbose #26344 > > │ 00:00:22 debug #49 runtime.execute_with_options_async / { options = { │ 00:19:02 verbose #26345 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26346 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26347 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26348 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26349 > > │ 00:00:22 verbose #50 > Creating │ 00:19:02 verbose #26350 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/82069ab3443b2210137 │ 00:19:02 verbose #26351 > > │ c4a51290d83dc81229748eec3a972a381c54f97272db6.svg │ 00:19:02 verbose #26352 > > │ 00:00:22 debug #51 runtime.execute_with_options_async / { exit_code = │ 00:19:02 verbose #26353 > > │ 0; output_length = 134 } │ 00:19:02 verbose #26354 > > │ 00:00:22 debug #52 runtime.execute_with_options_async / { options = { │ 00:19:02 verbose #26355 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26356 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26357 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26358 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26359 > > │ 00:00:22 verbose #53 > Creating │ 00:19:02 verbose #26360 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/51198f81dd6b9e00f35 │ 00:19:02 verbose #26361 > > │ 6cd50edeac50e389911946af788d2df96b0c3969cc85f.svg │ 00:19:02 verbose #26362 > > │ 00:00:22 debug #54 runtime.execute_with_options_async / { exit_code = │ 00:19:02 verbose #26363 > > │ 0; output_length = 134 } │ 00:19:02 verbose #26364 > > │ 00:00:22 debug #55 runtime.execute_with_options_async / { options = { │ 00:19:02 verbose #26365 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26366 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26367 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26368 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26369 > > │ 00:00:22 verbose #56 > Creating │ 00:19:02 verbose #26370 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/0da4df708113eca0608 │ 00:19:02 verbose #26371 > > │ 92dd4d18bc2025b1151e39abb4b96e26eff2fc4cd6891.svg │ 00:19:02 verbose #26372 > > │ 00:00:22 debug #57 runtime.execute_with_options_async / { exit_code = │ 00:19:02 verbose #26373 > > │ 0; output_length = 134 } │ 00:19:02 verbose #26374 > > │ 00:00:22 debug #58 runtime.execute_with_options_async / { options = { │ 00:19:02 verbose #26375 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26376 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26377 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26378 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26379 > > │ 00:00:22 verbose #59 > Creating │ 00:19:02 verbose #26380 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/ec21fae8ff726079724 │ 00:19:02 verbose #26381 > > │ d8166ca53da39947780d93d63f740978db0416b399df1.svg │ 00:19:02 verbose #26382 > > │ 00:00:22 debug #60 runtime.execute_with_options_async / { exit_code = │ 00:19:02 verbose #26383 > > │ 0; output_length = 134 } │ 00:19:02 verbose #26384 > > │ 00:00:22 debug #61 runtime.execute_with_options_async / { options = { │ 00:19:02 verbose #26385 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26386 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26387 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26388 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26389 > > │ 00:00:22 verbose #62 > Creating │ 00:19:02 verbose #26390 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/cc3a3d6115cdfd7ee2a │ 00:19:02 verbose #26391 > > │ cca31ac52275c998d1e6f6aa7b2316b2c84bde8340094.svg │ 00:19:02 verbose #26392 > > │ 00:00:22 debug #63 runtime.execute_with_options_async / { exit_code = │ 00:19:02 verbose #26393 > > │ 0; output_length = 134 } │ 00:19:02 verbose #26394 > > │ 00:00:22 debug #64 runtime.execute_with_options_async / { options = { │ 00:19:02 verbose #26395 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26396 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26397 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26398 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26399 > > │ 00:00:22 verbose #65 > Creating │ 00:19:02 verbose #26400 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/f4d4d6212bb5f26b01e │ 00:19:02 verbose #26401 > > │ 223e15a54b5cca667ecc4a41c7ac12166812c495d9437.svg │ 00:19:02 verbose #26402 > > │ 00:00:22 debug #66 runtime.execute_with_options_async / { exit_code = │ 00:19:02 verbose #26403 > > │ 0; output_length = 134 } │ 00:19:02 verbose #26404 > > │ 00:00:22 debug #67 runtime.execute_with_options_async / { options = { │ 00:19:02 verbose #26405 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26406 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26407 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26408 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26409 > > │ 00:00:22 verbose #68 > Creating │ 00:19:02 verbose #26410 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/88e67acda384a3935bf │ 00:19:02 verbose #26411 > > │ 09a094a0422796a2f36a7a20876fe7666cf276baba4ca.svg │ 00:19:02 verbose #26412 > > │ 00:00:22 debug #69 runtime.execute_with_options_async / { exit_code = │ 00:19:02 verbose #26413 > > │ 0; output_length = 134 } │ 00:19:02 verbose #26414 > > │ 00:00:22 debug #70 runtime.execute_with_options_async / { options = { │ 00:19:02 verbose #26415 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26416 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26417 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26418 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26419 > > │ 00:00:22 verbose #71 > Creating │ 00:19:02 verbose #26420 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/0d6dfb91ef9a13fbdc0 │ 00:19:02 verbose #26421 > > │ 33c517fa71d9824632e6a73651491210f9e9bb26fdefd.svg │ 00:19:02 verbose #26422 > > │ 00:00:22 debug #72 runtime.execute_with_options_async / { exit_code = │ 00:19:02 verbose #26423 > > │ 0; output_length = 134 } │ 00:19:02 verbose #26424 > > │ 00:00:22 debug #73 runtime.execute_with_options_async / { options = { │ 00:19:02 verbose #26425 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26426 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26427 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26428 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26429 > > │ 00:00:22 verbose #74 > Creating │ 00:19:02 verbose #26430 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/269ae5518e06880956a │ 00:19:02 verbose #26431 > > │ 5a031a71fc0d1003baec1faf97795021ff0849b29f158.svg │ 00:19:02 verbose #26432 > > │ 00:00:22 debug #75 runtime.execute_with_options_async / { exit_code = │ 00:19:02 verbose #26433 > > │ 0; output_length = 134 } │ 00:19:02 verbose #26434 > > │ 00:00:22 debug #76 runtime.execute_with_options_async / { options = { │ 00:19:02 verbose #26435 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26436 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26437 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26438 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26439 > > │ 00:00:22 verbose #77 > Creating │ 00:19:02 verbose #26440 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/429b425800e5f58efea │ 00:19:02 verbose #26441 > > │ 5a9daea343d9a1aac009a6f9c4409f11383c3a86d4c6c.svg │ 00:19:02 verbose #26442 > > │ 00:00:22 debug #78 runtime.execute_with_options_async / { exit_code = │ 00:19:02 verbose #26443 > > │ 0; output_length = 134 } │ 00:19:02 verbose #26444 > > │ 00:00:22 debug #79 runtime.execute_with_options_async / { options = { │ 00:19:02 verbose #26445 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26446 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26447 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26448 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26449 > > │ 00:00:22 verbose #80 > Creating │ 00:19:02 verbose #26450 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/e5beb9b5144700e5ac0 │ 00:19:02 verbose #26451 > > │ 68ff41f7799acb88cbe0b613258014323302a0a3d5a1c.svg │ 00:19:02 verbose #26452 > > │ 00:00:22 debug #81 runtime.execute_with_options_async / { exit_code = │ 00:19:02 verbose #26453 > > │ 0; output_length = 134 } │ 00:19:02 verbose #26454 > > │ 00:00:22 debug #82 runtime.execute_with_options_async / { options = { │ 00:19:02 verbose #26455 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26456 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26457 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26458 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26459 > > │ 00:00:22 verbose #83 > Creating │ 00:19:02 verbose #26460 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/2543db981b2d7ba78e8 │ 00:19:02 verbose #26461 > > │ 905023f1f76b58dd99d61f636fcdc47f85cc5998df0fa.svg │ 00:19:02 verbose #26462 > > │ 00:00:22 debug #84 runtime.execute_with_options_async / { exit_code = │ 00:19:02 verbose #26463 > > │ 0; output_length = 134 } │ 00:19:02 verbose #26464 > > │ 00:00:22 debug #85 runtime.execute_with_options_async / { options = { │ 00:19:02 verbose #26465 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26466 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26467 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26468 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26469 > > │ 00:00:22 verbose #86 > Creating │ 00:19:02 verbose #26470 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/31bd174c459b1cf6d0e │ 00:19:02 verbose #26471 > > │ 9609489ea792da7fb84696f35c6d5e4fcfac01cdb2313.svg │ 00:19:02 verbose #26472 > > │ 00:00:22 debug #87 runtime.execute_with_options_async / { exit_code = │ 00:19:02 verbose #26473 > > │ 0; output_length = 134 } │ 00:19:02 verbose #26474 > > │ 00:00:22 debug #88 runtime.execute_with_options_async / { options = { │ 00:19:02 verbose #26475 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26476 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26477 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26478 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26479 > > │ 00:00:22 verbose #89 > Creating │ 00:19:02 verbose #26480 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/2055256cd308846fd53 │ 00:19:02 verbose #26481 > > │ 25958a010fd6753dabf3ec603ee633dda982c882cc35d.svg │ 00:19:02 verbose #26482 > > │ 00:00:22 debug #90 runtime.execute_with_options_async / { exit_code = │ 00:19:02 verbose #26483 > > │ 0; output_length = 134 } │ 00:19:02 verbose #26484 > > │ 00:00:22 debug #91 runtime.execute_with_options_async / { options = { │ 00:19:02 verbose #26485 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26486 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26487 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26488 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26489 > > │ 00:00:22 verbose #92 > Creating │ 00:19:02 verbose #26490 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/e36a8f1675ee4d9378c │ 00:19:02 verbose #26491 > > │ 2c149f0395e9585eb14793f79a5e1837d9943c8256622.svg │ 00:19:02 verbose #26492 > > │ 00:00:22 debug #93 runtime.execute_with_options_async / { exit_code = │ 00:19:02 verbose #26493 > > │ 0; output_length = 134 } │ 00:19:02 verbose #26494 > > │ 00:00:22 debug #94 runtime.execute_with_options_async / { options = { │ 00:19:02 verbose #26495 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26496 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26497 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26498 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26499 > > │ 00:00:22 verbose #95 > Creating │ 00:19:02 verbose #26500 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/4e44702e3376bc59cee │ 00:19:02 verbose #26501 > > │ f1c5463ef093898efe2659436cc48225aca64585a1eed.svg │ 00:19:02 verbose #26502 > > │ 00:00:22 debug #96 runtime.execute_with_options_async / { exit_code = │ 00:19:02 verbose #26503 > > │ 0; output_length = 134 } │ 00:19:02 verbose #26504 > > │ 00:00:22 debug #97 runtime.execute_with_options_async / { options = { │ 00:19:02 verbose #26505 > > │ command = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26506 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26507 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26508 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26509 > > │ 00:00:22 verbose #98 > Creating │ 00:19:02 verbose #26510 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/da2dd1e5137917a0b5f │ 00:19:02 verbose #26511 > > │ bd320e18d559f3003adee29c16c8b3ddaa90861251def.svg │ 00:19:02 verbose #26512 > > │ 00:00:22 debug #99 runtime.execute_with_options_async / { exit_code = │ 00:19:02 verbose #26513 > > │ 0; output_length = 134 } │ 00:19:02 verbose #26514 > > │ 00:00:22 debug #100 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26515 > > │ { command = │ 00:19:02 verbose #26516 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26517 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26518 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26519 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26520 > > │ 00:00:22 verbose #101 > Creating │ 00:19:02 verbose #26521 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/c8e034f0843c86c31cc │ 00:19:02 verbose #26522 > > │ 3c64b5c2dbfc69aa176075142483c6070350a436ad974.svg │ 00:19:02 verbose #26523 > > │ 00:00:22 debug #102 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26524 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26525 > > │ 00:00:22 debug #103 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26526 > > │ { command = │ 00:19:02 verbose #26527 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26528 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26529 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26530 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26531 > > │ 00:00:22 verbose #104 > Creating │ 00:19:02 verbose #26532 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/d015b6ee7829dec2966 │ 00:19:02 verbose #26533 > > │ 0e9e1a8e2c91527fecaf400660e01b1e8c8fc50d64557.svg │ 00:19:02 verbose #26534 > > │ 00:00:22 debug #105 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26535 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26536 > > │ 00:00:22 debug #106 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26537 > > │ { command = │ 00:19:02 verbose #26538 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26539 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26540 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26541 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26542 > > │ 00:00:22 verbose #107 > Creating │ 00:19:02 verbose #26543 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/6f9e779b344f4181fd8 │ 00:19:02 verbose #26544 > > │ 010d1fbddf41de20d850557acba391b3cc908fbe8bfd7.svg │ 00:19:02 verbose #26545 > > │ 00:00:22 debug #108 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26546 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26547 > > │ 00:00:22 debug #109 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26548 > > │ { command = │ 00:19:02 verbose #26549 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26550 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26551 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26552 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26553 > > │ 00:00:22 verbose #110 > Creating │ 00:19:02 verbose #26554 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/e20cc83d71d3b2e4fb0 │ 00:19:02 verbose #26555 > > │ 37effa299afb3ae5fbad79a76be4333412b0afad44247.svg │ 00:19:02 verbose #26556 > > │ 00:00:22 debug #111 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26557 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26558 > > │ 00:00:22 debug #112 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26559 > > │ { command = │ 00:19:02 verbose #26560 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26561 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26562 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26563 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26564 > > │ 00:00:22 verbose #113 > Creating │ 00:19:02 verbose #26565 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/552767eafba3ce30973 │ 00:19:02 verbose #26566 > > │ 54bb928d9dd9d0af565a8b70940a42e08f6ad067d70a7.svg │ 00:19:02 verbose #26567 > > │ 00:00:22 debug #114 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26568 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26569 > > │ 00:00:22 debug #115 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26570 > > │ { command = │ 00:19:02 verbose #26571 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26572 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26573 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26574 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26575 > > │ 00:00:22 verbose #116 > Creating │ 00:19:02 verbose #26576 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/a27eac8f69f101def5f │ 00:19:02 verbose #26577 > > │ a6b4c8cebc059d503808937bc367d9d3608cec2712613.svg │ 00:19:02 verbose #26578 > > │ 00:00:22 debug #117 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26579 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26580 > > │ 00:00:22 debug #118 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26581 > > │ { command = │ 00:19:02 verbose #26582 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26583 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26584 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26585 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26586 > > │ 00:00:22 verbose #119 > Creating │ 00:19:02 verbose #26587 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/f8d04b749068750046e │ 00:19:02 verbose #26588 > > │ 5d0d76166fc42fe00e40d9e14143a48b9f18612895d93.svg │ 00:19:02 verbose #26589 > > │ 00:00:22 debug #120 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26590 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26591 > > │ 00:00:22 debug #121 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26592 > > │ { command = │ 00:19:02 verbose #26593 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26594 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26595 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26596 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26597 > > │ 00:00:22 verbose #122 > Creating │ 00:19:02 verbose #26598 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/e05df3b8d5b0fca4273 │ 00:19:02 verbose #26599 > > │ 5e5703316d5517e51dfac741018f80bcd59ecd3a56299.svg │ 00:19:02 verbose #26600 > > │ 00:00:22 debug #123 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26601 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26602 > > │ 00:00:22 debug #124 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26603 > > │ { command = │ 00:19:02 verbose #26604 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26605 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26606 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26607 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26608 > > │ 00:00:22 verbose #125 > Creating │ 00:19:02 verbose #26609 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/b40e8a5b3c77f4513a6 │ 00:19:02 verbose #26610 > > │ 29f118c91a77d5bdbde27147178a46ca1cfde97c15836.svg │ 00:19:02 verbose #26611 > > │ 00:00:22 debug #126 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26612 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26613 > > │ 00:00:22 debug #127 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26614 > > │ { command = │ 00:19:02 verbose #26615 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26616 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26617 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26618 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26619 > > │ 00:00:22 verbose #128 > Creating │ 00:19:02 verbose #26620 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/1e50fc8bee6db0bae99 │ 00:19:02 verbose #26621 > > │ 1559de569c542a977cc7f6ee8e358cc7e684dd7a2f7f2.svg │ 00:19:02 verbose #26622 > > │ 00:00:22 debug #129 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26623 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26624 > > │ 00:00:22 debug #130 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26625 > > │ { command = │ 00:19:02 verbose #26626 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26627 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26628 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26629 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26630 > > │ 00:00:22 verbose #131 > Creating │ 00:19:02 verbose #26631 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/fbb3fc7d0cd000d1f3d │ 00:19:02 verbose #26632 > > │ 5af25ecb9116851889fb7032aa024dd3767bf1dc9de2e.svg │ 00:19:02 verbose #26633 > > │ 00:00:22 debug #132 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26634 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26635 > > │ 00:00:22 debug #133 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26636 > > │ { command = │ 00:19:02 verbose #26637 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26638 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26639 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26640 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26641 > > │ 00:00:22 verbose #134 > Creating │ 00:19:02 verbose #26642 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/a0ee0690d9ef0a1e154 │ 00:19:02 verbose #26643 > > │ 7f259ca0d88a4510ec89dc61a7ffe0147e09ea2eb165a.svg │ 00:19:02 verbose #26644 > > │ 00:00:22 debug #135 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26645 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26646 > > │ 00:00:22 debug #136 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26647 > > │ { command = │ 00:19:02 verbose #26648 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26649 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26650 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26651 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26652 > > │ 00:00:22 verbose #137 > Creating │ 00:19:02 verbose #26653 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/8b62f10b9d3b9706823 │ 00:19:02 verbose #26654 > > │ 9e496cb7c5aa68b000dc2f78c5eba0b7fa19a7ebdd50c.svg │ 00:19:02 verbose #26655 > > │ 00:00:22 debug #138 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26656 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26657 > > │ 00:00:22 debug #139 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26658 > > │ { command = │ 00:19:02 verbose #26659 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26660 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26661 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26662 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26663 > > │ 00:00:22 verbose #140 > Creating │ 00:19:02 verbose #26664 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/6cc8f1c7e432d3649cb │ 00:19:02 verbose #26665 > > │ 9fdf9f9f7b7f384c65eacd3fb94e319272fe70dd633bf.svg │ 00:19:02 verbose #26666 > > │ 00:00:22 debug #141 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26667 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26668 > > │ 00:00:22 debug #142 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26669 > > │ { command = │ 00:19:02 verbose #26670 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26671 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26672 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26673 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26674 > > │ 00:00:22 verbose #143 > Creating │ 00:19:02 verbose #26675 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/ab40690e836b63af01e │ 00:19:02 verbose #26676 > > │ 2c82ea8febe670e52e11eb049e40c93bb8f8e5cf97c9e.svg │ 00:19:02 verbose #26677 > > │ 00:00:22 debug #144 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26678 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26679 > > │ 00:00:22 debug #145 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26680 > > │ { command = │ 00:19:02 verbose #26681 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26682 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26683 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26684 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26685 > > │ 00:00:22 verbose #146 > Creating │ 00:19:02 verbose #26686 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/4eb829ca41667f43116 │ 00:19:02 verbose #26687 > > │ d4631600e2dd123ca25ee7aa279f194251ee36431ea91.svg │ 00:19:02 verbose #26688 > > │ 00:00:22 debug #147 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26689 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26690 > > │ 00:00:22 debug #148 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26691 > > │ { command = │ 00:19:02 verbose #26692 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26693 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26694 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26695 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26696 > > │ 00:00:22 verbose #149 > Creating │ 00:19:02 verbose #26697 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/da621a77ae85752953b │ 00:19:02 verbose #26698 > > │ 1719c771c787f3c3594be470ba4dfb5ad8f63ff882412.svg │ 00:19:02 verbose #26699 > > │ 00:00:22 debug #150 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26700 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26701 > > │ 00:00:22 debug #151 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26702 > > │ { command = │ 00:19:02 verbose #26703 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26704 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26705 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26706 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26707 > > │ 00:00:22 verbose #152 > Creating │ 00:19:02 verbose #26708 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/4c133a696111e9637bd │ 00:19:02 verbose #26709 > > │ 800e10894b783253b1784f74a3e6562560f4f0d0e1de9.svg │ 00:19:02 verbose #26710 > > │ 00:00:22 debug #153 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26711 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26712 > > │ 00:00:22 debug #154 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26713 > > │ { command = │ 00:19:02 verbose #26714 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26715 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26716 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26717 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26718 > > │ 00:00:22 verbose #155 > Creating │ 00:19:02 verbose #26719 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/b4cf46b7a1116f7ff2b │ 00:19:02 verbose #26720 > > │ eea0f19067a0b69d8d2633074b74c7fa2e9419537bbe4.svg │ 00:19:02 verbose #26721 > > │ 00:00:22 debug #156 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26722 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26723 > > │ 00:00:22 debug #157 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26724 > > │ { command = │ 00:19:02 verbose #26725 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26726 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26727 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26728 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26729 > > │ 00:00:22 verbose #158 > Creating │ 00:19:02 verbose #26730 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/8228a67a385c42598d6 │ 00:19:02 verbose #26731 > > │ 5c8b0e86e8a53b5c32d9a669f5161004e7021b2aad6e3.svg │ 00:19:02 verbose #26732 > > │ 00:00:22 debug #159 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26733 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26734 > > │ 00:00:22 debug #160 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26735 > > │ { command = │ 00:19:02 verbose #26736 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26737 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26738 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26739 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26740 > > │ 00:00:22 verbose #161 > Creating │ 00:19:02 verbose #26741 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/2d27f0a40a52e488f83 │ 00:19:02 verbose #26742 > > │ 64971acea754a0034827c30ac23090ccf8e8afe1d5208.svg │ 00:19:02 verbose #26743 > > │ 00:00:22 debug #162 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26744 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26745 > > │ 00:00:22 debug #163 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26746 > > │ { command = │ 00:19:02 verbose #26747 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26748 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26749 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26750 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26751 > > │ 00:00:22 verbose #164 > Creating │ 00:19:02 verbose #26752 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/f398230047e42f5b916 │ 00:19:02 verbose #26753 > > │ 0ad9fa4a4a30d67def46763ac4e778955ca67702061d8.svg │ 00:19:02 verbose #26754 > > │ 00:00:22 debug #165 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26755 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26756 > > │ 00:00:22 debug #166 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26757 > > │ { command = │ 00:19:02 verbose #26758 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26759 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26760 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26761 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26762 > > │ 00:00:22 verbose #167 > Creating │ 00:19:02 verbose #26763 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/ba31ccdfae8fca85790 │ 00:19:02 verbose #26764 > > │ e9739a135e4599266c38003ca58db428cf83acd3bb12e.svg │ 00:19:02 verbose #26765 > > │ 00:00:22 debug #168 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26766 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26767 > > │ 00:00:22 debug #169 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26768 > > │ { command = │ 00:19:02 verbose #26769 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26770 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26771 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26772 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26773 > > │ 00:00:22 verbose #170 > Creating │ 00:19:02 verbose #26774 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/780ead643b98b8af35c │ 00:19:02 verbose #26775 > > │ 6ffc815ccde029abf9e61684b1372ede9e07e38c947fe.svg │ 00:19:02 verbose #26776 > > │ 00:00:22 debug #171 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26777 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26778 > > │ 00:00:22 debug #172 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26779 > > │ { command = │ 00:19:02 verbose #26780 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26781 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26782 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26783 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26784 > > │ 00:00:22 verbose #173 > Creating │ 00:19:02 verbose #26785 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/10bf803f5dd7d69401f │ 00:19:02 verbose #26786 > > │ e1e381285b4d67bb5e2f3a1c11e154f395b0625aaa81a.svg │ 00:19:02 verbose #26787 > > │ 00:00:22 debug #174 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26788 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26789 > > │ 00:00:22 debug #175 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26790 > > │ { command = │ 00:19:02 verbose #26791 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26792 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26793 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26794 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26795 > > │ 00:00:22 verbose #176 > Creating │ 00:19:02 verbose #26796 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/400b1e51fa7a1425882 │ 00:19:02 verbose #26797 > > │ 57ddb414c0a31a2b251bceb6690a25e4dfbdb9b436d1c.svg │ 00:19:02 verbose #26798 > > │ 00:00:22 debug #177 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26799 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26800 > > │ 00:00:22 debug #178 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26801 > > │ { command = │ 00:19:02 verbose #26802 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26803 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26804 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26805 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26806 > > │ 00:00:22 verbose #179 > Creating │ 00:19:02 verbose #26807 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/04074dcfa8c9444af4b │ 00:19:02 verbose #26808 > > │ cf09bf944b37caa36f05fb020fa972ae58171bba415e1.svg │ 00:19:02 verbose #26809 > > │ 00:00:22 debug #180 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26810 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26811 > > │ 00:00:22 debug #181 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26812 > > │ { command = │ 00:19:02 verbose #26813 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26814 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26815 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26816 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26817 > > │ 00:00:22 verbose #182 > Creating │ 00:19:02 verbose #26818 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/988cea705b16ac29a20 │ 00:19:02 verbose #26819 > > │ 07ee4aea8dea72c7adef2889dd956ad5487d25e12b369.svg │ 00:19:02 verbose #26820 > > │ 00:00:22 debug #183 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26821 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26822 > > │ 00:00:22 debug #184 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26823 > > │ { command = │ 00:19:02 verbose #26824 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26825 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26826 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26827 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26828 > > │ 00:00:22 verbose #185 > Creating │ 00:19:02 verbose #26829 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/31ff79312dc9242531f │ 00:19:02 verbose #26830 > > │ 49bdaac4b1ef4df454de8e801dcbaaea5a774015733e9.svg │ 00:19:02 verbose #26831 > > │ 00:00:22 debug #186 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26832 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26833 > > │ 00:00:22 debug #187 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26834 > > │ { command = │ 00:19:02 verbose #26835 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26836 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26837 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26838 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26839 > > │ 00:00:22 verbose #188 > Creating │ 00:19:02 verbose #26840 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/8f27371f86a551c5ea3 │ 00:19:02 verbose #26841 > > │ 0fe882e5b6cb3028d89ad84e6c71144dc12250a6f6848.svg │ 00:19:02 verbose #26842 > > │ 00:00:22 debug #189 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26843 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26844 > > │ 00:00:22 debug #190 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26845 > > │ { command = │ 00:19:02 verbose #26846 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26847 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26848 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26849 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26850 > > │ 00:00:22 verbose #191 > Creating │ 00:19:02 verbose #26851 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/afc52222ff828d5c960 │ 00:19:02 verbose #26852 > > │ 13fd771aff43b465546b50555499413d4f080e9026d87.svg │ 00:19:02 verbose #26853 > > │ 00:00:22 debug #192 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26854 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26855 > > │ 00:00:22 debug #193 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26856 > > │ { command = │ 00:19:02 verbose #26857 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26858 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26859 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26860 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26861 > > │ 00:00:22 verbose #194 > Creating │ 00:19:02 verbose #26862 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/01e5051d655ef25e1c5 │ 00:19:02 verbose #26863 > > │ e09370fee684bfc2aa1f099acec9c46c60656266b3f8c.svg │ 00:19:02 verbose #26864 > > │ 00:00:22 debug #195 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26865 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26866 > > │ 00:00:22 debug #196 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26867 > > │ { command = │ 00:19:02 verbose #26868 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26869 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26870 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26871 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26872 > > │ 00:00:22 verbose #197 > Creating │ 00:19:02 verbose #26873 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/5588421d5672a19d3d5 │ 00:19:02 verbose #26874 > > │ 8374d08bff6cbc79cf882258d65127325dd80c4869f31.svg │ 00:19:02 verbose #26875 > > │ 00:00:22 debug #198 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26876 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26877 > > │ 00:00:22 debug #199 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26878 > > │ { command = │ 00:19:02 verbose #26879 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26880 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26881 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26882 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26883 > > │ 00:00:22 verbose #200 > Creating │ 00:19:02 verbose #26884 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/719cf660228f57fd884 │ 00:19:02 verbose #26885 > > │ 7d696090075444289b6dd7fb5fd3d15959d463ff28dd4.svg │ 00:19:02 verbose #26886 > > │ 00:00:22 debug #201 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26887 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26888 > > │ 00:00:22 debug #202 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26889 > > │ { command = │ 00:19:02 verbose #26890 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26891 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26892 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26893 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26894 > > │ 00:00:22 verbose #203 > Creating │ 00:19:02 verbose #26895 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/3937c309891869cde17 │ 00:19:02 verbose #26896 > > │ 82a676801b77a082e459f8541d1e05a7516c2d6a3a72b.svg │ 00:19:02 verbose #26897 > > │ 00:00:22 debug #204 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26898 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26899 > > │ 00:00:22 debug #205 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26900 > > │ { command = │ 00:19:02 verbose #26901 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26902 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26903 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26904 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26905 > > │ 00:00:22 verbose #206 > Creating │ 00:19:02 verbose #26906 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/3d48c97a72e450bf34c │ 00:19:02 verbose #26907 > > │ b16f39f9fa7a60c4f643c0f2eb8d8bc1832fda0e3cd54.svg │ 00:19:02 verbose #26908 > > │ 00:00:22 debug #207 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26909 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26910 > > │ 00:00:22 debug #208 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26911 > > │ { command = │ 00:19:02 verbose #26912 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26913 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26914 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26915 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26916 > > │ 00:00:22 verbose #209 > Creating │ 00:19:02 verbose #26917 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/723726570af61bed1da │ 00:19:02 verbose #26918 > > │ a85181582acdd1a38621d0127fb5bb285a52cbca9c55e.svg │ 00:19:02 verbose #26919 > > │ 00:00:22 debug #210 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26920 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26921 > > │ 00:00:22 debug #211 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26922 > > │ { command = │ 00:19:02 verbose #26923 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26924 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26925 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26926 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26927 > > │ 00:00:22 verbose #212 > Creating │ 00:19:02 verbose #26928 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/41edb0d06298b6a2b77 │ 00:19:02 verbose #26929 > > │ e6b0b0f8181d07eae00c470242422c86f2d3a9df20f2c.svg │ 00:19:02 verbose #26930 > > │ 00:00:22 debug #213 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26931 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26932 > > │ 00:00:22 debug #214 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26933 > > │ { command = │ 00:19:02 verbose #26934 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26935 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26936 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26937 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26938 > > │ 00:00:22 verbose #215 > Creating │ 00:19:02 verbose #26939 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/ecdf43a5e27f3b42643 │ 00:19:02 verbose #26940 > > │ 4ff6d5c263120f68db972ab74626ec1f04425e21353be.svg │ 00:19:02 verbose #26941 > > │ 00:00:22 debug #216 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26942 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26943 > > │ 00:00:22 debug #217 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26944 > > │ { command = │ 00:19:02 verbose #26945 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26946 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26947 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26948 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26949 > > │ 00:00:22 verbose #218 > Creating │ 00:19:02 verbose #26950 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/f4e498f816d3ebaa617 │ 00:19:02 verbose #26951 > > │ 01bfb8382cad124f71ed3342c3db593fdc4baa294e95f.svg │ 00:19:02 verbose #26952 > > │ 00:00:22 debug #219 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26953 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26954 > > │ 00:00:22 debug #220 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26955 > > │ { command = │ 00:19:02 verbose #26956 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26957 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26958 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26959 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26960 > > │ 00:00:23 verbose #221 > Creating │ 00:19:02 verbose #26961 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/d101f682dfddc088e75 │ 00:19:02 verbose #26962 > > │ 79974ced37aa327a3bb1ae0ed5025b005fa24ea15a7dc.svg │ 00:19:02 verbose #26963 > > │ 00:00:23 debug #222 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26964 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26965 > > │ 00:00:23 debug #223 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26966 > > │ { command = │ 00:19:02 verbose #26967 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26968 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26969 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26970 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26971 > > │ 00:00:23 verbose #224 > Creating │ 00:19:02 verbose #26972 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/bc8871e382c35fb2841 │ 00:19:02 verbose #26973 > > │ 03c8eca5f2c1b7b3aabf0dfe7a88637d96bb558d749ab.svg │ 00:19:02 verbose #26974 > > │ 00:00:23 debug #225 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26975 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26976 > > │ 00:00:23 debug #226 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26977 > > │ { command = │ 00:19:02 verbose #26978 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26979 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26980 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26981 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26982 > > │ 00:00:23 verbose #227 > Creating │ 00:19:02 verbose #26983 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/810be92ead3834fd2f9 │ 00:19:02 verbose #26984 > > │ daf062ebd24ad35f15e24dce54aa82d69e13a2158a733.svg │ 00:19:02 verbose #26985 > > │ 00:00:23 debug #228 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26986 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26987 > > │ 00:00:23 debug #229 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26988 > > │ { command = │ 00:19:02 verbose #26989 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #26990 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #26991 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #26992 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #26993 > > │ 00:00:23 verbose #230 > Creating │ 00:19:02 verbose #26994 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/8c23dcf0c85bba40477 │ 00:19:02 verbose #26995 > > │ a6dc081dfef35f4ea67e9ad5731e1b83eeb9ce13418e0.svg │ 00:19:02 verbose #26996 > > │ 00:00:23 debug #231 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #26997 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #26998 > > │ 00:00:23 debug #232 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #26999 > > │ { command = │ 00:19:02 verbose #27000 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #27001 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #27002 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #27003 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #27004 > > │ 00:00:23 verbose #233 > Creating │ 00:19:02 verbose #27005 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/00c79858fdfeff82c99 │ 00:19:02 verbose #27006 > > │ 76e8339acf00f55b7911d85d3a5549512a823160750f1.svg │ 00:19:02 verbose #27007 > > │ 00:00:23 debug #234 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #27008 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #27009 > > │ 00:00:23 debug #235 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #27010 > > │ { command = │ 00:19:02 verbose #27011 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #27012 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #27013 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #27014 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #27015 > > │ 00:00:23 verbose #236 > Creating │ 00:19:02 verbose #27016 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/248aa1496994a15d405 │ 00:19:02 verbose #27017 > > │ a052aab722597383eb415943b4e9a72c87961aad83430.svg │ 00:19:02 verbose #27018 > > │ 00:00:23 debug #237 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #27019 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #27020 > > │ 00:00:23 debug #238 runtime.execute_with_options_async / { options = │ 00:19:02 verbose #27021 > > │ { command = │ 00:19:02 verbose #27022 > > │ /home/runner/work/polyglot/polyglot/workspace/target/release/plot; │ 00:19:02 verbose #27023 > > │ cancellation_token = Some System.Threading.CancellationToken; │ 00:19:02 verbose #27024 > > │ environment_variables = [||]; on_line = None; stdin = None; trace = true; │ 00:19:02 verbose #27025 > > │ working_directory = Some "/home/runner/work/polyglot/polyglot" } } │ 00:19:02 verbose #27026 > > │ 00:00:23 verbose #239 > Creating │ 00:19:02 verbose #27027 > > │ /home/runner/work/polyglot/polyglot/target/plot/line_svg/bede6e595697b6a21a1 │ 00:19:02 verbose #27028 > > │ b37ce58511f9e5adf6df47f0174d56d18df06b722c982.svg │ 00:19:02 verbose #27029 > > │ 00:00:23 debug #240 runtime.execute_with_options_async / { exit_code │ 00:19:02 verbose #27030 > > │ = 0; output_length = 134 } │ 00:19:02 verbose #27031 > > │ │ 00:19:02 verbose #27032 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:02 verbose #27033 > > 00:19:02 verbose #27034 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:02 verbose #27035 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:02 verbose #27036 > > │ ## end │ 00:19:02 verbose #27037 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:03 verbose #27038 > 00:00:34 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 289843 } 00:19:03 verbose #27039 > 00:00:34 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:19:03 verbose #27040 > "nbconvert", 00:19:03 verbose #27041 > "/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.ipynb", 00:19:03 verbose #27042 > "--to", 00:19:03 verbose #27043 > "html", 00:19:03 verbose #27044 > "--HTMLExporter.theme=dark", 00:19:03 verbose #27045 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:03 verbose #27046 > 00:00:34 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.ipynb to html 00:19:03 verbose #27047 > 00:00:34 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:19:03 verbose #27048 > 00:00:34 verbose #7 ! validate(nb) 00:19:04 verbose #27049 > 00:00:35 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:19:04 verbose #27050 > 00:00:35 verbose #9 ! return _pygments_highlight( 00:19:06 verbose #27051 > 00:00:37 verbose #10 ! [NbConvertApp] Writing 2570587 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.html 00:19:06 verbose #27052 > 00:00:37 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 899 } 00:19:06 verbose #27053 > 00:00:37 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 899 } 00:19:06 verbose #27054 > 00:00:37 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:19:06 verbose #27055 > "-c", 00:19:06 verbose #27056 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:19:06 verbose #27057 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:06 verbose #27058 > 00:00:38 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:19:06 verbose #27059 > 00:00:38 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:19:06 verbose #27060 > 00:00:38 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 290801 } 00:19:06 debug #27061 runtime.execute_with_options_async / { exit_code = 0; output_length = 301314 } 00:19:06 debug #31 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path physics.dib --retries 3 00:19:06 debug #27062 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path seq.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:06 verbose #27063 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "seq.dib", "--retries", "3"])) } 00:19:06 verbose #27064 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:19:06 verbose #27065 > "repl", 00:19:06 verbose #27066 > "--exit-after-run", 00:19:06 verbose #27067 > "--run", 00:19:06 verbose #27068 > "/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib", 00:19:06 verbose #27069 > "--output-path", 00:19:06 verbose #27070 > "/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.ipynb", 00:19:06 verbose #27071 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:19:08 verbose #27072 > > 00:19:08 verbose #27073 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:08 verbose #27074 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:08 verbose #27075 > > │ # seq │ 00:19:08 verbose #27076 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:10 verbose #27077 > > 00:19:10 verbose #27078 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:10 verbose #27079 > > //// test 00:19:10 verbose #27080 > > 00:19:10 verbose #27081 > > open testing 00:19:11 verbose #27082 > > 00:19:11 verbose #27083 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:11 verbose #27084 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:11 verbose #27085 > > │ ## seq │ 00:19:11 verbose #27086 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:11 verbose #27087 > > 00:19:11 verbose #27088 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:11 verbose #27089 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:11 verbose #27090 > > │ ### seq │ 00:19:11 verbose #27091 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:11 verbose #27092 > > 00:19:11 verbose #27093 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:11 verbose #27094 > > type seq dim el = dim -> option el 00:19:11 verbose #27095 > > 00:19:11 verbose #27096 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:11 verbose #27097 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:11 verbose #27098 > > │ ### try_item │ 00:19:11 verbose #27099 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:11 verbose #27100 > > 00:19:11 verbose #27101 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:11 verbose #27102 > > inl try_item n s = 00:19:11 verbose #27103 > > n |> s 00:19:11 verbose #27104 > > 00:19:11 verbose #27105 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:11 verbose #27106 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:11 verbose #27107 > > │ ### from_list │ 00:19:11 verbose #27108 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:11 verbose #27109 > > 00:19:11 verbose #27110 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:11 verbose #27111 > > inl from_list list = 00:19:11 verbose #27112 > > fun n => 00:19:11 verbose #27113 > > list 00:19:11 verbose #27114 > > |> listm'.try_item n 00:19:11 verbose #27115 > > 00:19:11 verbose #27116 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:11 verbose #27117 > > //// test 00:19:11 verbose #27118 > > 00:19:11 verbose #27119 > > listm.init 10i32 print_and_return 00:19:11 verbose #27120 > > |> from_list 00:19:11 verbose #27121 > > |> try_item 5i32 00:19:11 verbose #27122 > > |> _assert_eq (Some 5i32) 00:19:12 verbose #27123 > > 00:19:12 verbose #27124 > > ╭─[ 1.03s - stdout ]───────────────────────────────────────────────────────────╮ 00:19:12 verbose #27125 > > │ print_and_return / x: 0 │ 00:19:12 verbose #27126 > > │ print_and_return / x: 1 │ 00:19:12 verbose #27127 > > │ print_and_return / x: 2 │ 00:19:12 verbose #27128 > > │ print_and_return / x: 3 │ 00:19:12 verbose #27129 > > │ print_and_return / x: 4 │ 00:19:12 verbose #27130 > > │ print_and_return / x: 5 │ 00:19:12 verbose #27131 > > │ print_and_return / x: 6 │ 00:19:12 verbose #27132 > > │ print_and_return / x: 7 │ 00:19:12 verbose #27133 > > │ print_and_return / x: 8 │ 00:19:12 verbose #27134 > > │ print_and_return / x: 9 │ 00:19:12 verbose #27135 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5 │ 00:19:12 verbose #27136 > > │ │ 00:19:12 verbose #27137 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:12 verbose #27138 > > 00:19:12 verbose #27139 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:12 verbose #27140 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:12 verbose #27141 > > │ ### map │ 00:19:12 verbose #27142 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:12 verbose #27143 > > 00:19:12 verbose #27144 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:12 verbose #27145 > > inl map fn s = 00:19:12 verbose #27146 > > fun n => 00:19:12 verbose #27147 > > n 00:19:12 verbose #27148 > > |> s 00:19:12 verbose #27149 > > |> optionm.map fn 00:19:12 verbose #27150 > > 00:19:12 verbose #27151 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:12 verbose #27152 > > //// test 00:19:12 verbose #27153 > > 00:19:12 verbose #27154 > > listm.init 10i32 id 00:19:12 verbose #27155 > > |> from_list 00:19:12 verbose #27156 > > |> map ((*) 2) 00:19:12 verbose #27157 > > |> try_item 5i32 00:19:12 verbose #27158 > > |> _assert_eq (Some 10i32) 00:19:12 verbose #27159 > > 00:19:12 verbose #27160 > > ╭─[ 116.11ms - stdout ]────────────────────────────────────────────────────────╮ 00:19:12 verbose #27161 > > │ __assert_eq / actual: US0_0 10 / expected: US0_0 10 │ 00:19:12 verbose #27162 > > │ │ 00:19:12 verbose #27163 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:12 verbose #27164 > > 00:19:12 verbose #27165 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:12 verbose #27166 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:12 verbose #27167 > > │ ### mapi │ 00:19:12 verbose #27168 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:12 verbose #27169 > > 00:19:12 verbose #27170 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:12 verbose #27171 > > inl mapi fn s = 00:19:12 verbose #27172 > > fun n => 00:19:12 verbose #27173 > > n 00:19:12 verbose #27174 > > |> s 00:19:12 verbose #27175 > > |> optionm.map (fn n) 00:19:12 verbose #27176 > > 00:19:12 verbose #27177 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:12 verbose #27178 > > //// test 00:19:12 verbose #27179 > > 00:19:12 verbose #27180 > > listm.init 10i32 print_and_return 00:19:12 verbose #27181 > > |> from_list 00:19:12 verbose #27182 > > |> mapi fun i x => i + x 00:19:12 verbose #27183 > > |> try_item 5i32 00:19:12 verbose #27184 > > |> _assert_eq (Some 10i32) 00:19:13 verbose #27185 > > 00:19:13 verbose #27186 > > ╭─[ 132.62ms - stdout ]────────────────────────────────────────────────────────╮ 00:19:13 verbose #27187 > > │ print_and_return / x: 0 │ 00:19:13 verbose #27188 > > │ print_and_return / x: 1 │ 00:19:13 verbose #27189 > > │ print_and_return / x: 2 │ 00:19:13 verbose #27190 > > │ print_and_return / x: 3 │ 00:19:13 verbose #27191 > > │ print_and_return / x: 4 │ 00:19:13 verbose #27192 > > │ print_and_return / x: 5 │ 00:19:13 verbose #27193 > > │ print_and_return / x: 6 │ 00:19:13 verbose #27194 > > │ print_and_return / x: 7 │ 00:19:13 verbose #27195 > > │ print_and_return / x: 8 │ 00:19:13 verbose #27196 > > │ print_and_return / x: 9 │ 00:19:13 verbose #27197 > > │ __assert_eq / actual: US0_0 10 / expected: US0_0 10 │ 00:19:13 verbose #27198 > > │ │ 00:19:13 verbose #27199 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:13 verbose #27200 > > 00:19:13 verbose #27201 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:13 verbose #27202 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:13 verbose #27203 > > │ ### choose │ 00:19:13 verbose #27204 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:13 verbose #27205 > > 00:19:13 verbose #27206 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:13 verbose #27207 > > inl choose forall dim {number} t u. (fn : t -> option u) (s : seq dim t) : seq 00:19:13 verbose #27208 > > dim u = 00:19:13 verbose #27209 > > fun n => 00:19:13 verbose #27210 > > inl rec body fn s i i' = 00:19:13 verbose #27211 > > match i |> s with 00:19:13 verbose #27212 > > | None => None 00:19:13 verbose #27213 > > | Some x => 00:19:13 verbose #27214 > > match x |> fn with 00:19:13 verbose #27215 > > | Some x when n = i' => Some x 00:19:13 verbose #27216 > > | Some _ => loop (i + 1) (i' + 1) 00:19:13 verbose #27217 > > | _ => loop (i + 1) i' 00:19:13 verbose #27218 > > and inl loop i i' = 00:19:13 verbose #27219 > > if n |> var_is |> not 00:19:13 verbose #27220 > > then body fn s i i' 00:19:13 verbose #27221 > > else 00:19:13 verbose #27222 > > inl fn = join fn 00:19:13 verbose #27223 > > inl s = join s 00:19:13 verbose #27224 > > join body fn s i i' 00:19:13 verbose #27225 > > loop 0 0 00:19:13 verbose #27226 > > 00:19:13 verbose #27227 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:13 verbose #27228 > > //// test 00:19:13 verbose #27229 > > 00:19:13 verbose #27230 > > listm.init 10i32 print_and_return 00:19:13 verbose #27231 > > |> from_list 00:19:13 verbose #27232 > > |> choose (fun x => if x % 2 = 0 then Some x else None) 00:19:13 verbose #27233 > > |> try_item 1i32 00:19:13 verbose #27234 > > |> _assert_eq (Some 2i32) 00:19:13 verbose #27235 > > 00:19:13 verbose #27236 > > ╭─[ 162.31ms - stdout ]────────────────────────────────────────────────────────╮ 00:19:13 verbose #27237 > > │ print_and_return / x: 0 │ 00:19:13 verbose #27238 > > │ print_and_return / x: 1 │ 00:19:13 verbose #27239 > > │ print_and_return / x: 2 │ 00:19:13 verbose #27240 > > │ print_and_return / x: 3 │ 00:19:13 verbose #27241 > > │ print_and_return / x: 4 │ 00:19:13 verbose #27242 > > │ print_and_return / x: 5 │ 00:19:13 verbose #27243 > > │ print_and_return / x: 6 │ 00:19:13 verbose #27244 > > │ print_and_return / x: 7 │ 00:19:13 verbose #27245 > > │ print_and_return / x: 8 │ 00:19:13 verbose #27246 > > │ print_and_return / x: 9 │ 00:19:13 verbose #27247 > > │ __assert_eq / actual: US0_0 2 / expected: US0_0 2 │ 00:19:13 verbose #27248 > > │ │ 00:19:13 verbose #27249 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:13 verbose #27250 > > 00:19:13 verbose #27251 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:13 verbose #27252 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:13 verbose #27253 > > │ ### indexed │ 00:19:13 verbose #27254 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:13 verbose #27255 > > 00:19:13 verbose #27256 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:13 verbose #27257 > > inl indexed s = 00:19:13 verbose #27258 > > s 00:19:13 verbose #27259 > > |> mapi fun i x => 00:19:13 verbose #27260 > > i, x 00:19:13 verbose #27261 > > 00:19:13 verbose #27262 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:13 verbose #27263 > > //// test 00:19:13 verbose #27264 > > 00:19:13 verbose #27265 > > listm.init 10i32 ((*) 2) 00:19:13 verbose #27266 > > |> from_list 00:19:13 verbose #27267 > > |> indexed 00:19:13 verbose #27268 > > |> try_item 5i32 00:19:13 verbose #27269 > > |> _assert_eq (Some (5i32, 10i32)) 00:19:13 verbose #27270 > > 00:19:13 verbose #27271 > > ╭─[ 113.47ms - stdout ]────────────────────────────────────────────────────────╮ 00:19:13 verbose #27272 > > │ __assert_eq / actual: US0_0 (5, 10) / expected: US0_0 (5, 10) │ 00:19:13 verbose #27273 > > │ │ 00:19:13 verbose #27274 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:13 verbose #27275 > > 00:19:13 verbose #27276 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:13 verbose #27277 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:13 verbose #27278 > > │ ### zip │ 00:19:13 verbose #27279 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:13 verbose #27280 > > 00:19:13 verbose #27281 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:13 verbose #27282 > > inl zip n seq1 seq2 = 00:19:13 verbose #27283 > > seq1 n, seq2 n 00:19:13 verbose #27284 > > 00:19:13 verbose #27285 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:13 verbose #27286 > > //// test 00:19:13 verbose #27287 > > 00:19:13 verbose #27288 > > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list)) 00:19:13 verbose #27289 > > ||> zip 5i32 00:19:13 verbose #27290 > > |> _assert_eq (Some 5, Some 10) 00:19:13 verbose #27291 > > 00:19:13 verbose #27292 > > ╭─[ 115.92ms - stdout ]────────────────────────────────────────────────────────╮ 00:19:13 verbose #27293 > > │ __assert_eq / actual: struct (US0_0 5, US0_0 10) / expected: struct (US0_0 │ 00:19:13 verbose #27294 > > │ 5, US0_0 10) │ 00:19:13 verbose #27295 > > │ │ 00:19:13 verbose #27296 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:13 verbose #27297 > > 00:19:13 verbose #27298 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:13 verbose #27299 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:13 verbose #27300 > > │ ### zip_with │ 00:19:13 verbose #27301 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:13 verbose #27302 > > 00:19:13 verbose #27303 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:13 verbose #27304 > > inl zip_with fn seq1 seq2 = 00:19:13 verbose #27305 > > fun n => 00:19:13 verbose #27306 > > fn (seq1 n) (seq2 n) 00:19:13 verbose #27307 > > 00:19:13 verbose #27308 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:13 verbose #27309 > > //// test 00:19:13 verbose #27310 > > 00:19:13 verbose #27311 > > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list)) 00:19:13 verbose #27312 > > ||> zip_with (optionm'.choose (+)) 00:19:13 verbose #27313 > > |> try_item 2i32 00:19:13 verbose #27314 > > |> _assert_eq (Some 6) 00:19:13 verbose #27315 > > 00:19:13 verbose #27316 > > ╭─[ 108.50ms - stdout ]────────────────────────────────────────────────────────╮ 00:19:13 verbose #27317 > > │ __assert_eq / actual: US0_0 6 / expected: US0_0 6 │ 00:19:13 verbose #27318 > > │ │ 00:19:13 verbose #27319 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:13 verbose #27320 > > 00:19:13 verbose #27321 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:13 verbose #27322 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:13 verbose #27323 > > │ ### fold │ 00:19:13 verbose #27324 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:13 verbose #27325 > > 00:19:13 verbose #27326 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:13 verbose #27327 > > inl fold fn init seq = 00:19:13 verbose #27328 > > inl rec loop acc n = 00:19:13 verbose #27329 > > match seq n with 00:19:13 verbose #27330 > > | Some x => loop (fn acc x) (n + 1) 00:19:13 verbose #27331 > > | None => acc 00:19:13 verbose #27332 > > loop init 0 00:19:13 verbose #27333 > > 00:19:13 verbose #27334 > > inl fold_ fn init seq = 00:19:13 verbose #27335 > > let rec loop acc n = 00:19:13 verbose #27336 > > match seq n with 00:19:13 verbose #27337 > > | Some x => loop (fn acc x) (n + 1) 00:19:13 verbose #27338 > > | None => acc 00:19:13 verbose #27339 > > loop init 0 00:19:13 verbose #27340 > > 00:19:13 verbose #27341 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:13 verbose #27342 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:13 verbose #27343 > > │ ### sum │ 00:19:13 verbose #27344 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:13 verbose #27345 > > 00:19:13 verbose #27346 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:13 verbose #27347 > > inl sum seq = 00:19:13 verbose #27348 > > seq |> fold (+) 0 00:19:13 verbose #27349 > > 00:19:13 verbose #27350 > > inl sum_ seq = 00:19:13 verbose #27351 > > seq |> fold_ (+) 0 00:19:14 verbose #27352 > > 00:19:14 verbose #27353 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:14 verbose #27354 > > //// test 00:19:14 verbose #27355 > > 00:19:14 verbose #27356 > > listm.init 10i32 id 00:19:14 verbose #27357 > > |> from_list 00:19:14 verbose #27358 > > |> fun f (n : i32) => f n 00:19:14 verbose #27359 > > |> sum 00:19:14 verbose #27360 > > |> _assert_eq 45 00:19:14 verbose #27361 > > 00:19:14 verbose #27362 > > ╭─[ 103.95ms - stdout ]────────────────────────────────────────────────────────╮ 00:19:14 verbose #27363 > > │ __assert_eq / actual: 45 / expected: 45 │ 00:19:14 verbose #27364 > > │ │ 00:19:14 verbose #27365 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:14 verbose #27366 > > 00:19:14 verbose #27367 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:14 verbose #27368 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:14 verbose #27369 > > │ ### to_list │ 00:19:14 verbose #27370 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:14 verbose #27371 > > 00:19:14 verbose #27372 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:14 verbose #27373 > > inl to_list seq = 00:19:14 verbose #27374 > > seq 00:19:14 verbose #27375 > > |> fold (fun acc x => x :: acc) [[]] 00:19:14 verbose #27376 > > |> listm.rev 00:19:14 verbose #27377 > > 00:19:14 verbose #27378 > > inl to_list_ seq = 00:19:14 verbose #27379 > > seq 00:19:14 verbose #27380 > > |> fold_ (fun acc x => x :: acc) [[]] 00:19:14 verbose #27381 > > |> listm.rev 00:19:14 verbose #27382 > > 00:19:14 verbose #27383 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:14 verbose #27384 > > //// test 00:19:14 verbose #27385 > > 00:19:14 verbose #27386 > > listm.init 10i32 id 00:19:14 verbose #27387 > > |> from_list 00:19:14 verbose #27388 > > |> fun f (n : i32) => f n 00:19:14 verbose #27389 > > |> to_list 00:19:14 verbose #27390 > > |> _assert_eq (listm.init 10i32 id) 00:19:14 verbose #27391 > > 00:19:14 verbose #27392 > > ╭─[ 144.38ms - stdout ]────────────────────────────────────────────────────────╮ 00:19:14 verbose #27393 > > │ __assert_eq / actual: UH0_1 │ 00:19:14 verbose #27394 > > │ (0, │ 00:19:14 verbose #27395 > > │ UH0_1 │ 00:19:14 verbose #27396 > > │ (1, │ 00:19:14 verbose #27397 > > │ UH0_1 │ 00:19:14 verbose #27398 > > │ (2, │ 00:19:14 verbose #27399 > > │ UH0_1 │ 00:19:14 verbose #27400 > > │ (3, │ 00:19:14 verbose #27401 > > │ UH0_1 │ 00:19:14 verbose #27402 > > │ (4, UH0_1 (5, UH0_1 (6, UH0_1 (7, UH0_1 (8, UH0_1 (9, │ 00:19:14 verbose #27403 > > │ UH0_0)))))))))) / expected: UH0_1 │ 00:19:14 verbose #27404 > > │ (0, │ 00:19:14 verbose #27405 > > │ UH0_1 │ 00:19:14 verbose #27406 > > │ (1, │ 00:19:14 verbose #27407 > > │ UH0_1 │ 00:19:14 verbose #27408 > > │ (2, │ 00:19:14 verbose #27409 > > │ UH0_1 │ 00:19:14 verbose #27410 > > │ (3, │ 00:19:14 verbose #27411 > > │ UH0_1 │ 00:19:14 verbose #27412 > > │ (4, UH0_1 (5, UH0_1 (6, UH0_1 (7, UH0_1 (8, UH0_1 (9, │ 00:19:14 verbose #27413 > > │ UH0_0)))))))))) │ 00:19:14 verbose #27414 > > │ │ 00:19:14 verbose #27415 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:14 verbose #27416 > > 00:19:14 verbose #27417 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:14 verbose #27418 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:14 verbose #27419 > > │ ### from_array │ 00:19:14 verbose #27420 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:14 verbose #27421 > > 00:19:14 verbose #27422 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:14 verbose #27423 > > inl from_array forall dim {number; int} el. (array : a dim el) : seq dim el = 00:19:14 verbose #27424 > > fun n => 00:19:14 verbose #27425 > > if n >= length array 00:19:14 verbose #27426 > > then None 00:19:14 verbose #27427 > > else index array n |> Some 00:19:14 verbose #27428 > > 00:19:14 verbose #27429 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:14 verbose #27430 > > //// test 00:19:14 verbose #27431 > > 00:19:14 verbose #27432 > > a ;[[ 1; 2; 3 ]] 00:19:14 verbose #27433 > > |> from_array 00:19:14 verbose #27434 > > |> try_item 1i32 00:19:14 verbose #27435 > > |> _assert_eq (Some 2i32) 00:19:15 verbose #27436 > > 00:19:15 verbose #27437 > > ╭─[ 561.88ms - stdout ]────────────────────────────────────────────────────────╮ 00:19:15 verbose #27438 > > │ __assert_eq / actual: US0_0 2 / expected: US0_0 2 │ 00:19:15 verbose #27439 > > │ │ 00:19:15 verbose #27440 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:15 verbose #27441 > > 00:19:15 verbose #27442 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:15 verbose #27443 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:15 verbose #27444 > > │ ### to_array │ 00:19:15 verbose #27445 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:15 verbose #27446 > > 00:19:15 verbose #27447 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:15 verbose #27448 > > inl to_array seq = 00:19:15 verbose #27449 > > inl ar = a ;[[]] |> mut 00:19:15 verbose #27450 > > ((), seq) 00:19:15 verbose #27451 > > ||> fold fun _ x => 00:19:15 verbose #27452 > > ar <- *ar ++ a ;[[x]] 00:19:15 verbose #27453 > > *ar 00:19:15 verbose #27454 > > 00:19:15 verbose #27455 > > inl to_array_ seq = 00:19:15 verbose #27456 > > inl ar = a ;[[]] |> mut 00:19:15 verbose #27457 > > ((), seq) 00:19:15 verbose #27458 > > ||> fold_ fun _ x => 00:19:15 verbose #27459 > > ar <- *ar ++ a ;[[x]] 00:19:15 verbose #27460 > > *ar 00:19:15 verbose #27461 > > 00:19:15 verbose #27462 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:15 verbose #27463 > > //// test 00:19:15 verbose #27464 > > 00:19:15 verbose #27465 > > listm.init 10i32 id 00:19:15 verbose #27466 > > |> from_list 00:19:15 verbose #27467 > > |> fun (x : i32 -> _) => x 00:19:15 verbose #27468 > > |> to_array 00:19:15 verbose #27469 > > |> _assert_eq (a ;[[ 0; 1; 2; 3; 4; 5; 6; 7; 8; 9 ]] : _ i32 _) 00:19:15 verbose #27470 > > 00:19:15 verbose #27471 > > ╭─[ 296.61ms - stdout ]────────────────────────────────────────────────────────╮ 00:19:15 verbose #27472 > > │ __assert_eq / actual: [|0; 1; 2; 3; 4; 5; 6; 7; 8; 9|] / expected: [|0; 1; │ 00:19:15 verbose #27473 > > │ 2; 3; 4; 5; 6; 7; 8; 9|] │ 00:19:15 verbose #27474 > > │ │ 00:19:15 verbose #27475 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:15 verbose #27476 > > 00:19:15 verbose #27477 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:15 verbose #27478 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:15 verbose #27479 > > │ ### take_while │ 00:19:15 verbose #27480 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:15 verbose #27481 > > 00:19:15 verbose #27482 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:15 verbose #27483 > > inl take_while cond seq = 00:19:15 verbose #27484 > > inl rec loop acc i = 00:19:15 verbose #27485 > > match seq i with 00:19:15 verbose #27486 > > | Some st when cond st i => loop (st :: acc) (i + 1) 00:19:15 verbose #27487 > > | _ => acc |> listm.rev 00:19:15 verbose #27488 > > loop [[]] 0 00:19:15 verbose #27489 > > 00:19:15 verbose #27490 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:15 verbose #27491 > > //// test 00:19:15 verbose #27492 > > 00:19:15 verbose #27493 > > listm.init 10i32 id 00:19:15 verbose #27494 > > |> from_list 00:19:15 verbose #27495 > > |> take_while (fun n (_ : i32) => n < 5) 00:19:15 verbose #27496 > > |> listm'.sum 00:19:15 verbose #27497 > > |> _assert_eq 10 00:19:15 verbose #27498 > > 00:19:15 verbose #27499 > > ╭─[ 110.52ms - stdout ]────────────────────────────────────────────────────────╮ 00:19:15 verbose #27500 > > │ __assert_eq / actual: 10 / expected: 10 │ 00:19:15 verbose #27501 > > │ │ 00:19:15 verbose #27502 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:15 verbose #27503 > > 00:19:15 verbose #27504 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:15 verbose #27505 > > //// test 00:19:15 verbose #27506 > > 00:19:15 verbose #27507 > > stream.new_finite_stream print_and_return 10i32 00:19:15 verbose #27508 > > |> flip stream.try_item 00:19:15 verbose #27509 > > |> take_while (fun n (_ : i32) => n < 5) 00:19:15 verbose #27510 > > |> listm'.sum 00:19:15 verbose #27511 > > |> _assert_eq 10 00:19:15 verbose #27512 > > 00:19:15 verbose #27513 > > ╭─[ 122.83ms - stdout ]────────────────────────────────────────────────────────╮ 00:19:15 verbose #27514 > > │ print_and_return / x: 0 │ 00:19:15 verbose #27515 > > │ print_and_return / x: 1 │ 00:19:15 verbose #27516 > > │ print_and_return / x: 1 │ 00:19:15 verbose #27517 > > │ print_and_return / x: 2 │ 00:19:15 verbose #27518 > > │ print_and_return / x: 1 │ 00:19:15 verbose #27519 > > │ print_and_return / x: 2 │ 00:19:15 verbose #27520 > > │ print_and_return / x: 3 │ 00:19:15 verbose #27521 > > │ print_and_return / x: 1 │ 00:19:15 verbose #27522 > > │ print_and_return / x: 2 │ 00:19:15 verbose #27523 > > │ print_and_return / x: 3 │ 00:19:15 verbose #27524 > > │ print_and_return / x: 4 │ 00:19:15 verbose #27525 > > │ print_and_return / x: 1 │ 00:19:15 verbose #27526 > > │ print_and_return / x: 2 │ 00:19:15 verbose #27527 > > │ print_and_return / x: 3 │ 00:19:15 verbose #27528 > > │ print_and_return / x: 4 │ 00:19:15 verbose #27529 > > │ print_and_return / x: 5 │ 00:19:15 verbose #27530 > > │ __assert_eq / actual: 10 / expected: 10 │ 00:19:15 verbose #27531 > > │ │ 00:19:15 verbose #27532 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:15 verbose #27533 > > 00:19:15 verbose #27534 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:15 verbose #27535 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:15 verbose #27536 > > │ ### take_while_ │ 00:19:15 verbose #27537 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:15 verbose #27538 > > 00:19:15 verbose #27539 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:15 verbose #27540 > > inl take_while_ cond seq = 00:19:15 verbose #27541 > > let rec loop acc i = 00:19:15 verbose #27542 > > match seq i with 00:19:15 verbose #27543 > > | Some st when cond st i => loop (st :: acc) (i + 1) 00:19:15 verbose #27544 > > | _ => acc |> listm.rev 00:19:15 verbose #27545 > > loop [[]] 0 00:19:15 verbose #27546 > > 00:19:15 verbose #27547 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:15 verbose #27548 > > //// test 00:19:15 verbose #27549 > > 00:19:15 verbose #27550 > > stream.new_infinite_stream_ print_and_return 00:19:15 verbose #27551 > > |> flip stream.try_item 00:19:15 verbose #27552 > > |> take_while_ (fun n (_ : i32) => n < 5i32) 00:19:15 verbose #27553 > > |> listm'.sum 00:19:15 verbose #27554 > > |> _assert_eq 10 00:19:16 verbose #27555 > > 00:19:16 verbose #27556 > > ╭─[ 225.03ms - stdout ]────────────────────────────────────────────────────────╮ 00:19:16 verbose #27557 > > │ print_and_return / x: 0 │ 00:19:16 verbose #27558 > > │ print_and_return / x: 1 │ 00:19:16 verbose #27559 > > │ print_and_return / x: 1 │ 00:19:16 verbose #27560 > > │ print_and_return / x: 2 │ 00:19:16 verbose #27561 > > │ print_and_return / x: 1 │ 00:19:16 verbose #27562 > > │ print_and_return / x: 2 │ 00:19:16 verbose #27563 > > │ print_and_return / x: 3 │ 00:19:16 verbose #27564 > > │ print_and_return / x: 1 │ 00:19:16 verbose #27565 > > │ print_and_return / x: 2 │ 00:19:16 verbose #27566 > > │ print_and_return / x: 3 │ 00:19:16 verbose #27567 > > │ print_and_return / x: 4 │ 00:19:16 verbose #27568 > > │ print_and_return / x: 1 │ 00:19:16 verbose #27569 > > │ print_and_return / x: 2 │ 00:19:16 verbose #27570 > > │ print_and_return / x: 3 │ 00:19:16 verbose #27571 > > │ print_and_return / x: 4 │ 00:19:16 verbose #27572 > > │ print_and_return / x: 5 │ 00:19:16 verbose #27573 > > │ __assert_eq / actual: 10 / expected: 10 │ 00:19:16 verbose #27574 > > │ │ 00:19:16 verbose #27575 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:16 verbose #27576 > > 00:19:16 verbose #27577 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:16 verbose #27578 > > //// test 00:19:16 verbose #27579 > > 00:19:16 verbose #27580 > > stream.new_infinite_stream_ print_and_return 00:19:16 verbose #27581 > > |> stream.memoize 00:19:16 verbose #27582 > > |> fun list => 00:19:16 verbose #27583 > > inl list = list () 00:19:16 verbose #27584 > > fun n => 00:19:16 verbose #27585 > > list |> stream.try_item n 00:19:16 verbose #27586 > > |> take_while_ (fun n (_ : i32) => n < 5i32) 00:19:16 verbose #27587 > > |> listm'.sum 00:19:16 verbose #27588 > > |> _assert_eq 10 00:19:16 verbose #27589 > > 00:19:16 verbose #27590 > > ╭─[ 175.20ms - stdout ]────────────────────────────────────────────────────────╮ 00:19:16 verbose #27591 > > │ print_and_return / x: 0 │ 00:19:16 verbose #27592 > > │ print_and_return / x: 1 │ 00:19:16 verbose #27593 > > │ print_and_return / x: 2 │ 00:19:16 verbose #27594 > > │ print_and_return / x: 3 │ 00:19:16 verbose #27595 > > │ print_and_return / x: 4 │ 00:19:16 verbose #27596 > > │ print_and_return / x: 5 │ 00:19:16 verbose #27597 > > │ __assert_eq / actual: 10 / expected: 10 │ 00:19:16 verbose #27598 > > │ │ 00:19:16 verbose #27599 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:16 verbose #27600 > > 00:19:16 verbose #27601 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:16 verbose #27602 > > //// test 00:19:16 verbose #27603 > > 00:19:16 verbose #27604 > > stream.new_finite_stream print_and_return 10i32 00:19:16 verbose #27605 > > |> stream.memoize 00:19:16 verbose #27606 > > |> fun list => 00:19:16 verbose #27607 > > inl list = list () 00:19:16 verbose #27608 > > fun n => 00:19:16 verbose #27609 > > list |> stream.try_item n 00:19:16 verbose #27610 > > |> take_while_ (fun n (_ : i32) => n < 5) 00:19:16 verbose #27611 > > |> listm'.sum 00:19:16 verbose #27612 > > |> _assert_eq 10 00:19:16 verbose #27613 > > 00:19:16 verbose #27614 > > ╭─[ 201.67ms - stdout ]────────────────────────────────────────────────────────╮ 00:19:16 verbose #27615 > > │ print_and_return / x: 0 │ 00:19:16 verbose #27616 > > │ print_and_return / x: 1 │ 00:19:16 verbose #27617 > > │ print_and_return / x: 2 │ 00:19:16 verbose #27618 > > │ print_and_return / x: 3 │ 00:19:16 verbose #27619 > > │ print_and_return / x: 4 │ 00:19:16 verbose #27620 > > │ print_and_return / x: 5 │ 00:19:16 verbose #27621 > > │ __assert_eq / actual: 10 / expected: 10 │ 00:19:16 verbose #27622 > > │ │ 00:19:16 verbose #27623 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:16 verbose #27624 > > 00:19:16 verbose #27625 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:16 verbose #27626 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:16 verbose #27627 > > │ ### memoize │ 00:19:16 verbose #27628 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:16 verbose #27629 > > 00:19:16 verbose #27630 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:16 verbose #27631 > > inl memoize seq = 00:19:16 verbose #27632 > > inl state = mut [[]] 00:19:16 verbose #27633 > > fun n => 00:19:16 verbose #27634 > > match *state |> listm'.try_find (fun (n', _) => n' = n) with 00:19:16 verbose #27635 > > | Some (_, v) => v 00:19:16 verbose #27636 > > | None => 00:19:16 verbose #27637 > > inl new_state = seq n 00:19:16 verbose #27638 > > state <- (n, new_state) :: *state 00:19:16 verbose #27639 > > new_state 00:19:16 verbose #27640 > > 00:19:16 verbose #27641 > > inl memoize_ seq = 00:19:16 verbose #27642 > > inl state = mut [[]] 00:19:16 verbose #27643 > > fun n => 00:19:16 verbose #27644 > > match *state |> listm'.try_find_ (fun (n', _) => n' = n) with 00:19:16 verbose #27645 > > | Some (_, v) => v 00:19:16 verbose #27646 > > | None => 00:19:16 verbose #27647 > > inl new_state = seq n 00:19:16 verbose #27648 > > state <- (n, new_state) :: *state 00:19:16 verbose #27649 > > new_state 00:19:16 verbose #27650 > > 00:19:16 verbose #27651 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:16 verbose #27652 > > //// test 00:19:16 verbose #27653 > > 00:19:16 verbose #27654 > > inl seq = 00:19:16 verbose #27655 > > fun n => 00:19:16 verbose #27656 > > n |> print_and_return |> Some 00:19:16 verbose #27657 > > |> memoize_ 00:19:16 verbose #27658 > > 00:19:16 verbose #27659 > > seq 00:19:16 verbose #27660 > > |> take_while_ (fun n (_ : i32) => n < 5) 00:19:16 verbose #27661 > > |> listm'.sum 00:19:16 verbose #27662 > > |> _assert_eq 10 00:19:16 verbose #27663 > > 00:19:16 verbose #27664 > > seq 00:19:16 verbose #27665 > > |> take_while_ (fun n _ => n < 5) 00:19:16 verbose #27666 > > |> listm'.sum 00:19:16 verbose #27667 > > |> _assert_eq 10 00:19:16 verbose #27668 > > 00:19:16 verbose #27669 > > ╭─[ 242.20ms - stdout ]────────────────────────────────────────────────────────╮ 00:19:16 verbose #27670 > > │ print_and_return / x: 0 │ 00:19:16 verbose #27671 > > │ print_and_return / x: 1 │ 00:19:16 verbose #27672 > > │ print_and_return / x: 2 │ 00:19:16 verbose #27673 > > │ print_and_return / x: 3 │ 00:19:16 verbose #27674 > > │ print_and_return / x: 4 │ 00:19:16 verbose #27675 > > │ print_and_return / x: 5 │ 00:19:16 verbose #27676 > > │ __assert_eq / actual: 10 / expected: 10 │ 00:19:16 verbose #27677 > > │ __assert_eq / actual: 10 / expected: 10 │ 00:19:16 verbose #27678 > > │ │ 00:19:16 verbose #27679 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:16 verbose #27680 > > 00:19:16 verbose #27681 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:16 verbose #27682 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:16 verbose #27683 > > │ ### iterate │ 00:19:16 verbose #27684 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:16 verbose #27685 > > 00:19:16 verbose #27686 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:16 verbose #27687 > > inl iterate f x0 num_steps = 00:19:16 verbose #27688 > > inl rec loop x n = 00:19:16 verbose #27689 > > if n <= 0 00:19:16 verbose #27690 > > then x 00:19:16 verbose #27691 > > else loop (f x) (n - 1) 00:19:16 verbose #27692 > > loop x0 num_steps 00:19:16 verbose #27693 > > 00:19:16 verbose #27694 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:16 verbose #27695 > > //// test 00:19:16 verbose #27696 > > 00:19:16 verbose #27697 > > 10i32 |> iterate ((*) 2) 1i32 00:19:16 verbose #27698 > > |> _assert_eq 1024 00:19:17 verbose #27699 > > 00:19:17 verbose #27700 > > ╭─[ 107.16ms - stdout ]────────────────────────────────────────────────────────╮ 00:19:17 verbose #27701 > > │ __assert_eq / actual: 1024 / expected: 1024 │ 00:19:17 verbose #27702 > > │ │ 00:19:17 verbose #27703 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:17 verbose #27704 > > 00:19:17 verbose #27705 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:17 verbose #27706 > > inl iterate_ f x0 num_steps = 00:19:17 verbose #27707 > > let rec loop x n = 00:19:17 verbose #27708 > > if n <= 0 00:19:17 verbose #27709 > > then x 00:19:17 verbose #27710 > > else loop (f x) (n - 1) 00:19:17 verbose #27711 > > loop x0 num_steps 00:19:17 verbose #27712 > > 00:19:17 verbose #27713 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:17 verbose #27714 > > //// test 00:19:17 verbose #27715 > > 00:19:17 verbose #27716 > > 10i32 |> iterate_ ((*) 2) 1i32 00:19:17 verbose #27717 > > |> _assert_eq 1024 00:19:17 verbose #27718 > > 00:19:17 verbose #27719 > > ╭─[ 106.51ms - stdout ]────────────────────────────────────────────────────────╮ 00:19:17 verbose #27720 > > │ __assert_eq / actual: 1024 / expected: 1024 │ 00:19:17 verbose #27721 > > │ │ 00:19:17 verbose #27722 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:17 verbose #27723 > > 00:19:17 verbose #27724 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:17 verbose #27725 > > inl iterate' f x0 num_steps = 00:19:17 verbose #27726 > > listm.init num_steps id 00:19:17 verbose #27727 > > |> listm.fold (fun x _ => f x) x0 00:19:17 verbose #27728 > > 00:19:17 verbose #27729 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:17 verbose #27730 > > //// test 00:19:17 verbose #27731 > > 00:19:17 verbose #27732 > > 10i32 |> iterate' ((*) 2) 1i32 00:19:17 verbose #27733 > > |> _assert_eq 1024 00:19:17 verbose #27734 > > 00:19:17 verbose #27735 > > ╭─[ 104.73ms - stdout ]────────────────────────────────────────────────────────╮ 00:19:17 verbose #27736 > > │ __assert_eq / actual: 1024 / expected: 1024 │ 00:19:17 verbose #27737 > > │ │ 00:19:17 verbose #27738 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:17 verbose #27739 > > 00:19:17 verbose #27740 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:17 verbose #27741 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:17 verbose #27742 > > │ ### find_last │ 00:19:17 verbose #27743 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:17 verbose #27744 > > 00:19:17 verbose #27745 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:17 verbose #27746 > > inl find_last forall item result. fold_fn fn target : option result = 00:19:17 verbose #27747 > > fold_fn (fun (item : item) (result : option result) => 00:19:17 verbose #27748 > > match result with 00:19:17 verbose #27749 > > | None => fn item 00:19:17 verbose #27750 > > | result => result 00:19:17 verbose #27751 > > ) target (None : option result) 00:19:17 verbose #27752 > > 00:19:17 verbose #27753 > > inl array_find_last forall item result. (fn : item -> option result) (target : a 00:19:17 verbose #27754 > > i32 item) : option result = 00:19:17 verbose #27755 > > find_last am.foldBack fn target 00:19:17 verbose #27756 > > 00:19:17 verbose #27757 > > inl list_find_last forall item result. (fn : item -> option result) (target : 00:19:17 verbose #27758 > > list item) : option result = 00:19:17 verbose #27759 > > find_last listm.foldBack fn target 00:19:17 verbose #27760 > > 00:19:17 verbose #27761 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:17 verbose #27762 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:17 verbose #27763 > > │ ## fsharp │ 00:19:17 verbose #27764 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:17 verbose #27765 > > 00:19:17 verbose #27766 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:17 verbose #27767 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:17 verbose #27768 > > │ ### seq' │ 00:19:17 verbose #27769 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:17 verbose #27770 > > 00:19:17 verbose #27771 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:17 verbose #27772 > > nominal seq' t = $"backend_switch `({ Fsharp : $"`t seq"; Python : t })" 00:19:17 verbose #27773 > > 00:19:17 verbose #27774 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:17 verbose #27775 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:17 verbose #27776 > > │ ### of_array' │ 00:19:17 verbose #27777 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:17 verbose #27778 > > 00:19:17 verbose #27779 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:17 verbose #27780 > > inl of_array' forall dim t. (items : a dim t) : seq' t = 00:19:17 verbose #27781 > > backend_switch { 00:19:17 verbose #27782 > > Fsharp = fun () => $'seq { for i = 0 to !items.Length - 1 do yield 00:19:17 verbose #27783 > > !items.[[i]] }' : seq' t 00:19:17 verbose #27784 > > Python = fun () => $'!items ' : seq' t 00:19:17 verbose #27785 > > } 00:19:17 verbose #27786 > > 00:19:17 verbose #27787 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:17 verbose #27788 > > //// test 00:19:17 verbose #27789 > > 00:19:17 verbose #27790 > > (a ;[[ "a"; "b" ]] : _ i32 _) 00:19:17 verbose #27791 > > |> of_array' 00:19:17 verbose #27792 > > 00:19:17 verbose #27793 > > ╭─[ 224.57ms - return value ]──────────────────────────────────────────────────╮ 00:19:17 verbose #27794 > > │ <details open="open" class="dni-treeview"><summary><span │ 00:19:17 verbose #27795 > > │ class="dni-code-hint"><code>[ a, b │ 00:19:17 verbose #27796 > > │ ]</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ 00:19:17 verbose #27797 > > │ CheckClose</td><td><div │ 00:19:17 verbose #27798 > > │ class="dni-plaintext"><pre>False</pre></div></td></tr><tr><td>LastGenerated< │ 00:19:17 verbose #27799 > > │ /td><td><div │ 00:19:17 verbose #27800 > > │ class="dni-plaintext"><pre><null></pre></div></td></tr><tr><td>v2</td> │ 00:19:17 verbose #27801 > > │ <td><div class="dni-plaintext"><pre>[ a, b │ 00:19:17 verbose #27802 > > │ ]</pre></div></td></tr><tr><td>enum</td><td><div │ 00:19:17 verbose #27803 > > │ class="dni-plaintext"><pre><null></pre></div></td></tr><tr><td>pc</td> │ 00:19:17 verbose #27804 > > │ <td><div │ 00:19:17 verbose #27805 > > │ class="dni-plaintext"><pre>0</pre></div></td></tr><tr><td>current</td><td><d │ 00:19:17 verbose #27806 > > │ iv │ 00:19:17 verbose #27807 > > │ class="dni-plaintext"><pre><null></pre></div></td></tr><tr><td><i>(val │ 00:19:17 verbose #27808 > > │ ues)</i></td><td><div class="dni-plaintext"><pre>[ a, b │ 00:19:17 verbose #27809 > > │ ]</pre></div></td></tr></tbody></table></div></details><style> │ 00:19:17 verbose #27810 > > │ .dni-code-hint { │ 00:19:17 verbose #27811 > > │ font-style: italic; │ 00:19:17 verbose #27812 > > │ overflow: hidden; │ 00:19:17 verbose #27813 > > │ white-space: nowrap; │ 00:19:17 verbose #27814 > > │ } │ 00:19:17 verbose #27815 > > │ .dni-treeview { │ 00:19:17 verbose #27816 > > │ white-space: nowrap; │ 00:19:17 verbose #27817 > > │ } │ 00:19:17 verbose #27818 > > │ .dni-treeview td { │ 00:19:17 verbose #27819 > > │ vertical-align: top; │ 00:19:17 verbose #27820 > > │ text-align: start; │ 00:19:17 verbose #27821 > > │ } │ 00:19:17 verbose #27822 > > │ details.dni-treeview { │ 00:19:17 verbose #27823 > > │ padding-left: 1em; │ 00:19:17 verbose #27824 > > │ } │ 00:19:17 verbose #27825 > > │ table td { │ 00:19:17 verbose #27826 > > │ text-align: start; │ 00:19:17 verbose #27827 > > │ } │ 00:19:17 verbose #27828 > > │ table tr { │ 00:19:17 verbose #27829 > > │ vertical-align: top; │ 00:19:17 verbose #27830 > > │ margin: 0em 0px; │ 00:19:17 verbose #27831 > > │ } │ 00:19:17 verbose #27832 > > │ table tr td pre │ 00:19:17 verbose #27833 > > │ { │ 00:19:17 verbose #27834 > > │ vertical-align: top !important; │ 00:19:17 verbose #27835 > > │ margin: 0em 0px !important; │ 00:19:17 verbose #27836 > > │ } │ 00:19:17 verbose #27837 > > │ table th { │ 00:19:17 verbose #27838 > > │ text-align: start; │ 00:19:17 verbose #27839 > > │ } │ 00:19:17 verbose #27840 > > │ </style> │ 00:19:17 verbose #27841 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:17 verbose #27842 > > 00:19:17 verbose #27843 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:17 verbose #27844 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:17 verbose #27845 > > │ ### of_array │ 00:19:17 verbose #27846 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:17 verbose #27847 > > 00:19:17 verbose #27848 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:17 verbose #27849 > > inl of_array forall dim t. (items : a dim t) : seq' t = 00:19:17 verbose #27850 > > backend_switch { 00:19:17 verbose #27851 > > Fsharp = fun () => $'!items |> Seq.ofArray' : seq' t 00:19:17 verbose #27852 > > Python = fun () => $'!items ' : seq' t 00:19:17 verbose #27853 > > } 00:19:18 verbose #27854 > > 00:19:18 verbose #27855 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:18 verbose #27856 > > //// test 00:19:18 verbose #27857 > > 00:19:18 verbose #27858 > > (a ;[[ "a"; "b" ]] : _ i32 _) 00:19:18 verbose #27859 > > |> of_array 00:19:18 verbose #27860 > > 00:19:18 verbose #27861 > > ╭─[ 119.05ms - return value ]──────────────────────────────────────────────────╮ 00:19:18 verbose #27862 > > │ <details open="open" class="dni-treeview"><summary><span │ 00:19:18 verbose #27863 > > │ class="dni-code-hint"><code>[ a, b │ 00:19:18 verbose #27864 > > │ ]</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ 00:19:18 verbose #27865 > > │ f</td><td><details class="dni-treeview"><summary><span │ 00:19:18 verbose #27866 > > │ class="dni-code-hint"><code>Microsoft.FSharp.Collections.SeqModule+OfArray@1 │ 00:19:18 verbose #27867 > > │ 010[ │ 00:19:18 verbose #27868 > > │ System.String]</code></span></summary><div><table><thead><tr></tr></thead><t │ 00:19:18 verbose #27869 > > │ body><tr><td>source</td><td><div class="dni-plaintext"><pre>[ a, b │ 00:19:18 verbose #27870 > > │ ]</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td><i> │ 00:19:18 verbose #27871 > > │ (values)</i></td><td><div class="dni-plaintext"><pre>[ a, b │ 00:19:18 verbose #27872 > > │ ]</pre></div></td></tr></tbody></table></div></details><style> │ 00:19:18 verbose #27873 > > │ .dni-code-hint { │ 00:19:18 verbose #27874 > > │ font-style: italic; │ 00:19:18 verbose #27875 > > │ overflow: hidden; │ 00:19:18 verbose #27876 > > │ white-space: nowrap; │ 00:19:18 verbose #27877 > > │ } │ 00:19:18 verbose #27878 > > │ .dni-treeview { │ 00:19:18 verbose #27879 > > │ white-space: nowrap; │ 00:19:18 verbose #27880 > > │ } │ 00:19:18 verbose #27881 > > │ .dni-treeview td { │ 00:19:18 verbose #27882 > > │ vertical-align: top; │ 00:19:18 verbose #27883 > > │ text-align: start; │ 00:19:18 verbose #27884 > > │ } │ 00:19:18 verbose #27885 > > │ details.dni-treeview { │ 00:19:18 verbose #27886 > > │ padding-left: 1em; │ 00:19:18 verbose #27887 > > │ } │ 00:19:18 verbose #27888 > > │ table td { │ 00:19:18 verbose #27889 > > │ text-align: start; │ 00:19:18 verbose #27890 > > │ } │ 00:19:18 verbose #27891 > > │ table tr { │ 00:19:18 verbose #27892 > > │ vertical-align: top; │ 00:19:18 verbose #27893 > > │ margin: 0em 0px; │ 00:19:18 verbose #27894 > > │ } │ 00:19:18 verbose #27895 > > │ table tr td pre │ 00:19:18 verbose #27896 > > │ { │ 00:19:18 verbose #27897 > > │ vertical-align: top !important; │ 00:19:18 verbose #27898 > > │ margin: 0em 0px !important; │ 00:19:18 verbose #27899 > > │ } │ 00:19:18 verbose #27900 > > │ table th { │ 00:19:18 verbose #27901 > > │ text-align: start; │ 00:19:18 verbose #27902 > > │ } │ 00:19:18 verbose #27903 > > │ </style> │ 00:19:18 verbose #27904 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:18 verbose #27905 > > 00:19:18 verbose #27906 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:18 verbose #27907 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:18 verbose #27908 > > │ ### of_array_base │ 00:19:18 verbose #27909 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:18 verbose #27910 > > 00:19:18 verbose #27911 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:18 verbose #27912 > > inl of_array_base forall t. (items : array_base t) : seq' t = 00:19:18 verbose #27913 > > a items 00:19:18 verbose #27914 > > |> fun x => x : _ int _ 00:19:18 verbose #27915 > > |> of_array 00:19:18 verbose #27916 > > 00:19:18 verbose #27917 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:18 verbose #27918 > > //// test 00:19:18 verbose #27919 > > 00:19:18 verbose #27920 > > ;[[ "a"; "b" ]] 00:19:18 verbose #27921 > > |> of_array_base 00:19:18 verbose #27922 > > 00:19:18 verbose #27923 > > ╭─[ 99.94ms - return value ]───────────────────────────────────────────────────╮ 00:19:18 verbose #27924 > > │ <details open="open" class="dni-treeview"><summary><span │ 00:19:18 verbose #27925 > > │ class="dni-code-hint"><code>[ a, b │ 00:19:18 verbose #27926 > > │ ]</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> │ 00:19:18 verbose #27927 > > │ f</td><td><details class="dni-treeview"><summary><span │ 00:19:18 verbose #27928 > > │ class="dni-code-hint"><code>Microsoft.FSharp.Collections.SeqModule+OfArray@1 │ 00:19:18 verbose #27929 > > │ 010[ │ 00:19:18 verbose #27930 > > │ System.String]</code></span></summary><div><table><thead><tr></tr></thead><t │ 00:19:18 verbose #27931 > > │ body><tr><td>source</td><td><div class="dni-plaintext"><pre>[ a, b │ 00:19:18 verbose #27932 > > │ ]</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td><i> │ 00:19:18 verbose #27933 > > │ (values)</i></td><td><div class="dni-plaintext"><pre>[ a, b │ 00:19:18 verbose #27934 > > │ ]</pre></div></td></tr></tbody></table></div></details><style> │ 00:19:18 verbose #27935 > > │ .dni-code-hint { │ 00:19:18 verbose #27936 > > │ font-style: italic; │ 00:19:18 verbose #27937 > > │ overflow: hidden; │ 00:19:18 verbose #27938 > > │ white-space: nowrap; │ 00:19:18 verbose #27939 > > │ } │ 00:19:18 verbose #27940 > > │ .dni-treeview { │ 00:19:18 verbose #27941 > > │ white-space: nowrap; │ 00:19:18 verbose #27942 > > │ } │ 00:19:18 verbose #27943 > > │ .dni-treeview td { │ 00:19:18 verbose #27944 > > │ vertical-align: top; │ 00:19:18 verbose #27945 > > │ text-align: start; │ 00:19:18 verbose #27946 > > │ } │ 00:19:18 verbose #27947 > > │ details.dni-treeview { │ 00:19:18 verbose #27948 > > │ padding-left: 1em; │ 00:19:18 verbose #27949 > > │ } │ 00:19:18 verbose #27950 > > │ table td { │ 00:19:18 verbose #27951 > > │ text-align: start; │ 00:19:18 verbose #27952 > > │ } │ 00:19:18 verbose #27953 > > │ table tr { │ 00:19:18 verbose #27954 > > │ vertical-align: top; │ 00:19:18 verbose #27955 > > │ margin: 0em 0px; │ 00:19:18 verbose #27956 > > │ } │ 00:19:18 verbose #27957 > > │ table tr td pre │ 00:19:18 verbose #27958 > > │ { │ 00:19:18 verbose #27959 > > │ vertical-align: top !important; │ 00:19:18 verbose #27960 > > │ margin: 0em 0px !important; │ 00:19:18 verbose #27961 > > │ } │ 00:19:18 verbose #27962 > > │ table th { │ 00:19:18 verbose #27963 > > │ text-align: start; │ 00:19:18 verbose #27964 > > │ } │ 00:19:18 verbose #27965 > > │ </style> │ 00:19:18 verbose #27966 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:18 verbose #27967 > > 00:19:18 verbose #27968 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:18 verbose #27969 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:18 verbose #27970 > > │ ### to_array' │ 00:19:18 verbose #27971 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:18 verbose #27972 > > 00:19:18 verbose #27973 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:18 verbose #27974 > > inl to_array' forall dim t. (items : seq' t) : a dim t = 00:19:18 verbose #27975 > > backend_switch { 00:19:18 verbose #27976 > > Fsharp = fun () => items |> $'Seq.toArray' : a dim t 00:19:18 verbose #27977 > > Python = fun () => $'!items ' : a dim t 00:19:18 verbose #27978 > > } 00:19:18 verbose #27979 > > 00:19:18 verbose #27980 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:18 verbose #27981 > > //// test 00:19:18 verbose #27982 > > 00:19:18 verbose #27983 > > (a ;[[ "a"; "b" ]] : _ i32 _) 00:19:18 verbose #27984 > > |> of_array' 00:19:18 verbose #27985 > > |> to_array' 00:19:18 verbose #27986 > > |> _assert_eq' (a ;[[ "a"; "b" ]] : _ i32 _) 00:19:18 verbose #27987 > > 00:19:18 verbose #27988 > > ╭─[ 120.55ms - stdout ]────────────────────────────────────────────────────────╮ 00:19:18 verbose #27989 > > │ __assert_eq' / actual: [|"a"; "b"|] / expected: [|"a"; "b"|] │ 00:19:18 verbose #27990 > > │ │ 00:19:18 verbose #27991 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:18 verbose #27992 > > 00:19:18 verbose #27993 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:18 verbose #27994 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:18 verbose #27995 > > │ ### of_list' │ 00:19:18 verbose #27996 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:18 verbose #27997 > > 00:19:18 verbose #27998 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:18 verbose #27999 > > inl of_list' forall t. (items : listm'.list' t) : seq' t = 00:19:18 verbose #28000 > > backend_switch { 00:19:18 verbose #28001 > > Fsharp = fun () => $'seq { for i = 0 to !items.Length - 1 do yield 00:19:18 verbose #28002 > > !items.[[i]] }' : seq' t 00:19:18 verbose #28003 > > Python = fun () => $'!items ' : seq' t 00:19:18 verbose #28004 > > } 00:19:18 verbose #28005 > > 00:19:18 verbose #28006 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:18 verbose #28007 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:18 verbose #28008 > > │ ### to_list' │ 00:19:18 verbose #28009 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:18 verbose #28010 > > 00:19:18 verbose #28011 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:18 verbose #28012 > > inl to_list' forall t. (items : seq' t) : listm'.list' t = 00:19:18 verbose #28013 > > backend_switch { 00:19:18 verbose #28014 > > Fsharp = fun () => items |> $'Seq.toList' : listm'.list' t 00:19:18 verbose #28015 > > Python = fun () => $'!items ' : listm'.list' t 00:19:18 verbose #28016 > > } 00:19:18 verbose #28017 > > 00:19:18 verbose #28018 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:18 verbose #28019 > > //// test 00:19:18 verbose #28020 > > 00:19:18 verbose #28021 > > (a ;[[ "a"; "b" ]] : _ i32 _) 00:19:18 verbose #28022 > > |> of_array 00:19:18 verbose #28023 > > |> to_list' 00:19:18 verbose #28024 > > |> listm'.unbox 00:19:18 verbose #28025 > > |> _assert_eq ([[ "a"; "b" ]]) 00:19:18 verbose #28026 > > 00:19:18 verbose #28027 > > ╭─[ 180.01ms - stdout ]────────────────────────────────────────────────────────╮ 00:19:18 verbose #28028 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) / expected: UH0_1 │ 00:19:18 verbose #28029 > > │ ("a", UH0_1 ("b", UH0_0)) │ 00:19:18 verbose #28030 > > │ │ 00:19:18 verbose #28031 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:18 verbose #28032 > > 00:19:18 verbose #28033 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:18 verbose #28034 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:18 verbose #28035 > > │ ### rev' │ 00:19:18 verbose #28036 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:18 verbose #28037 > > 00:19:18 verbose #28038 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:18 verbose #28039 > > inl rev'' forall t u. (items : t) : seq' u = 00:19:18 verbose #28040 > > backend_switch { 00:19:18 verbose #28041 > > Fsharp = fun () => items |> $'Seq.rev' : seq' u 00:19:18 verbose #28042 > > Python = fun () => $'reversed(!items)' : seq' u 00:19:18 verbose #28043 > > } 00:19:19 verbose #28044 > > 00:19:19 verbose #28045 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:19 verbose #28046 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:19 verbose #28047 > > │ ## rust │ 00:19:19 verbose #28048 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:19 verbose #28049 > > 00:19:19 verbose #28050 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:19 verbose #28051 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:19 verbose #28052 > > │ ### fuse │ 00:19:19 verbose #28053 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:19 verbose #28054 > > 00:19:19 verbose #28055 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:19 verbose #28056 > > nominal fuse t = 00:19:19 verbose #28057 > > `( 00:19:19 verbose #28058 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:19 verbose #28059 > > Fable.Core.Emit(\"core::iter::Fuse<$0>\")>]]\n#endif\ntype core_iter_Fuse<'T> = 00:19:19 verbose #28060 > > class end" 00:19:19 verbose #28061 > > $'' : $'core_iter_Fuse<`t>' 00:19:19 verbose #28062 > > ) 00:19:19 verbose #28063 > 00:00:12 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 61407 } 00:19:19 verbose #28064 > 00:00:12 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:19:19 verbose #28065 > "nbconvert", 00:19:19 verbose #28066 > "/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.ipynb", 00:19:19 verbose #28067 > "--to", 00:19:19 verbose #28068 > "html", 00:19:19 verbose #28069 > "--HTMLExporter.theme=dark", 00:19:19 verbose #28070 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:19 verbose #28071 > 00:00:12 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.ipynb to html 00:19:19 verbose #28072 > 00:00:12 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:19:19 verbose #28073 > 00:00:12 verbose #7 ! validate(nb) 00:19:20 verbose #28074 > 00:00:13 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:19:20 verbose #28075 > 00:00:13 verbose #9 ! return _pygments_highlight( 00:19:20 verbose #28076 > 00:00:13 verbose #10 ! [NbConvertApp] Writing 385460 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.html 00:19:20 verbose #28077 > 00:00:13 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 890 } 00:19:20 verbose #28078 > 00:00:13 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 890 } 00:19:20 verbose #28079 > 00:00:13 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:19:20 verbose #28080 > "-c", 00:19:20 verbose #28081 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:19:20 verbose #28082 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:21 verbose #28083 > 00:00:14 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:19:21 verbose #28084 > 00:00:14 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:19:21 verbose #28085 > 00:00:14 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 62356 } 00:19:21 debug #28086 runtime.execute_with_options_async / { exit_code = 0; output_length = 67155 } 00:19:21 debug #32 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path seq.dib --retries 3 00:19:21 debug #28087 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path env.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:21 verbose #28088 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "env.dib", "--retries", "3"])) } 00:19:21 verbose #28089 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:19:21 verbose #28090 > "repl", 00:19:21 verbose #28091 > "--exit-after-run", 00:19:21 verbose #28092 > "--run", 00:19:21 verbose #28093 > "/home/runner/work/polyglot/polyglot/lib/spiral/env.dib", 00:19:21 verbose #28094 > "--output-path", 00:19:21 verbose #28095 > "/home/runner/work/polyglot/polyglot/lib/spiral/env.dib.ipynb", 00:19:21 verbose #28096 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/env.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/env.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:19:22 verbose #28097 > > 00:19:22 verbose #28098 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:22 verbose #28099 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:22 verbose #28100 > > │ # env │ 00:19:22 verbose #28101 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:22 verbose #28102 > > 00:19:22 verbose #28103 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:22 verbose #28104 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:22 verbose #28105 > > │ ## rust │ 00:19:22 verbose #28106 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:22 verbose #28107 > > 00:19:22 verbose #28108 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:22 verbose #28109 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:22 verbose #28110 > > │ ### var_error │ 00:19:22 verbose #28111 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:24 verbose #28112 > > 00:19:24 verbose #28113 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:24 verbose #28114 > > nominal var_error = 00:19:24 verbose #28115 > > `( 00:19:24 verbose #28116 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:24 verbose #28117 > > Fable.Core.Emit(\"std::env::VarError\")>]]\n#endif\ntype std_env_VarError = 00:19:24 verbose #28118 > > class end" 00:19:24 verbose #28119 > > $'' : $'std_env_VarError' 00:19:24 verbose #28120 > > ) 00:19:25 verbose #28121 > > 00:19:25 verbose #28122 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:25 verbose #28123 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:25 verbose #28124 > > │ ### get_environment_variable_comptime │ 00:19:25 verbose #28125 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:25 verbose #28126 > > 00:19:25 verbose #28127 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:25 verbose #28128 > > inl get_environment_variable_comptime (var : string) : string = 00:19:25 verbose #28129 > > run_target_args (fun () => var) function 00:19:25 verbose #28130 > > | Rust _ => fun var => 00:19:25 verbose #28131 > > open rust.rust_operators 00:19:25 verbose #28132 > > !\($'"env\!(\\\"" + !var + "\\\")"') 00:19:25 verbose #28133 > > |> sm'.ref_to_std_string 00:19:25 verbose #28134 > > |> sm'.from_std_string 00:19:25 verbose #28135 > > | target => fun _ => null () 00:19:25 verbose #28136 > > 00:19:25 verbose #28137 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:25 verbose #28138 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:25 verbose #28139 > > │ ## python │ 00:19:25 verbose #28140 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:25 verbose #28141 > > 00:19:25 verbose #28142 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:25 verbose #28143 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:25 verbose #28144 > > │ ### os_environ │ 00:19:25 verbose #28145 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:25 verbose #28146 > > 00:19:25 verbose #28147 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:25 verbose #28148 > > nominal os_environ = any 00:19:25 verbose #28149 > > 00:19:25 verbose #28150 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:25 verbose #28151 > > inl os_environ () : os_environ = 00:19:25 verbose #28152 > > backend_switch { 00:19:25 verbose #28153 > > Fsharp = fun () => 00:19:25 verbose #28154 > > open python_operators 00:19:25 verbose #28155 > > global "type IOsEnviron = abstract environ: x: unit -> obj" 00:19:25 verbose #28156 > > inl os : $'IOsEnviron' = python.import_all "os" 00:19:25 verbose #28157 > > !\($'"!os.environ"') : os_environ 00:19:25 verbose #28158 > > Python = fun () => 00:19:25 verbose #28159 > > global "import os" 00:19:25 verbose #28160 > > $'os.environ' : os_environ 00:19:25 verbose #28161 > > } 00:19:25 verbose #28162 > > 00:19:25 verbose #28163 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:25 verbose #28164 > > inl environ_get (key : string) (os_environ : os_environ) : string = 00:19:25 verbose #28165 > > backend_switch { 00:19:25 verbose #28166 > > Fsharp = fun () => 00:19:25 verbose #28167 > > open python_operators 00:19:25 verbose #28168 > > !\\(key, $'"!os_environ.get($0)"') : string 00:19:25 verbose #28169 > > Python = fun () => 00:19:25 verbose #28170 > > $'!os_environ.get(!key)' : string 00:19:25 verbose #28171 > > } 00:19:25 verbose #28172 > > 00:19:25 verbose #28173 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:25 verbose #28174 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:25 verbose #28175 > > │ ## env │ 00:19:25 verbose #28176 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:25 verbose #28177 > > 00:19:25 verbose #28178 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:25 verbose #28179 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:25 verbose #28180 > > │ ### get_environment_variable │ 00:19:25 verbose #28181 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:25 verbose #28182 > > 00:19:25 verbose #28183 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:25 verbose #28184 > > let get_environment_variable (var : string) : string = 00:19:25 verbose #28185 > > run_target function 00:19:25 verbose #28186 > > | Rust _ => fun () => 00:19:25 verbose #28187 > > open rust.rust_operators 00:19:25 verbose #28188 > > !\\(var, $'"std::env::var(&*$0)"') 00:19:25 verbose #28189 > > |> fun x => x : resultm.result' sm'.std_string var_error 00:19:25 verbose #28190 > > |> resultm.map' sm'.from_std_string 00:19:25 verbose #28191 > > |> resultm.unwrap_or' (join "") 00:19:25 verbose #28192 > > | Fsharp _ => fun () => 00:19:25 verbose #28193 > > var 00:19:25 verbose #28194 > > |> $'System.Environment.GetEnvironmentVariable' 00:19:25 verbose #28195 > > |> optionm'.of_obj 00:19:25 verbose #28196 > > |> optionm'.unbox 00:19:25 verbose #28197 > > |> optionm'.default_value "" 00:19:25 verbose #28198 > > | TypeScript _ => fun () => 00:19:25 verbose #28199 > > open typescript_operators 00:19:25 verbose #28200 > > !\\(var, $'"process.env[[$0]] ?? \\\"\\\""') 00:19:25 verbose #28201 > > | Python _ | Cuda _ => fun () => 00:19:25 verbose #28202 > > os_environ () 00:19:25 verbose #28203 > > |> environ_get var 00:19:25 verbose #28204 > > |> optionm'.of_obj 00:19:25 verbose #28205 > > |> optionm'.unbox 00:19:25 verbose #28206 > > |> optionm'.default_value "" 00:19:25 verbose #28207 > > | target => fun () => failwith $'$"env.get_environment_variable 00:19:25 verbose #28208 > > target: {!target} / var: {!var}"' 00:19:26 verbose #28209 > > 00:19:26 verbose #28210 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:26 verbose #28211 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:26 verbose #28212 > > │ ### get_entry_assembly_name │ 00:19:26 verbose #28213 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:26 verbose #28214 > > 00:19:26 verbose #28215 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:26 verbose #28216 > > let get_entry_assembly_name () : string = 00:19:26 verbose #28217 > > run_target function 00:19:26 verbose #28218 > > | Rust _ => fun () => 00:19:26 verbose #28219 > > (join "CARGO_PKG_NAME") |> get_environment_variable 00:19:26 verbose #28220 > > | Fsharp _ => fun () => 00:19:26 verbose #28221 > > $'System.Reflection.Assembly.GetEntryAssembly().GetName().Name' 00:19:26 verbose #28222 > > | target => fun () => failwith $'$"env.get_entry_assembly_name / target: 00:19:26 verbose #28223 > > {!target}"' 00:19:26 verbose #28224 > > 00:19:26 verbose #28225 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:26 verbose #28226 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:26 verbose #28227 > > │ ### append_path │ 00:19:26 verbose #28228 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:26 verbose #28229 > > 00:19:26 verbose #28230 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:26 verbose #28231 > > inl append_path (path : string) : option string = 00:19:26 verbose #28232 > > inl env_path = "PATH" |> get_environment_variable 00:19:26 verbose #28233 > > if env_path = "" 00:19:26 verbose #28234 > > then None 00:19:26 verbose #28235 > > else 00:19:26 verbose #28236 > > inl env_sep = 00:19:26 verbose #28237 > > if platform.is_windows () 00:19:26 verbose #28238 > > then ";" 00:19:26 verbose #28239 > > else ":" 00:19:26 verbose #28240 > > Some $'$"{!path}{!env_sep}{!env_path}"' 00:19:26 verbose #28241 > 00:00:05 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 7692 } 00:19:26 verbose #28242 > 00:00:05 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:19:26 verbose #28243 > "nbconvert", 00:19:26 verbose #28244 > "/home/runner/work/polyglot/polyglot/lib/spiral/env.dib.ipynb", 00:19:26 verbose #28245 > "--to", 00:19:26 verbose #28246 > "html", 00:19:26 verbose #28247 > "--HTMLExporter.theme=dark", 00:19:26 verbose #28248 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/env.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:27 verbose #28249 > 00:00:05 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/env.dib.ipynb to html 00:19:27 verbose #28250 > 00:00:05 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:19:27 verbose #28251 > 00:00:05 verbose #7 ! validate(nb) 00:19:27 verbose #28252 > 00:00:06 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:19:27 verbose #28253 > 00:00:06 verbose #9 ! return _pygments_highlight( 00:19:27 verbose #28254 > 00:00:06 verbose #10 ! [NbConvertApp] Writing 291176 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/env.dib.html 00:19:27 verbose #28255 > 00:00:06 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 890 } 00:19:27 verbose #28256 > 00:00:06 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 890 } 00:19:27 verbose #28257 > 00:00:06 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:19:27 verbose #28258 > "-c", 00:19:27 verbose #28259 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/env.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:19:27 verbose #28260 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/env.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:28 verbose #28261 > 00:00:06 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:19:28 verbose #28262 > 00:00:06 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:19:28 verbose #28263 > 00:00:06 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 8641 } 00:19:28 debug #28264 runtime.execute_with_options_async / { exit_code = 0; output_length = 11744 } 00:19:28 debug #33 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path env.dib --retries 3 00:19:28 debug #28265 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path python.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:28 verbose #28266 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "python.dib", "--retries", "3"])) } 00:19:28 verbose #28267 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:19:28 verbose #28268 > "repl", 00:19:28 verbose #28269 > "--exit-after-run", 00:19:28 verbose #28270 > "--run", 00:19:28 verbose #28271 > "/home/runner/work/polyglot/polyglot/lib/spiral/python.dib", 00:19:28 verbose #28272 > "--output-path", 00:19:28 verbose #28273 > "/home/runner/work/polyglot/polyglot/lib/spiral/python.dib.ipynb", 00:19:28 verbose #28274 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/python.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/python.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:19:29 verbose #28275 > > 00:19:29 verbose #28276 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:29 verbose #28277 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:29 verbose #28278 > > │ # python │ 00:19:29 verbose #28279 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:29 verbose #28280 > > 00:19:29 verbose #28281 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:29 verbose #28282 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:29 verbose #28283 > > │ ### emit_expr │ 00:19:29 verbose #28284 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:31 verbose #28285 > > 00:19:31 verbose #28286 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:31 verbose #28287 > > inl emit_expr forall a t. (args : a) (code : string) : t = 00:19:31 verbose #28288 > > real 00:19:31 verbose #28289 > > $'Fable.Core.PyInterop.emitPyExpr !args !code ' : t 00:19:32 verbose #28290 > > 00:19:32 verbose #28291 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:32 verbose #28292 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:32 verbose #28293 > > │ ### │ 00:19:32 verbose #28294 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:32 verbose #28295 > > 00:19:32 verbose #28296 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:32 verbose #28297 > > inl (~!\) forall t. (code : string) : t = 00:19:32 verbose #28298 > > emit_expr () code 00:19:32 verbose #28299 > > 00:19:32 verbose #28300 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:32 verbose #28301 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:32 verbose #28302 > > │ ### │ 00:19:32 verbose #28303 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:32 verbose #28304 > > 00:19:32 verbose #28305 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:32 verbose #28306 > > inl (~!\\) forall t u. ((args : t), (code : string)) : u = 00:19:32 verbose #28307 > > emit_expr args code 00:19:32 verbose #28308 > > 00:19:32 verbose #28309 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:32 verbose #28310 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:32 verbose #28311 > > │ ### │ 00:19:32 verbose #28312 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:32 verbose #28313 > > 00:19:32 verbose #28314 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:32 verbose #28315 > > inl import_all forall t. (file : string) : t = 00:19:32 verbose #28316 > > real 00:19:32 verbose #28317 > > $'Fable.Core.PyInterop.importAll !file ' : t 00:19:32 verbose #28318 > > 00:19:32 verbose #28319 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:32 verbose #28320 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:32 verbose #28321 > > │ ### │ 00:19:32 verbose #28322 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:32 verbose #28323 > > 00:19:32 verbose #28324 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:32 verbose #28325 > > inl import forall t. (name : string) (file : string) : t = 00:19:32 verbose #28326 > > real 00:19:32 verbose #28327 > > $'Fable.Core.PyInterop.import !name !file ' : t 00:19:32 verbose #28328 > 00:00:04 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 3392 } 00:19:32 verbose #28329 > 00:00:04 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:19:32 verbose #28330 > "nbconvert", 00:19:32 verbose #28331 > "/home/runner/work/polyglot/polyglot/lib/spiral/python.dib.ipynb", 00:19:32 verbose #28332 > "--to", 00:19:32 verbose #28333 > "html", 00:19:32 verbose #28334 > "--HTMLExporter.theme=dark", 00:19:32 verbose #28335 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/python.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:33 verbose #28336 > 00:00:05 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/python.dib.ipynb to html 00:19:33 verbose #28337 > 00:00:05 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:19:33 verbose #28338 > 00:00:05 verbose #7 ! validate(nb) 00:19:33 verbose #28339 > 00:00:05 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:19:33 verbose #28340 > 00:00:05 verbose #9 ! return _pygments_highlight( 00:19:33 verbose #28341 > 00:00:05 verbose #10 ! [NbConvertApp] Writing 278614 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/python.dib.html 00:19:33 verbose #28342 > 00:00:05 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 896 } 00:19:33 verbose #28343 > 00:00:05 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 896 } 00:19:33 verbose #28344 > 00:00:05 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:19:33 verbose #28345 > "-c", 00:19:33 verbose #28346 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/python.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:19:33 verbose #28347 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/python.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:34 verbose #28348 > 00:00:06 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:19:34 verbose #28349 > 00:00:06 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:19:34 verbose #28350 > 00:00:06 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 4347 } 00:19:34 debug #28351 runtime.execute_with_options_async / { exit_code = 0; output_length = 7295 } 00:19:34 debug #34 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path python.dib --retries 3 00:19:34 debug #28352 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path typescript.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:34 verbose #28353 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "typescript.dib", "--retries", "3"])) } 00:19:34 verbose #28354 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:19:34 verbose #28355 > "repl", 00:19:34 verbose #28356 > "--exit-after-run", 00:19:34 verbose #28357 > "--run", 00:19:34 verbose #28358 > "/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib", 00:19:34 verbose #28359 > "--output-path", 00:19:34 verbose #28360 > "/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.ipynb", 00:19:34 verbose #28361 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:19:35 verbose #28362 > > 00:19:35 verbose #28363 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:35 verbose #28364 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:35 verbose #28365 > > │ # typescript │ 00:19:35 verbose #28366 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:35 verbose #28367 > > 00:19:35 verbose #28368 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:35 verbose #28369 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:35 verbose #28370 > > │ ### emit_expr │ 00:19:35 verbose #28371 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:38 verbose #28372 > > 00:19:38 verbose #28373 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:38 verbose #28374 > > inl emit_expr forall a t. (args : a) (code : string) : t = 00:19:38 verbose #28375 > > real 00:19:38 verbose #28376 > > $'Fable.Core.JsInterop.emitJsExpr !args !code ' : t 00:19:38 verbose #28377 > > 00:19:38 verbose #28378 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:38 verbose #28379 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:38 verbose #28380 > > │ ### │ 00:19:38 verbose #28381 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:38 verbose #28382 > > 00:19:38 verbose #28383 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:38 verbose #28384 > > inl (~!\) forall t. (code : string) : t = 00:19:38 verbose #28385 > > emit_expr () code 00:19:38 verbose #28386 > > 00:19:38 verbose #28387 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:38 verbose #28388 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:38 verbose #28389 > > │ ### │ 00:19:38 verbose #28390 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:38 verbose #28391 > > 00:19:38 verbose #28392 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:38 verbose #28393 > > inl (~!\\) forall t u. ((args : t), (code : string)) : u = 00:19:38 verbose #28394 > > emit_expr args code 00:19:38 verbose #28395 > > 00:19:38 verbose #28396 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:38 verbose #28397 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:38 verbose #28398 > > │ ### │ 00:19:38 verbose #28399 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:38 verbose #28400 > > 00:19:38 verbose #28401 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:38 verbose #28402 > > inl import_all forall t. (file : string) : t = 00:19:38 verbose #28403 > > real 00:19:38 verbose #28404 > > $'Fable.Core.JsInterop.importAll !file ' : t 00:19:39 verbose #28405 > > 00:19:39 verbose #28406 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:39 verbose #28407 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:39 verbose #28408 > > │ ### │ 00:19:39 verbose #28409 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:39 verbose #28410 > > 00:19:39 verbose #28411 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:39 verbose #28412 > > inl import forall t. (name : string) (file : string) : t = 00:19:39 verbose #28413 > > real 00:19:39 verbose #28414 > > $'Fable.Core.JsInterop.import !name !file ' : t 00:19:39 verbose #28415 > 00:00:04 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 3392 } 00:19:39 verbose #28416 > 00:00:04 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:19:39 verbose #28417 > "nbconvert", 00:19:39 verbose #28418 > "/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.ipynb", 00:19:39 verbose #28419 > "--to", 00:19:39 verbose #28420 > "html", 00:19:39 verbose #28421 > "--HTMLExporter.theme=dark", 00:19:39 verbose #28422 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:39 verbose #28423 > 00:00:05 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.ipynb to html 00:19:39 verbose #28424 > 00:00:05 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:19:39 verbose #28425 > 00:00:05 verbose #7 ! validate(nb) 00:19:40 verbose #28426 > 00:00:05 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:19:40 verbose #28427 > 00:00:05 verbose #9 ! return _pygments_highlight( 00:19:40 verbose #28428 > 00:00:05 verbose #10 ! [NbConvertApp] Writing 278630 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.html 00:19:40 verbose #28429 > 00:00:06 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 904 } 00:19:40 verbose #28430 > 00:00:06 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 904 } 00:19:40 verbose #28431 > 00:00:06 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:19:40 verbose #28432 > "-c", 00:19:40 verbose #28433 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:19:40 verbose #28434 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:40 verbose #28435 > 00:00:06 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:19:40 verbose #28436 > 00:00:06 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:19:40 verbose #28437 > 00:00:06 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 4355 } 00:19:40 debug #28438 runtime.execute_with_options_async / { exit_code = 0; output_length = 7339 } 00:19:40 debug #35 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path typescript.dib --retries 3 00:19:40 debug #28439 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path file_system.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:40 verbose #28440 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "file_system.dib", "--retries", "3"])) } 00:19:40 verbose #28441 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:19:40 verbose #28442 > "repl", 00:19:40 verbose #28443 > "--exit-after-run", 00:19:40 verbose #28444 > "--run", 00:19:40 verbose #28445 > "/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib", 00:19:40 verbose #28446 > "--output-path", 00:19:40 verbose #28447 > "/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.ipynb", 00:19:40 verbose #28448 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:19:42 verbose #28449 > > 00:19:42 verbose #28450 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:42 verbose #28451 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:42 verbose #28452 > > │ # file_system │ 00:19:42 verbose #28453 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:44 verbose #28454 > > 00:19:44 verbose #28455 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:44 verbose #28456 > > open sm'_operators 00:19:44 verbose #28457 > > open rust 00:19:44 verbose #28458 > > open rust_operators 00:19:45 verbose #28459 > > 00:19:45 verbose #28460 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:45 verbose #28461 > > //// test 00:19:45 verbose #28462 > > 00:19:45 verbose #28463 > > open testing 00:19:45 verbose #28464 > > 00:19:45 verbose #28465 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:45 verbose #28466 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:45 verbose #28467 > > │ ## fsharp │ 00:19:45 verbose #28468 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:45 verbose #28469 > > 00:19:45 verbose #28470 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:45 verbose #28471 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:45 verbose #28472 > > │ ### file_mode │ 00:19:45 verbose #28473 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:45 verbose #28474 > > 00:19:45 verbose #28475 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:45 verbose #28476 > > nominal file_mode' = $'System.IO.FileMode' 00:19:45 verbose #28477 > > 00:19:45 verbose #28478 > > union file_mode = 00:19:45 verbose #28479 > > | ModeCreateNew 00:19:45 verbose #28480 > > | ModeCreate 00:19:45 verbose #28481 > > | ModeOpen 00:19:45 verbose #28482 > > | ModeOpenOrCreate 00:19:45 verbose #28483 > > | Truncate 00:19:45 verbose #28484 > > | Append 00:19:45 verbose #28485 > > 00:19:45 verbose #28486 > > inl file_mode = function 00:19:45 verbose #28487 > > | ModeCreateNew => $'System.IO.FileMode.CreateNew' : file_mode' 00:19:45 verbose #28488 > > | ModeCreate => $'System.IO.FileMode.Create' : file_mode' 00:19:45 verbose #28489 > > | ModeOpen => $'System.IO.FileMode.Open' : file_mode' 00:19:45 verbose #28490 > > | ModeOpenOrCreate => $'System.IO.FileMode.OpenOrCreate' : file_mode' 00:19:45 verbose #28491 > > | Truncate => $'System.IO.FileMode.Truncate' : file_mode' 00:19:45 verbose #28492 > > | Append => $'System.IO.FileMode.Append' : file_mode' 00:19:45 verbose #28493 > > 00:19:45 verbose #28494 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:45 verbose #28495 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:45 verbose #28496 > > │ ### file_access │ 00:19:45 verbose #28497 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:45 verbose #28498 > > 00:19:45 verbose #28499 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:45 verbose #28500 > > nominal file_access' = $'System.IO.FileAccess' 00:19:45 verbose #28501 > > 00:19:45 verbose #28502 > > union file_access = 00:19:45 verbose #28503 > > | AccessRead 00:19:45 verbose #28504 > > | AccessWrite 00:19:45 verbose #28505 > > | AccessReadWrite 00:19:45 verbose #28506 > > 00:19:45 verbose #28507 > > inl file_access = function 00:19:45 verbose #28508 > > | AccessRead => $'System.IO.FileAccess.Read' : file_access' 00:19:45 verbose #28509 > > | AccessWrite => $'System.IO.FileAccess.ReadWrite' : file_access' 00:19:45 verbose #28510 > > | AccessReadWrite => $'System.IO.FileAccess.ReadWrite' : file_access' 00:19:45 verbose #28511 > > 00:19:45 verbose #28512 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:45 verbose #28513 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:45 verbose #28514 > > │ ### file_share │ 00:19:45 verbose #28515 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:45 verbose #28516 > > 00:19:45 verbose #28517 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:45 verbose #28518 > > nominal file_share' = $'System.IO.FileShare' 00:19:45 verbose #28519 > > 00:19:45 verbose #28520 > > union file_share = 00:19:45 verbose #28521 > > | ShareNone 00:19:45 verbose #28522 > > | ShareRead 00:19:45 verbose #28523 > > | ShareWrite 00:19:45 verbose #28524 > > | ShareReadWrite 00:19:45 verbose #28525 > > | ShareDelete 00:19:45 verbose #28526 > > 00:19:45 verbose #28527 > > inl file_share = function 00:19:45 verbose #28528 > > | ShareNone => $'System.IO.FileShare.None' : file_share' 00:19:45 verbose #28529 > > | ShareRead => $'System.IO.FileShare.Read' : file_share' 00:19:45 verbose #28530 > > | ShareWrite => $'System.IO.FileShare.Write' : file_share' 00:19:45 verbose #28531 > > | ShareReadWrite => $'System.IO.FileShare.ReadWrite' : file_share' 00:19:45 verbose #28532 > > | ShareDelete => $'System.IO.FileShare.Delete' : file_share' 00:19:45 verbose #28533 > > 00:19:45 verbose #28534 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:45 verbose #28535 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:45 verbose #28536 > > │ ### file_stream │ 00:19:45 verbose #28537 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:45 verbose #28538 > > 00:19:45 verbose #28539 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:45 verbose #28540 > > nominal file_stream' = $'System.IO.FileStream' 00:19:45 verbose #28541 > > 00:19:45 verbose #28542 > > inl file_stream (path : string) mode access share : file_stream' = 00:19:45 verbose #28543 > > run_target function 00:19:45 verbose #28544 > > | Fsharp (Native) => fun () => 00:19:45 verbose #28545 > > inl mode = mode |> file_mode 00:19:45 verbose #28546 > > inl access = access |> file_access 00:19:45 verbose #28547 > > inl share = share |> file_share 00:19:45 verbose #28548 > > $'new System.IO.FileStream (!path, !mode, !access, !share)' 00:19:45 verbose #28549 > > | _ => fun () => null () 00:19:45 verbose #28550 > > 00:19:45 verbose #28551 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:45 verbose #28552 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:45 verbose #28553 > > │ ### directory_info │ 00:19:45 verbose #28554 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:45 verbose #28555 > > 00:19:45 verbose #28556 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:45 verbose #28557 > > nominal directory_info = $'System.IO.DirectoryInfo' 00:19:45 verbose #28558 > > 00:19:45 verbose #28559 > > inl directory_info (path : string) : directory_info = 00:19:45 verbose #28560 > > path |> $'`directory_info ' 00:19:46 verbose #28561 > > 00:19:46 verbose #28562 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:46 verbose #28563 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:46 verbose #28564 > > │ ### directory_info_exists │ 00:19:46 verbose #28565 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:46 verbose #28566 > > 00:19:46 verbose #28567 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:46 verbose #28568 > > inl directory_info_exists (info : directory_info) : bool = 00:19:46 verbose #28569 > > run_target function 00:19:46 verbose #28570 > > | Fsharp (Native) => fun () => 00:19:46 verbose #28571 > > $'!info.Exists' 00:19:46 verbose #28572 > > | _ => fun () => null () 00:19:46 verbose #28573 > > 00:19:46 verbose #28574 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:46 verbose #28575 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:46 verbose #28576 > > │ ### directory_info_creation_time │ 00:19:46 verbose #28577 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:46 verbose #28578 > > 00:19:46 verbose #28579 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:46 verbose #28580 > > inl directory_info_creation_time (info : directory_info) : date_time.date_time = 00:19:46 verbose #28581 > > run_target function 00:19:46 verbose #28582 > > | Fsharp (Native) => fun () => 00:19:46 verbose #28583 > > $'!info.CreationTime' 00:19:46 verbose #28584 > > | _ => fun () => null () 00:19:46 verbose #28585 > > 00:19:46 verbose #28586 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:46 verbose #28587 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:46 verbose #28588 > > │ ### directory_info_name │ 00:19:46 verbose #28589 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:46 verbose #28590 > > 00:19:46 verbose #28591 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:46 verbose #28592 > > inl directory_info_name (info : directory_info) : string = 00:19:46 verbose #28593 > > run_target function 00:19:46 verbose #28594 > > | Fsharp (Native) => fun () => 00:19:46 verbose #28595 > > $'!info.Name' 00:19:46 verbose #28596 > > | _ => fun () => null () 00:19:46 verbose #28597 > > 00:19:46 verbose #28598 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:46 verbose #28599 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:46 verbose #28600 > > │ ### directory_info_full_name │ 00:19:46 verbose #28601 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:46 verbose #28602 > > 00:19:46 verbose #28603 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:46 verbose #28604 > > inl directory_info_full_name (info : directory_info) : string = 00:19:46 verbose #28605 > > run_target function 00:19:46 verbose #28606 > > | Fsharp (Native) => fun () => 00:19:46 verbose #28607 > > $'!info.FullName' 00:19:46 verbose #28608 > > | _ => fun () => null () 00:19:46 verbose #28609 > > 00:19:46 verbose #28610 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:46 verbose #28611 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:46 verbose #28612 > > │ ### create_directory │ 00:19:46 verbose #28613 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:46 verbose #28614 > > 00:19:46 verbose #28615 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:46 verbose #28616 > > inl create_directory (path : string) : directory_info = 00:19:46 verbose #28617 > > run_target function 00:19:46 verbose #28618 > > | Fsharp (Native) => fun () => 00:19:46 verbose #28619 > > path |> $'System.IO.Directory.CreateDirectory' 00:19:46 verbose #28620 > > | _ => fun () => null () 00:19:46 verbose #28621 > > 00:19:46 verbose #28622 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:46 verbose #28623 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:46 verbose #28624 > > │ ### directory_get_files │ 00:19:46 verbose #28625 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:46 verbose #28626 > > 00:19:46 verbose #28627 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:46 verbose #28628 > > inl directory_get_files (path : string) : array_base string = 00:19:46 verbose #28629 > > run_target function 00:19:46 verbose #28630 > > | Fsharp (Native) => fun () => 00:19:46 verbose #28631 > > path |> $'System.IO.Directory.GetFiles' 00:19:46 verbose #28632 > > | _ => fun () => null () 00:19:46 verbose #28633 > > 00:19:46 verbose #28634 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:46 verbose #28635 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:46 verbose #28636 > > │ ### file_move │ 00:19:46 verbose #28637 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:46 verbose #28638 > > 00:19:46 verbose #28639 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:46 verbose #28640 > > inl file_move (new_path : string) (old_path : string) : () = 00:19:46 verbose #28641 > > run_target function 00:19:46 verbose #28642 > > | Fsharp (Native) => fun () => 00:19:46 verbose #28643 > > $'System.IO.File.Move (!old_path, !new_path)' 00:19:46 verbose #28644 > > | _ => fun () => () 00:19:46 verbose #28645 > > 00:19:46 verbose #28646 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:46 verbose #28647 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:46 verbose #28648 > > │ ### read_all_text_async │ 00:19:46 verbose #28649 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:46 verbose #28650 > > 00:19:46 verbose #28651 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:46 verbose #28652 > > inl read_all_text_async (path : string) : _ string = 00:19:46 verbose #28653 > > run_target function 00:19:46 verbose #28654 > > | Fsharp (Native) => fun () => 00:19:46 verbose #28655 > > path |> $'System.IO.File.ReadAllTextAsync' |> async.await_task 00:19:46 verbose #28656 > > | _ => fun () => null () 00:19:46 verbose #28657 > > 00:19:46 verbose #28658 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:46 verbose #28659 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:46 verbose #28660 > > │ ### write_all_text_async │ 00:19:46 verbose #28661 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:46 verbose #28662 > > 00:19:46 verbose #28663 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:46 verbose #28664 > > inl write_all_text_async (path : string) (text : string) : _ () = 00:19:46 verbose #28665 > > run_target function 00:19:46 verbose #28666 > > | Fsharp (Native) => fun () => 00:19:46 verbose #28667 > > $'System.IO.File.WriteAllTextAsync (!path, !text)' |> 00:19:46 verbose #28668 > > async.await_task 00:19:46 verbose #28669 > > | _ => fun () => null () 00:19:46 verbose #28670 > > 00:19:46 verbose #28671 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:46 verbose #28672 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:46 verbose #28673 > > │ ### file_system_info │ 00:19:46 verbose #28674 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:46 verbose #28675 > > 00:19:46 verbose #28676 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:46 verbose #28677 > > nominal file_system_info = $'System.IO.FileSystemInfo' 00:19:46 verbose #28678 > > 00:19:46 verbose #28679 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:46 verbose #28680 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:46 verbose #28681 > > │ ### get_source_directory │ 00:19:46 verbose #28682 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:46 verbose #28683 > > 00:19:46 verbose #28684 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:46 verbose #28685 > > inl get_source_directory () = 00:19:46 verbose #28686 > > $'__SOURCE_DIRECTORY__' : string 00:19:46 verbose #28687 > > 00:19:46 verbose #28688 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:46 verbose #28689 > > //// test 00:19:46 verbose #28690 > > 00:19:46 verbose #28691 > > get_source_directory () 00:19:46 verbose #28692 > > |> directory_info 00:19:46 verbose #28693 > > |> directory_info_name 00:19:46 verbose #28694 > > |> _assert_eq "spiral" 00:19:47 verbose #28695 > > 00:19:47 verbose #28696 > > ╭─[ 599.72ms - stdout ]────────────────────────────────────────────────────────╮ 00:19:47 verbose #28697 > > │ __assert_eq / actual: "spiral" / expected: "spiral" │ 00:19:47 verbose #28698 > > │ │ 00:19:47 verbose #28699 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:47 verbose #28700 > > 00:19:47 verbose #28701 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:47 verbose #28702 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:47 verbose #28703 > > │ ## rust │ 00:19:47 verbose #28704 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:47 verbose #28705 > > 00:19:47 verbose #28706 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:47 verbose #28707 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:47 verbose #28708 > > │ ### display │ 00:19:47 verbose #28709 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:47 verbose #28710 > > 00:19:47 verbose #28711 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:47 verbose #28712 > > nominal display = 00:19:47 verbose #28713 > > `( 00:19:47 verbose #28714 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:47 verbose #28715 > > Fable.Core.Emit(\"std::path::Display\")>]]\n#endif\ntype std_path_Display = 00:19:47 verbose #28716 > > class end" 00:19:47 verbose #28717 > > $'' : $'std_path_Display' 00:19:47 verbose #28718 > > ) 00:19:47 verbose #28719 > > 00:19:47 verbose #28720 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:47 verbose #28721 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:47 verbose #28722 > > │ ### path │ 00:19:47 verbose #28723 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:47 verbose #28724 > > 00:19:47 verbose #28725 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:47 verbose #28726 > > nominal path = 00:19:47 verbose #28727 > > `( 00:19:47 verbose #28728 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:47 verbose #28729 > > Fable.Core.Emit(\"std::path::Path\")>]]\n#endif\ntype std_path_Path = class end" 00:19:47 verbose #28730 > > $'' : $'std_path_Path' 00:19:47 verbose #28731 > > ) 00:19:47 verbose #28732 > > 00:19:47 verbose #28733 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:47 verbose #28734 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:47 verbose #28735 > > │ ### path_buf │ 00:19:47 verbose #28736 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:47 verbose #28737 > > 00:19:47 verbose #28738 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:47 verbose #28739 > > nominal path_buf = 00:19:47 verbose #28740 > > `( 00:19:47 verbose #28741 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:47 verbose #28742 > > Fable.Core.Emit(\"std::path::PathBuf\")>]]\n#endif\ntype std_path_PathBuf = 00:19:47 verbose #28743 > > class end" 00:19:47 verbose #28744 > > $'' : $'std_path_PathBuf' 00:19:47 verbose #28745 > > ) 00:19:47 verbose #28746 > > 00:19:47 verbose #28747 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:47 verbose #28748 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:47 verbose #28749 > > │ ### new_path_buf │ 00:19:47 verbose #28750 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:47 verbose #28751 > > 00:19:47 verbose #28752 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:47 verbose #28753 > > inl new_path_buf (path : sm'.std_string) : path_buf = 00:19:47 verbose #28754 > > !\\(path, $'"std::path::PathBuf::from($0)"') 00:19:47 verbose #28755 > > 00:19:47 verbose #28756 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:47 verbose #28757 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:47 verbose #28758 > > │ ### path_buf_from │ 00:19:47 verbose #28759 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:47 verbose #28760 > > 00:19:47 verbose #28761 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:47 verbose #28762 > > inl path_buf_from (path : rust.box path) : path_buf = 00:19:47 verbose #28763 > > !\\(path, $'"std::path::PathBuf::from($0)"') 00:19:48 verbose #28764 > > 00:19:48 verbose #28765 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:48 verbose #28766 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:48 verbose #28767 > > │ ### path_buf_join │ 00:19:48 verbose #28768 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:48 verbose #28769 > > 00:19:48 verbose #28770 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:48 verbose #28771 > > inl path_buf_join (s : string) (path_buf : path_buf) : path_buf = 00:19:48 verbose #28772 > > !\\((path_buf, s |> sm'.to_std_string), $'"$0.join($1)"') 00:19:48 verbose #28773 > > 00:19:48 verbose #28774 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:48 verbose #28775 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:48 verbose #28776 > > │ ### path_buf_strip_prefix │ 00:19:48 verbose #28777 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:48 verbose #28778 > > 00:19:48 verbose #28779 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:48 verbose #28780 > > inl path_buf_strip_prefix (s : string) (path_buf : path_buf) : path_buf = 00:19:48 verbose #28781 > > !\\((path_buf, s |> sm'.to_std_string), 00:19:48 verbose #28782 > > $'"$0.strip_prefix($1).unwrap().to_path_buf()"') 00:19:48 verbose #28783 > > 00:19:48 verbose #28784 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:48 verbose #28785 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:48 verbose #28786 > > │ ### path_display │ 00:19:48 verbose #28787 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:48 verbose #28788 > > 00:19:48 verbose #28789 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:48 verbose #28790 > > inl path_display (path : rust.ref path) : display = 00:19:48 verbose #28791 > > !\\(path, $'"$0.display()"') 00:19:48 verbose #28792 > > 00:19:48 verbose #28793 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:48 verbose #28794 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:48 verbose #28795 > > │ ### path_buf_display │ 00:19:48 verbose #28796 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:48 verbose #28797 > > 00:19:48 verbose #28798 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:48 verbose #28799 > > inl path_buf_display (path_buf : path_buf) : display = 00:19:48 verbose #28800 > > !\\(path_buf, $'"$0.display()"') 00:19:48 verbose #28801 > > 00:19:48 verbose #28802 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:48 verbose #28803 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:48 verbose #28804 > > │ ### path_buf_file_name │ 00:19:48 verbose #28805 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:48 verbose #28806 > > 00:19:48 verbose #28807 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:48 verbose #28808 > > inl path_buf_file_name (path : path_buf) : optionm'.option' (rust.ref 00:19:48 verbose #28809 > > sm'.os_str) = 00:19:48 verbose #28810 > > !\($'"!path.file_name()"') 00:19:48 verbose #28811 > > 00:19:48 verbose #28812 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:48 verbose #28813 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:48 verbose #28814 > > │ ### path_buf_exists │ 00:19:48 verbose #28815 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:48 verbose #28816 > > 00:19:48 verbose #28817 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:48 verbose #28818 > > inl path_buf_exists (path_buf : path_buf) : bool = 00:19:48 verbose #28819 > > !\\(path_buf, $'"$0.exists()"') 00:19:48 verbose #28820 > > 00:19:48 verbose #28821 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:48 verbose #28822 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:48 verbose #28823 > > │ ### path_buf_is_dir │ 00:19:48 verbose #28824 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:48 verbose #28825 > > 00:19:48 verbose #28826 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:48 verbose #28827 > > inl path_buf_is_dir (path_buf : path_buf) : bool = 00:19:48 verbose #28828 > > !\\(path_buf, $'"$0.is_dir()"') 00:19:48 verbose #28829 > > 00:19:48 verbose #28830 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:48 verbose #28831 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:48 verbose #28832 > > │ ### path_buf_is_file │ 00:19:48 verbose #28833 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:48 verbose #28834 > > 00:19:48 verbose #28835 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:48 verbose #28836 > > inl path_buf_is_file (path_buf : path_buf) : bool = 00:19:48 verbose #28837 > > !\\(path_buf, $'"$0.is_file()"') 00:19:48 verbose #28838 > > 00:19:48 verbose #28839 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:48 verbose #28840 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:48 verbose #28841 > > │ ### path_buf_is_symlink │ 00:19:48 verbose #28842 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:48 verbose #28843 > > 00:19:48 verbose #28844 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:48 verbose #28845 > > inl path_buf_is_symlink (path_buf : path_buf) : bool = 00:19:48 verbose #28846 > > !\\(path_buf, $'"$0.is_symlink()"') 00:19:48 verbose #28847 > > 00:19:48 verbose #28848 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:48 verbose #28849 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:48 verbose #28850 > > │ ### path_buf_parent │ 00:19:48 verbose #28851 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:48 verbose #28852 > > 00:19:48 verbose #28853 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:48 verbose #28854 > > inl path_buf_parent (path_buf : path_buf) : optionm'.option' path_buf = 00:19:48 verbose #28855 > > !\\(path_buf, $'"$0.parent().map(std::path::PathBuf::from)"') 00:19:48 verbose #28856 > > 00:19:48 verbose #28857 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:48 verbose #28858 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:48 verbose #28859 > > │ ### dir_entry │ 00:19:48 verbose #28860 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:48 verbose #28861 > > 00:19:48 verbose #28862 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:48 verbose #28863 > > nominal dir_entry = 00:19:48 verbose #28864 > > `( 00:19:48 verbose #28865 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:48 verbose #28866 > > Fable.Core.Emit(\"async_walkdir::DirEntry\")>]]\n#endif\ntype 00:19:48 verbose #28867 > > async_walkdir_DirEntry = class end" 00:19:48 verbose #28868 > > $'' : $'async_walkdir_DirEntry' 00:19:48 verbose #28869 > > ) 00:19:48 verbose #28870 > > 00:19:48 verbose #28871 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:48 verbose #28872 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:48 verbose #28873 > > │ ### walk_dir │ 00:19:48 verbose #28874 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:48 verbose #28875 > > 00:19:48 verbose #28876 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:48 verbose #28877 > > nominal walk_dir = 00:19:48 verbose #28878 > > `( 00:19:48 verbose #28879 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:48 verbose #28880 > > Fable.Core.Emit(\"async_walkdir::WalkDir\")>]]\n#endif\ntype 00:19:48 verbose #28881 > > async_walkdir_WalkDir = class end" 00:19:48 verbose #28882 > > $'' : $'async_walkdir_WalkDir' 00:19:48 verbose #28883 > > ) 00:19:49 verbose #28884 > > 00:19:49 verbose #28885 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:49 verbose #28886 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:49 verbose #28887 > > │ ### async_walkdir_filtering │ 00:19:49 verbose #28888 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:49 verbose #28889 > > 00:19:49 verbose #28890 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:49 verbose #28891 > > nominal async_walkdir_filtering = 00:19:49 verbose #28892 > > `( 00:19:49 verbose #28893 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:49 verbose #28894 > > Fable.Core.Emit(\"async_walkdir::Filtering\")>]]\n#endif\ntype 00:19:49 verbose #28895 > > async_walkdir_Filtering = class end" 00:19:49 verbose #28896 > > $'' : $'async_walkdir_Filtering' 00:19:49 verbose #28897 > > ) 00:19:49 verbose #28898 > > 00:19:49 verbose #28899 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:49 verbose #28900 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:49 verbose #28901 > > │ ### filtering │ 00:19:49 verbose #28902 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:49 verbose #28903 > > 00:19:49 verbose #28904 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:49 verbose #28905 > > union filtering = 00:19:49 verbose #28906 > > | Ignore 00:19:49 verbose #28907 > > | IgnoreDir 00:19:49 verbose #28908 > > | Continue 00:19:49 verbose #28909 > > 00:19:49 verbose #28910 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:49 verbose #28911 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:49 verbose #28912 > > │ ### async_walkdir_error │ 00:19:49 verbose #28913 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:49 verbose #28914 > > 00:19:49 verbose #28915 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:49 verbose #28916 > > nominal async_walkdir_error = 00:19:49 verbose #28917 > > `( 00:19:49 verbose #28918 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:49 verbose #28919 > > Fable.Core.Emit(\"async_walkdir::Error\")>]]\n#endif\ntype async_walkdir_Error = 00:19:49 verbose #28920 > > class end" 00:19:49 verbose #28921 > > $'' : $'async_walkdir_Error' 00:19:49 verbose #28922 > > ) 00:19:49 verbose #28923 > > 00:19:49 verbose #28924 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:49 verbose #28925 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:49 verbose #28926 > > │ ### new_walk_dir │ 00:19:49 verbose #28927 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:49 verbose #28928 > > 00:19:49 verbose #28929 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:49 verbose #28930 > > inl new_walk_dir (dir : string) : walk_dir = 00:19:49 verbose #28931 > > !\\(dir, $'"async_walkdir::WalkDir::new(&*$0)"') 00:19:49 verbose #28932 > > // inl walk_dir : walk_dir = walk_dir |> rust.to_mut 00:19:49 verbose #28933 > > // (!\($'"true; let mut !walk_dir = !walk_dir"') : bool) |> ignore 00:19:49 verbose #28934 > > 00:19:49 verbose #28935 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:49 verbose #28936 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:49 verbose #28937 > > │ ### walk_dir_filter │ 00:19:49 verbose #28938 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:49 verbose #28939 > > 00:19:49 verbose #28940 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:49 verbose #28941 > > inl walk_dir_filter (fn : dir_entry -> async.future_pin_send filtering) 00:19:49 verbose #28942 > > (walk_dir : walk_dir) : walk_dir = 00:19:49 verbose #28943 > > inl fn entry = async.new_future_send fun () => 00:19:49 verbose #28944 > > inl result = fn entry |> async.await_send 00:19:49 verbose #28945 > > inl filtering : async_walkdir_filtering = 00:19:49 verbose #28946 > > match result with 00:19:49 verbose #28947 > > | Ignore => !\($'"async_walkdir::Filtering::Ignore"') 00:19:49 verbose #28948 > > | IgnoreDir => !\($'"async_walkdir::Filtering::IgnoreDir"') 00:19:49 verbose #28949 > > | Continue => !\($'"async_walkdir::Filtering::Continue"') 00:19:49 verbose #28950 > > filtering 00:19:49 verbose #28951 > > !\\((walk_dir, fn), $'"async_walkdir::WalkDir::filter($0, |x| $1(x))"') 00:19:49 verbose #28952 > > 00:19:49 verbose #28953 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:49 verbose #28954 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:49 verbose #28955 > > │ ### file_type │ 00:19:49 verbose #28956 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:49 verbose #28957 > > 00:19:49 verbose #28958 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:49 verbose #28959 > > nominal file_type = 00:19:49 verbose #28960 > > `( 00:19:49 verbose #28961 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:49 verbose #28962 > > Fable.Core.Emit(\"std::fs::FileType\")>]]\n#endif\ntype std_fs_FileType = class 00:19:49 verbose #28963 > > end" 00:19:49 verbose #28964 > > $'' : $'std_fs_FileType' 00:19:49 verbose #28965 > > ) 00:19:49 verbose #28966 > > 00:19:49 verbose #28967 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:49 verbose #28968 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:49 verbose #28969 > > │ ### dir_entry_file_type │ 00:19:49 verbose #28970 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:49 verbose #28971 > > 00:19:49 verbose #28972 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:49 verbose #28973 > > inl dir_entry_file_type (dir_entry : dir_entry) : async.future_pin_send 00:19:49 verbose #28974 > > (resultm.result' file_type stream.io_error) = 00:19:49 verbose #28975 > > inl dir_entry = join dir_entry 00:19:49 verbose #28976 > > !\($'"Box::pin(async_walkdir::DirEntry::file_type(&!dir_entry))"') 00:19:49 verbose #28977 > > 00:19:49 verbose #28978 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:49 verbose #28979 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:49 verbose #28980 > > │ ### file_type_is_dir │ 00:19:49 verbose #28981 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:49 verbose #28982 > > 00:19:49 verbose #28983 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:49 verbose #28984 > > inl file_type_is_dir (file_type : file_type) : bool = 00:19:49 verbose #28985 > > inl file_type = join file_type 00:19:49 verbose #28986 > > !\($'"std::fs::FileType::is_dir(&!file_type)"') 00:19:49 verbose #28987 > > 00:19:49 verbose #28988 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:49 verbose #28989 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:49 verbose #28990 > > │ ### file │ 00:19:49 verbose #28991 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:49 verbose #28992 > > 00:19:49 verbose #28993 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:49 verbose #28994 > > nominal file = 00:19:49 verbose #28995 > > `( 00:19:49 verbose #28996 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:49 verbose #28997 > > Fable.Core.Emit(\"std::fs::File\")>]]\n#endif\ntype std_fs_File = class end" 00:19:49 verbose #28998 > > $'' : $'std_fs_File' 00:19:49 verbose #28999 > > ) 00:19:49 verbose #29000 > > 00:19:49 verbose #29001 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:49 verbose #29002 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:49 verbose #29003 > > │ ### file_open │ 00:19:49 verbose #29004 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:49 verbose #29005 > > 00:19:49 verbose #29006 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:49 verbose #29007 > > inl file_open (path : string) : resultm.result' file stream.io_error = 00:19:49 verbose #29008 > > !\($'"std::fs::File::open(&*!path)"') 00:19:50 verbose #29009 > > 00:19:50 verbose #29010 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:50 verbose #29011 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:50 verbose #29012 > > │ ### rename │ 00:19:50 verbose #29013 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:50 verbose #29014 > > 00:19:50 verbose #29015 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:50 verbose #29016 > > inl rename (to : string) (path : string) : resultm.result' () stream.io_error = 00:19:50 verbose #29017 > > !\($'"std::fs::rename(&*!path, &*!to)"') 00:19:50 verbose #29018 > > 00:19:50 verbose #29019 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:50 verbose #29020 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:50 verbose #29021 > > │ ### dir_entry_path │ 00:19:50 verbose #29022 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:50 verbose #29023 > > 00:19:50 verbose #29024 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:50 verbose #29025 > > inl dir_entry_path (dir_entry : dir_entry) : path_buf = 00:19:50 verbose #29026 > > !\\(dir_entry, $'"async_walkdir::DirEntry::path(&$0)"') 00:19:50 verbose #29027 > > 00:19:50 verbose #29028 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:50 verbose #29029 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:50 verbose #29030 > > │ ### create_dir_all │ 00:19:50 verbose #29031 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:50 verbose #29032 > > 00:19:50 verbose #29033 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:50 verbose #29034 > > inl create_dir_all (path : string) : resultm.result' () stream.io_error = 00:19:50 verbose #29035 > > !\\(path, $'"std::fs::create_dir_all(&*$0)"') 00:19:50 verbose #29036 > > 00:19:50 verbose #29037 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:50 verbose #29038 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:50 verbose #29039 > > │ ### read_link │ 00:19:50 verbose #29040 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:50 verbose #29041 > > 00:19:50 verbose #29042 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:50 verbose #29043 > > inl read_link (path : string) : resultm.result' path_buf stream.io_error = 00:19:50 verbose #29044 > > !\\(path, $'"std::fs::read_link(&*$0)"') 00:19:50 verbose #29045 > > 00:19:50 verbose #29046 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:50 verbose #29047 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:50 verbose #29048 > > │ ### read │ 00:19:50 verbose #29049 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:50 verbose #29050 > > 00:19:50 verbose #29051 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:50 verbose #29052 > > inl read (path : string) : resultm.result' (am'.vec u8) stream.io_error = 00:19:50 verbose #29053 > > !\\(path, $'"std::fs::read(&*$0)"') 00:19:50 verbose #29054 > > 00:19:50 verbose #29055 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:50 verbose #29056 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:50 verbose #29057 > > │ ## typescript │ 00:19:50 verbose #29058 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:50 verbose #29059 > > 00:19:50 verbose #29060 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:50 verbose #29061 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:50 verbose #29062 > > │ ### ts_path_join │ 00:19:50 verbose #29063 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:50 verbose #29064 > > 00:19:50 verbose #29065 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:50 verbose #29066 > > inl ts_path_join (b : string) (a : string) : string = 00:19:50 verbose #29067 > > open typescript_operators 00:19:50 verbose #29068 > > global "type IPathJoin = abstract join: [[<System.ParamArray>]] paths: 00:19:50 verbose #29069 > > string[[]] -> string" 00:19:50 verbose #29070 > > inl path : $'IPathJoin' = typescript.import_all "path" 00:19:50 verbose #29071 > > !\\((join a, join b), $'"!path.join($0, $1)"') 00:19:50 verbose #29072 > > 00:19:50 verbose #29073 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:50 verbose #29074 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:50 verbose #29075 > > │ ## file_system │ 00:19:50 verbose #29076 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:50 verbose #29077 > > 00:19:50 verbose #29078 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:50 verbose #29079 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:50 verbose #29080 > > │ ### (< />) │ 00:19:50 verbose #29081 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:50 verbose #29082 > > 00:19:50 verbose #29083 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:50 verbose #29084 > > let (</>) (a : string) (b : string) : string = 00:19:50 verbose #29085 > > run_target function 00:19:50 verbose #29086 > > | Rust (Contract) => fun () => null () 00:19:50 verbose #29087 > > | Rust (Native) => fun () => 00:19:50 verbose #29088 > > a 00:19:50 verbose #29089 > > |> sm'.to_std_string 00:19:50 verbose #29090 > > |> new_path_buf 00:19:50 verbose #29091 > > |> path_buf_join b 00:19:50 verbose #29092 > > |> path_buf_display 00:19:50 verbose #29093 > > |> sm'.format' 00:19:50 verbose #29094 > > |> sm'.from_std_string 00:19:50 verbose #29095 > > | TypeScript (Native) => fun () => 00:19:50 verbose #29096 > > a |> ts_path_join b 00:19:50 verbose #29097 > > | Fsharp (Native) => fun () => 00:19:50 verbose #29098 > > $'System.IO.Path.Combine (!a, !b)' 00:19:50 verbose #29099 > > | target => fun () => failwith $'$"file_system.(</>) / target: {!target} 00:19:50 verbose #29100 > > / a: {!a} / b: {!b}"' 00:19:50 verbose #29101 > > 00:19:50 verbose #29102 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:50 verbose #29103 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:50 verbose #29104 > > │ ### get_temp_path │ 00:19:50 verbose #29105 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:50 verbose #29106 > > 00:19:50 verbose #29107 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:50 verbose #29108 > > let get_temp_path () : string = 00:19:50 verbose #29109 > > run_target function 00:19:50 verbose #29110 > > | Rust (Contract) => fun () => null () 00:19:50 verbose #29111 > > | Rust (Native) => fun () => 00:19:50 verbose #29112 > > !\($'"std::env::temp_dir()"') 00:19:50 verbose #29113 > > |> path_buf_display 00:19:50 verbose #29114 > > |> sm'.format' 00:19:50 verbose #29115 > > |> sm'.from_std_string 00:19:50 verbose #29116 > > | Fsharp (Native) => fun () => 00:19:50 verbose #29117 > > $'System.IO.Path.GetTempPath' () 00:19:50 verbose #29118 > > | target => fun () => failwith $'$"file_system.get_temp_path / target: 00:19:50 verbose #29119 > > {!target}"' 00:19:50 verbose #29120 > > 00:19:50 verbose #29121 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:50 verbose #29122 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:50 verbose #29123 > > │ ### get_file_name │ 00:19:50 verbose #29124 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:50 verbose #29125 > > 00:19:50 verbose #29126 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:50 verbose #29127 > > let get_file_name (path : string) : string = 00:19:50 verbose #29128 > > run_target function 00:19:50 verbose #29129 > > | Rust (Contract) => fun () => null () 00:19:50 verbose #29130 > > | Rust (Native) => fun () => 00:19:50 verbose #29131 > > inl path_buf = path |> sm'.to_std_string |> new_path_buf 00:19:50 verbose #29132 > > !\\(path_buf, $'"$0.file_name()"') 00:19:50 verbose #29133 > > |> optionm'.unwrap 00:19:50 verbose #29134 > > |> sm'.from_os_str_ref 00:19:50 verbose #29135 > > | Fsharp (Native) => fun () => 00:19:50 verbose #29136 > > path |> $'System.IO.Path.GetFileName' 00:19:50 verbose #29137 > > | target => fun () => failwith $'$"file_system.get_file_name / target: 00:19:50 verbose #29138 > > {!target} / path: {!path}"' 00:19:50 verbose #29139 > > 00:19:50 verbose #29140 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:50 verbose #29141 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:50 verbose #29142 > > │ ### get_file_name_without_extension │ 00:19:50 verbose #29143 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:50 verbose #29144 > > 00:19:50 verbose #29145 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:50 verbose #29146 > > let get_file_name_without_extension (path : string) : string = 00:19:50 verbose #29147 > > run_target function 00:19:50 verbose #29148 > > | Rust (Contract) => fun () => null () 00:19:50 verbose #29149 > > | Rust (Native) => fun () => 00:19:50 verbose #29150 > > inl path_buf = path |> sm'.to_std_string |> new_path_buf 00:19:50 verbose #29151 > > !\\(path_buf, $'"$0.file_stem()"') 00:19:50 verbose #29152 > > |> optionm'.unwrap 00:19:50 verbose #29153 > > |> sm'.from_os_str_ref 00:19:50 verbose #29154 > > | _ => fun () => 00:19:50 verbose #29155 > > path |> $'System.IO.Path.GetFileNameWithoutExtension' 00:19:51 verbose #29156 > > 00:19:51 verbose #29157 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:51 verbose #29158 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:51 verbose #29159 > > │ ### get_directory_name │ 00:19:51 verbose #29160 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:51 verbose #29161 > > 00:19:51 verbose #29162 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:51 verbose #29163 > > let get_directory_name (path : string) : string = 00:19:51 verbose #29164 > > run_target function 00:19:51 verbose #29165 > > | Rust (Contract) => fun () => null () 00:19:51 verbose #29166 > > | Rust (Native) => fun () => 00:19:51 verbose #29167 > > inl path_buf = path |> sm'.to_std_string |> new_path_buf 00:19:51 verbose #29168 > > !\\(path_buf, $'"$0.parent()"') 00:19:51 verbose #29169 > > |> optionm'.unwrap 00:19:51 verbose #29170 > > |> path_display 00:19:51 verbose #29171 > > |> sm'.format' 00:19:51 verbose #29172 > > |> sm'.from_std_string 00:19:51 verbose #29173 > > | _ => fun () => 00:19:51 verbose #29174 > > path |> $'System.IO.Path.GetDirectoryName' 00:19:51 verbose #29175 > > 00:19:51 verbose #29176 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:51 verbose #29177 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:51 verbose #29178 > > │ ### get_extension │ 00:19:51 verbose #29179 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:51 verbose #29180 > > 00:19:51 verbose #29181 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:51 verbose #29182 > > let get_extension (path : string) : string = 00:19:51 verbose #29183 > > run_target function 00:19:51 verbose #29184 > > | Rust (Contract) => fun () => null () 00:19:51 verbose #29185 > > | Rust (Native) => fun () => 00:19:51 verbose #29186 > > inl path_buf = path |> sm'.to_std_string |> new_path_buf 00:19:51 verbose #29187 > > !\\(path_buf, $'"$0.extension()"') 00:19:51 verbose #29188 > > |> optionm'.unwrap 00:19:51 verbose #29189 > > |> sm'.from_os_str_ref 00:19:51 verbose #29190 > > | _ => fun () => 00:19:51 verbose #29191 > > path |> $'System.IO.Path.GetExtension' 00:19:51 verbose #29192 > > 00:19:51 verbose #29193 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:51 verbose #29194 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:51 verbose #29195 > > │ ### directory_separator_char │ 00:19:51 verbose #29196 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:51 verbose #29197 > > 00:19:51 verbose #29198 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:51 verbose #29199 > > let directory_separator_char () : char = 00:19:51 verbose #29200 > > run_target function 00:19:51 verbose #29201 > > | Rust (Native) => fun () => 00:19:51 verbose #29202 > > !\($'"std::path::MAIN_SEPARATOR"') 00:19:51 verbose #29203 > > | _ => fun () => 00:19:51 verbose #29204 > > $'System.IO.Path.DirectorySeparatorChar' 00:19:51 verbose #29205 > > 00:19:51 verbose #29206 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:51 verbose #29207 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:51 verbose #29208 > > │ ### get_current_directory │ 00:19:51 verbose #29209 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:51 verbose #29210 > > 00:19:51 verbose #29211 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:51 verbose #29212 > > let get_current_directory () : string = 00:19:51 verbose #29213 > > run_target function 00:19:51 verbose #29214 > > | Rust (Contract | Wasm) => fun () => null () 00:19:51 verbose #29215 > > | Rust (Native) => fun () => 00:19:51 verbose #29216 > > inl current_dir = !\($'"std::env::current_dir()"') : resultm.result' 00:19:51 verbose #29217 > > path_buf stream.io_error 00:19:51 verbose #29218 > > current_dir 00:19:51 verbose #29219 > > |> resultm.unwrap' 00:19:51 verbose #29220 > > |> path_buf_display 00:19:51 verbose #29221 > > |> sm'.format' 00:19:51 verbose #29222 > > |> sm'.from_std_string 00:19:51 verbose #29223 > > | Fsharp (Native) => fun () => 00:19:51 verbose #29224 > > $'System.IO.Directory.GetCurrentDirectory' () 00:19:51 verbose #29225 > > | _ => fun () => null () 00:19:51 verbose #29226 > > 00:19:51 verbose #29227 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:51 verbose #29228 > > //// test 00:19:51 verbose #29229 > > 00:19:51 verbose #29230 > > get_current_directory () 00:19:51 verbose #29231 > > |> _assert_contains (directory_separator_char ()) 00:19:52 verbose #29232 > > 00:19:52 verbose #29233 > > ╭─[ 488.84ms - stdout ]────────────────────────────────────────────────────────╮ 00:19:52 verbose #29234 > > │ __assert_contains / actual: "/home/runner/work/polyglot/polyglot/lib/spiral" │ 00:19:52 verbose #29235 > > │ / expected: '/' │ 00:19:52 verbose #29236 > > │ │ 00:19:52 verbose #29237 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:52 verbose #29238 > > 00:19:52 verbose #29239 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:52 verbose #29240 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:52 verbose #29241 > > │ ### normalize_path │ 00:19:52 verbose #29242 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:52 verbose #29243 > > 00:19:52 verbose #29244 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:52 verbose #29245 > > let normalize_path (path : string) : string = 00:19:52 verbose #29246 > > if path = "" 00:19:52 verbose #29247 > > then "" 00:19:52 verbose #29248 > > else 00:19:52 verbose #29249 > > inl path = path |> sm'.replace_regex @"^\\\\\?\\" "" 00:19:52 verbose #29250 > > $'$"{!path.[[0]] |> string |> _.ToLower()}{!path.[[1..]]}"' |> 00:19:52 verbose #29251 > > sm'.replace "\\" "/" 00:19:52 verbose #29252 > > 00:19:52 verbose #29253 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:52 verbose #29254 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:19:52 verbose #29255 > > │ ### get_full_path │ 00:19:52 verbose #29256 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:52 verbose #29257 > > 00:19:52 verbose #29258 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:52 verbose #29259 > > let get_full_path (path : string) : string = 00:19:52 verbose #29260 > > run_target_args (fun () => path) function 00:19:52 verbose #29261 > > | Fsharp (Native) => fun path => 00:19:52 verbose #29262 > > path |> $'System.IO.Path.GetFullPath' 00:19:52 verbose #29263 > > | Rust (Native) => fun path => 00:19:52 verbose #29264 > > inl path_buf = path |> sm'.to_std_string |> new_path_buf 00:19:52 verbose #29265 > > if path_buf |> path_buf_exists |> not then 00:19:52 verbose #29266 > > inl current_dir = get_current_directory () 00:19:52 verbose #29267 > > current_dir </> path 00:19:52 verbose #29268 > > |> normalize_path 00:19:52 verbose #29269 > > |> sm'.split "/" 00:19:52 verbose #29270 > > |> fun x => 00:19:52 verbose #29271 > > ((a x : _ i32 _), (0i32, (a ;[[]] : _ i32 _))) 00:19:52 verbose #29272 > > ||> am.foldBack fun x level, acc => 00:19:52 verbose #29273 > > match x, level with 00:19:52 verbose #29274 > > | "..", _ => level + 1, acc 00:19:52 verbose #29275 > > | ".", _ => level, acc 00:19:52 verbose #29276 > > | _, 0 when x |> sm'.ends_with ":" => 0, a ;[[ 00:19:52 verbose #29277 > > $'$"{!current_dir.[[0]]}:"' ]] ++ acc 00:19:52 verbose #29278 > > | _, 0 => 0, a ;[[ x ]] ++ acc 00:19:52 verbose #29279 > > | _ => level - 1, acc 00:19:52 verbose #29280 > > |> snd 00:19:52 verbose #29281 > > |> seq.of_array' 00:19:52 verbose #29282 > > |> sm'.concat (directory_separator_char () |> sm'.obj_to_string) 00:19:52 verbose #29283 > > else 00:19:52 verbose #29284 > > inl path = !\\(path, $'"std::fs::canonicalize(&*$0)"') : 00:19:52 verbose #29285 > > resultm.result' path_buf stream.io_error 00:19:52 verbose #29286 > > path 00:19:52 verbose #29287 > > |> resultm.unwrap' 00:19:52 verbose #29288 > > |> path_buf_display 00:19:52 verbose #29289 > > |> sm'.format' 00:19:52 verbose #29290 > > |> sm'.from_std_string 00:19:52 verbose #29291 > > | _ => fun _ => null () 00:19:52 verbose #29292 > > 00:19:52 verbose #29293 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:52 verbose #29294 > > //// test 00:19:52 verbose #29295 > > 00:19:52 verbose #29296 > > "." 00:19:52 verbose #29297 > > |> get_full_path 00:19:52 verbose #29298 > > |> directory_info 00:19:52 verbose #29299 > > |> directory_info_name 00:19:52 verbose #29300 > > |> _assert_eq "spiral" 00:19:52 verbose #29301 > > 00:19:52 verbose #29302 > > ╭─[ 355.58ms - stdout ]────────────────────────────────────────────────────────╮ 00:19:52 verbose #29303 > > │ __assert_eq / actual: "spiral" / expected: "spiral" │ 00:19:52 verbose #29304 > > │ │ 00:19:52 verbose #29305 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:52 verbose #29306 > > 00:19:52 verbose #29307 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:52 verbose #29308 > > //// test 00:19:52 verbose #29309 > > 00:19:52 verbose #29310 > > "dir/.././._file" 00:19:52 verbose #29311 > > |> get_full_path 00:19:52 verbose #29312 > > |> _assert_eq (get_current_directory () </> "._file") 00:19:53 verbose #29313 > > 00:19:53 verbose #29314 > > ╭─[ 235.22ms - stdout ]────────────────────────────────────────────────────────╮ 00:19:53 verbose #29315 > > │ __assert_eq / actual: │ 00:19:53 verbose #29316 > > │ "/home/runner/work/polyglot/polyglot/lib/spiral/._file" / expected: │ 00:19:53 verbose #29317 > > │ "/home/runner/work/polyglot/polyglot/lib/spiral/._file" │ 00:19:53 verbose #29318 > > │ │ 00:19:53 verbose #29319 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:19:53 verbose #29320 > > 00:19:53 verbose #29321 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:53 verbose #29322 > > //// test 00:19:53 verbose #29323 > > ///! rust -d regex 00:19:53 verbose #29324 > > 00:19:53 verbose #29325 > > "." 00:19:53 verbose #29326 > > |> get_full_path 00:19:53 verbose #29327 > > |> sm'.to_std_string 00:19:53 verbose #29328 > > |> new_path_buf 00:19:53 verbose #29329 > > |> path_buf_file_name 00:19:53 verbose #29330 > > |> optionm'.unwrap 00:19:53 verbose #29331 > > |> sm'.from_os_str_ref 00:19:53 verbose #29332 > > |> _assert_eq "spiral" 00:20:01 verbose #29333 > > 00:20:01 verbose #29334 > > ╭─[ 7.98s - return value ]─────────────────────────────────────────────────────╮ 00:20:01 verbose #29335 > > │ __assert_eq / actual: "spiral" / expected: "spiral" │ 00:20:01 verbose #29336 > > │ │ 00:20:01 verbose #29337 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:01 verbose #29338 > > 00:20:01 verbose #29339 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:01 verbose #29340 > > //// test 00:20:01 verbose #29341 > > ///! rust -d regex 00:20:01 verbose #29342 > > 00:20:01 verbose #29343 > > "dir/.././._file" 00:20:01 verbose #29344 > > |> get_full_path 00:20:01 verbose #29345 > > |> _assert_eq (get_current_directory () </> "._file") 00:20:08 verbose #29346 > > 00:20:08 verbose #29347 > > ╭─[ 7.61s - return value ]─────────────────────────────────────────────────────╮ 00:20:08 verbose #29348 > > │ __assert_eq / actual: │ 00:20:08 verbose #29349 > > │ "/home/runner/work/polyglot/polyglot/lib/spiral/._file" / expected: │ 00:20:08 verbose #29350 > > │ "/home/runner/work/polyglot/polyglot/lib/spiral/._file" │ 00:20:08 verbose #29351 > > │ │ 00:20:08 verbose #29352 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:08 verbose #29353 > > 00:20:08 verbose #29354 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:08 verbose #29355 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:08 verbose #29356 > > │ ### create_temp_path' │ 00:20:08 verbose #29357 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:08 verbose #29358 > > 00:20:08 verbose #29359 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:08 verbose #29360 > > let create_temp_path' (guid : guid.guid) = 00:20:08 verbose #29361 > > run_target function 00:20:08 verbose #29362 > > | Rust (Contract) => fun () => null () 00:20:08 verbose #29363 > > | _ => fun () => 00:20:08 verbose #29364 > > get_temp_path () 00:20:08 verbose #29365 > > </> (join "!create_temp_path_") 00:20:08 verbose #29366 > > </> (env.get_entry_assembly_name ()) 00:20:08 verbose #29367 > > </> (guid |> sm'.obj_to_string) 00:20:08 verbose #29368 > > 00:20:08 verbose #29369 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:08 verbose #29370 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:08 verbose #29371 > > │ ### create_temp_path │ 00:20:08 verbose #29372 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:08 verbose #29373 > > 00:20:08 verbose #29374 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:08 verbose #29375 > > let create_temp_path () = 00:20:08 verbose #29376 > > run_target function 00:20:08 verbose #29377 > > | Rust (Contract) => fun () => null () 00:20:08 verbose #29378 > > | _ => fun () => 00:20:08 verbose #29379 > > date_time.now () 00:20:08 verbose #29380 > > |> date_time.new_guid_from_date_time 00:20:08 verbose #29381 > > |> create_temp_path' 00:20:08 verbose #29382 > > 00:20:08 verbose #29383 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:08 verbose #29384 > > //// test 00:20:08 verbose #29385 > > ///! fsharp 00:20:08 verbose #29386 > > ///! rust -d chrono 00:20:08 verbose #29387 > > 00:20:08 verbose #29388 > > create_temp_path () 00:20:08 verbose #29389 > > |> _assert_contains (directory_separator_char ()) 00:20:16 verbose #29390 > > 00:20:16 verbose #29391 > > ╭─[ 8.01s - return value ]─────────────────────────────────────────────────────╮ 00:20:16 verbose #29392 > > │ .rs output (rust -d chrono): │ 00:20:16 verbose #29393 > > │ __assert_contains / actual: │ 00:20:16 verbose #29394 > > │ "/tmp/!create_temp_path_/spiral_builder_283d6cdc19e521971f64a774311f04e4b9f7 │ 00:20:16 verbose #29395 > > │ 262beea335634a50e16ace236d25/20240906-1503-5101-8162-00000095c71a" / │ 00:20:16 verbose #29396 > > │ expected: '/' │ 00:20:16 verbose #29397 > > │ │ 00:20:16 verbose #29398 > > │ │ 00:20:16 verbose #29399 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:16 verbose #29400 > > 00:20:16 verbose #29401 > > ╭─[ 8.01s - stdout ]───────────────────────────────────────────────────────────╮ 00:20:16 verbose #29402 > > │ .fsx output: │ 00:20:16 verbose #29403 > > │ __assert_contains / actual: │ 00:20:16 verbose #29404 > > │ "/tmp/!create_temp_path_/dotnet-repl/20240906-1503-5127-2701-20000025e003" / │ 00:20:16 verbose #29405 > > │ expected: '/' │ 00:20:16 verbose #29406 > > │ │ 00:20:16 verbose #29407 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:16 verbose #29408 > > 00:20:16 verbose #29409 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:16 verbose #29410 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:16 verbose #29411 > > │ ### directory_exists │ 00:20:16 verbose #29412 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:16 verbose #29413 > > 00:20:16 verbose #29414 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:16 verbose #29415 > > let directory_exists (path : string) : bool = 00:20:16 verbose #29416 > > run_target function 00:20:16 verbose #29417 > > | Fsharp (Native) => fun () => 00:20:16 verbose #29418 > > path |> $'System.IO.Directory.Exists' 00:20:16 verbose #29419 > > | Rust (Native) => fun () => 00:20:16 verbose #29420 > > inl path = path |> sm'.to_std_string |> new_path_buf 00:20:16 verbose #29421 > > path_buf_exists path || path_buf_is_dir path || path_buf_is_symlink 00:20:16 verbose #29422 > > path 00:20:16 verbose #29423 > > | TypeScript (Native) => fun () => 00:20:16 verbose #29424 > > global "type IFsExistsSync = abstract existsSync: path: string -> 00:20:16 verbose #29425 > > bool" 00:20:16 verbose #29426 > > open typescript_operators 00:20:16 verbose #29427 > > inl fs : $'IFsExistsSync' = typescript.import_all "fs" 00:20:16 verbose #29428 > > !\\((fs, path), $'"$0.existsSync($1)"') 00:20:16 verbose #29429 > > | _ => fun () => null () 00:20:16 verbose #29430 > > 00:20:16 verbose #29431 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:16 verbose #29432 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:16 verbose #29433 > > │ ### directory_get_parent │ 00:20:16 verbose #29434 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:16 verbose #29435 > > 00:20:16 verbose #29436 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:16 verbose #29437 > > let directory_get_parent (path : string) : optionm'.option' string = 00:20:16 verbose #29438 > > run_target function 00:20:16 verbose #29439 > > | Fsharp (Native) => fun () => 00:20:16 verbose #29440 > > inl parent : directory_info = path |> 00:20:16 verbose #29441 > > $'System.IO.Directory.GetParent' 00:20:16 verbose #29442 > > if parent =. null () 00:20:16 verbose #29443 > > then None 00:20:16 verbose #29444 > > else parent |> directory_info_full_name |> Some 00:20:16 verbose #29445 > > | Rust (Native) => fun () => 00:20:16 verbose #29446 > > path 00:20:16 verbose #29447 > > |> sm'.to_std_string 00:20:16 verbose #29448 > > |> new_path_buf 00:20:16 verbose #29449 > > |> path_buf_parent 00:20:16 verbose #29450 > > |> optionm'.try' 00:20:16 verbose #29451 > > |> path_buf_display 00:20:16 verbose #29452 > > |> sm'.format' 00:20:16 verbose #29453 > > |> sm'.from_std_string 00:20:16 verbose #29454 > > |> Some 00:20:16 verbose #29455 > > | TypeScript _ => fun () => 00:20:16 verbose #29456 > > open typescript_operators 00:20:16 verbose #29457 > > global "type IPathDirname = abstract dirname: path: string -> 00:20:16 verbose #29458 > > string" 00:20:16 verbose #29459 > > inl fs : $'IPathDirname' = typescript.import_all "path" 00:20:16 verbose #29460 > > !\\(path, $'"!fs.dirname($0)"') |> Some 00:20:16 verbose #29461 > > | _ => fun () => null () 00:20:16 verbose #29462 > > |> optionm'.box 00:20:17 verbose #29463 > > 00:20:17 verbose #29464 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:17 verbose #29465 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:17 verbose #29466 > > │ ### file_copy │ 00:20:17 verbose #29467 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:17 verbose #29468 > > 00:20:17 verbose #29469 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:17 verbose #29470 > > let file_copy (new_path : string) (old_path : string) : () = 00:20:17 verbose #29471 > > run_target function 00:20:17 verbose #29472 > > | Fsharp (Native) => fun () => 00:20:17 verbose #29473 > > $'System.IO.File.Copy (!old_path, !new_path, true)' 00:20:17 verbose #29474 > > | Rust (Native) => fun () => 00:20:17 verbose #29475 > > inl new_path = join new_path 00:20:17 verbose #29476 > > !\\(old_path, $'"std::fs::copy(&*$0, &*!new_path)"') 00:20:17 verbose #29477 > > |> fun x => x : _ u64 stream.io_error 00:20:17 verbose #29478 > > |> resultm.unwrap' 00:20:17 verbose #29479 > > |> ignore 00:20:17 verbose #29480 > > | _ => fun () => () 00:20:17 verbose #29481 > > 00:20:17 verbose #29482 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:17 verbose #29483 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:17 verbose #29484 > > │ ### file_exists │ 00:20:17 verbose #29485 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:17 verbose #29486 > > 00:20:17 verbose #29487 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:17 verbose #29488 > > let file_exists (path : string) : bool = 00:20:17 verbose #29489 > > run_target function 00:20:17 verbose #29490 > > | Fsharp (Native) => fun () => 00:20:17 verbose #29491 > > path |> $'System.IO.File.Exists' 00:20:17 verbose #29492 > > | Rust (Native) => fun () => 00:20:17 verbose #29493 > > inl path_buf = path |> sm'.to_std_string |> new_path_buf 00:20:17 verbose #29494 > > path_buf_exists path_buf && path_buf_is_file path_buf 00:20:17 verbose #29495 > > | TypeScript (Native) => fun () => 00:20:17 verbose #29496 > > open typescript_operators 00:20:17 verbose #29497 > > global "type IFsExistsSync = abstract existsSync: path: string -> 00:20:17 verbose #29498 > > bool" 00:20:17 verbose #29499 > > inl fs : $'IFsExistsSync' = typescript.import_all "fs" 00:20:17 verbose #29500 > > !\\((fs, path), $'"$0.existsSync($1)"') 00:20:17 verbose #29501 > > | _ => fun () => null () 00:20:17 verbose #29502 > > 00:20:17 verbose #29503 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:17 verbose #29504 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:17 verbose #29505 > > │ ### directory_delete │ 00:20:17 verbose #29506 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:17 verbose #29507 > > 00:20:17 verbose #29508 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:17 verbose #29509 > > let directory_delete recursive (path : string) : () = 00:20:17 verbose #29510 > > run_target function 00:20:17 verbose #29511 > > | Fsharp (Native) => fun () => 00:20:17 verbose #29512 > > $'System.IO.Directory.Delete (!path, !recursive)' 00:20:17 verbose #29513 > > | Rust (Native) => fun () => 00:20:17 verbose #29514 > > inl path = join path 00:20:17 verbose #29515 > > if path |> directory_exists then 00:20:17 verbose #29516 > > if recursive 00:20:17 verbose #29517 > > then !\\(path, $'"std::fs::remove_dir_all(&*$0).unwrap()"') 00:20:17 verbose #29518 > > else !\\(path, $'"std::fs::remove_dir(&*$0).unwrap()"') 00:20:17 verbose #29519 > > | _ => fun () => () 00:20:17 verbose #29520 > > 00:20:17 verbose #29521 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:17 verbose #29522 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:17 verbose #29523 > > │ ### write_all_text │ 00:20:17 verbose #29524 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:17 verbose #29525 > > 00:20:17 verbose #29526 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:17 verbose #29527 > > inl write_all_text (path : string) (text : string) : () = 00:20:17 verbose #29528 > > run_target function 00:20:17 verbose #29529 > > | Fsharp (Native) => fun () => 00:20:17 verbose #29530 > > inl text = join text 00:20:17 verbose #29531 > > $'System.IO.File.WriteAllText (!path, !text)' 00:20:17 verbose #29532 > > | Rust (Native) => fun () => 00:20:17 verbose #29533 > > !\\((path, text), $'"std::fs::write(&*$0, &*$1).unwrap()"') 00:20:17 verbose #29534 > > | _ => fun () => () 00:20:17 verbose #29535 > > 00:20:17 verbose #29536 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:17 verbose #29537 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:17 verbose #29538 > > │ ### read_all_bytes │ 00:20:17 verbose #29539 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:17 verbose #29540 > > 00:20:17 verbose #29541 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:17 verbose #29542 > > inl read_all_bytes (path : string) : am'.vec u8 = 00:20:17 verbose #29543 > > run_target function 00:20:17 verbose #29544 > > | Fsharp (Native) => fun () => 00:20:17 verbose #29545 > > $'!path |> System.IO.File.ReadAllBytes' 00:20:17 verbose #29546 > > |> am'.to_vec 00:20:17 verbose #29547 > > | Rust (Native) => fun () => 00:20:17 verbose #29548 > > path |> read |> resultm.unwrap' 00:20:17 verbose #29549 > > | _ => fun () => null () 00:20:17 verbose #29550 > > 00:20:17 verbose #29551 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:17 verbose #29552 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:17 verbose #29553 > > │ ### read_all_text │ 00:20:17 verbose #29554 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:17 verbose #29555 > > 00:20:17 verbose #29556 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:17 verbose #29557 > > inl read_all_text (path : string) : string = 00:20:17 verbose #29558 > > run_target function 00:20:17 verbose #29559 > > | Fsharp (Native) => fun () => 00:20:17 verbose #29560 > > $'!path |> System.IO.File.ReadAllText' 00:20:17 verbose #29561 > > | Rust (Native) => fun () => 00:20:17 verbose #29562 > > path 00:20:17 verbose #29563 > > |> read_all_bytes 00:20:17 verbose #29564 > > |> sm'.string_from_utf8 00:20:17 verbose #29565 > > |> resultm.unwrap' 00:20:17 verbose #29566 > > |> sm'.from_std_string 00:20:17 verbose #29567 > > | _ => fun () => null () 00:20:17 verbose #29568 > > 00:20:17 verbose #29569 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:17 verbose #29570 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:17 verbose #29571 > > │ ### directory_create_symbolic_link │ 00:20:17 verbose #29572 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:17 verbose #29573 > > 00:20:17 verbose #29574 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:17 verbose #29575 > > inl directory_create_symbolic_link (target : string) (path : string) : () = 00:20:17 verbose #29576 > > run_target function 00:20:17 verbose #29577 > > | Fsharp (Native) => fun () => 00:20:17 verbose #29578 > > ($'System.IO.Directory.CreateSymbolicLink (!path, !target)' : 00:20:17 verbose #29579 > > file_system_info) 00:20:17 verbose #29580 > > |> ignore 00:20:17 verbose #29581 > > | Rust (Native) => fun () => 00:20:17 verbose #29582 > > platform.run_platform function 00:20:17 verbose #29583 > > | Windows => fun () => !\\((target, path), 00:20:17 verbose #29584 > > $'"std::os::windows::fs::symlink_dir(&*$0, &*$1).unwrap()"') 00:20:17 verbose #29585 > > | _ => fun () => !\\((target, path), 00:20:17 verbose #29586 > > $'"std::os::unix::fs::symlink(&*$0, &*$1).unwrap()"') 00:20:17 verbose #29587 > > | _ => fun () => () 00:20:17 verbose #29588 > > 00:20:17 verbose #29589 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:17 verbose #29590 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:17 verbose #29591 > > │ ### find_parent │ 00:20:17 verbose #29592 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:17 verbose #29593 > > 00:20:17 verbose #29594 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:17 verbose #29595 > > inl find_parent name is_file root_dir = 00:20:17 verbose #29596 > > let rec loop dir = 00:20:17 verbose #29597 > > if dir </> name |> (if is_file then file_exists else directory_exists) 00:20:17 verbose #29598 > > then dir |> Ok 00:20:17 verbose #29599 > > else 00:20:17 verbose #29600 > > inl result = dir |> (join directory_get_parent) 00:20:17 verbose #29601 > > match result |> optionm'.unbox with 00:20:17 verbose #29602 > > | Some parent => parent |> loop 00:20:17 verbose #29603 > > | None => ($'$"""No parent for {if !is_file then "file" else "dir"} 00:20:17 verbose #29604 > > \'{!name}\' at \'{!root_dir}\' (until \'{!dir}\')"""' : string) |> Error 00:20:17 verbose #29605 > > loop root_dir 00:20:17 verbose #29606 > > 00:20:17 verbose #29607 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:17 verbose #29608 > > //// test 00:20:17 verbose #29609 > > 00:20:17 verbose #29610 > > a ;[[ ".paket", false; "paket.dependencies", true ]] 00:20:17 verbose #29611 > > |> am.map fun (file, is_file) => 00:20:17 verbose #29612 > > get_source_directory () 00:20:17 verbose #29613 > > |> find_parent file is_file 00:20:17 verbose #29614 > > |> resultm.get 00:20:17 verbose #29615 > > |> directory_info 00:20:17 verbose #29616 > > |> directory_info_name 00:20:17 verbose #29617 > > |> am'.distinct 00:20:17 verbose #29618 > > |> fun (a x : _ int _) => x 00:20:17 verbose #29619 > > |> _assert_eq' ;[[ "polyglot" ]] 00:20:18 verbose #29620 > > 00:20:18 verbose #29621 > > ╭─[ 298.49ms - stdout ]────────────────────────────────────────────────────────╮ 00:20:18 verbose #29622 > > │ __assert_eq' / actual: [|"polyglot"|] / expected: [|"polyglot"|] │ 00:20:18 verbose #29623 > > │ │ 00:20:18 verbose #29624 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:18 verbose #29625 > > 00:20:18 verbose #29626 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:18 verbose #29627 > > //// test 00:20:18 verbose #29628 > > ///! rust 00:20:18 verbose #29629 > > 00:20:18 verbose #29630 > > a ;[[ ".paket", false; "paket.dependencies", true ]] 00:20:18 verbose #29631 > > |> am.map fun (file, is_file) => 00:20:18 verbose #29632 > > fun () => 00:20:18 verbose #29633 > > join 00:20:18 verbose #29634 > > get_source_directory () 00:20:18 verbose #29635 > > |> find_parent file is_file 00:20:18 verbose #29636 > > |> resultm.get 00:20:18 verbose #29637 > > |> sm'.to_std_string 00:20:18 verbose #29638 > > |> new_path_buf 00:20:18 verbose #29639 > > |> path_buf_file_name 00:20:18 verbose #29640 > > |> optionm'.try' 00:20:18 verbose #29641 > > |> sm'.from_os_str_ref 00:20:18 verbose #29642 > > |> Some 00:20:18 verbose #29643 > > |> optionm'.box 00:20:18 verbose #29644 > > |> fun x => x () |> optionm'.unbox 00:20:18 verbose #29645 > > |> optionm'.default_value "" 00:20:18 verbose #29646 > > |> am'.distinct 00:20:18 verbose #29647 > > |> fun result => 00:20:18 verbose #29648 > > result |> am'.length |> _assert_eq 1i32 00:20:18 verbose #29649 > > index result 0i32 |> _assert_eq "polyglot" 00:20:25 verbose #29650 > > 00:20:25 verbose #29651 > > ╭─[ 7.80s - return value ]─────────────────────────────────────────────────────╮ 00:20:25 verbose #29652 > > │ __assert_eq / actual: 1 / expected: 1 │ 00:20:25 verbose #29653 > > │ __assert_eq / actual: "polyglot" / expected: "polyglot" │ 00:20:25 verbose #29654 > > │ │ 00:20:25 verbose #29655 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:25 verbose #29656 > > 00:20:25 verbose #29657 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:25 verbose #29658 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:25 verbose #29659 > > │ ### get_workspace_root │ 00:20:25 verbose #29660 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:25 verbose #29661 > > 00:20:25 verbose #29662 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:25 verbose #29663 > > inl get_workspace_root () = 00:20:25 verbose #29664 > > (None, [[ get_source_directory; get_current_directory ]]) 00:20:25 verbose #29665 > > ||> listm.fold fun acc path => 00:20:25 verbose #29666 > > match acc with 00:20:25 verbose #29667 > > | Some path => Some path 00:20:25 verbose #29668 > > | None => 00:20:25 verbose #29669 > > path () 00:20:25 verbose #29670 > > |> find_parent ("polyglot" </> ".devcontainer") false 00:20:25 verbose #29671 > > |> function 00:20:25 verbose #29672 > > | Ok path => Some path 00:20:25 verbose #29673 > > | Error error => 00:20:25 verbose #29674 > > trace Warning 00:20:25 verbose #29675 > > fun () => "file_system.get_workspace_root" 00:20:25 verbose #29676 > > fun () => { error } 00:20:25 verbose #29677 > > None 00:20:25 verbose #29678 > > |> optionm.value 00:20:25 verbose #29679 > > |> fun root => root </> "polyglot" 00:20:26 verbose #29680 > > 00:20:26 verbose #29681 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:26 verbose #29682 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:26 verbose #29683 > > │ ### get_workspace_root_external │ 00:20:26 verbose #29684 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:26 verbose #29685 > > 00:20:26 verbose #29686 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:26 verbose #29687 > > inl get_workspace_root_external () = 00:20:26 verbose #29688 > > inl workspace_root = get_workspace_root () 00:20:26 verbose #29689 > > inl current_dir = get_current_directory () |> sm'.to_lower 00:20:26 verbose #29690 > > inl workspace_root = workspace_root |> sm'.to_lower 00:20:26 verbose #29691 > > if current_dir |> sm'.starts_with workspace_root 00:20:26 verbose #29692 > > then Error workspace_root 00:20:26 verbose #29693 > > else Ok workspace_root 00:20:26 verbose #29694 > > 00:20:26 verbose #29695 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:26 verbose #29696 > > //// test 00:20:26 verbose #29697 > > 00:20:26 verbose #29698 > > get_workspace_root_external () 00:20:26 verbose #29699 > > |> resultm.unwrap_err 00:20:26 verbose #29700 > > |> get_file_name 00:20:26 verbose #29701 > > |> _assert_eq "polyglot" 00:20:26 verbose #29702 > > 00:20:26 verbose #29703 > > ╭─[ 441.30ms - stdout ]────────────────────────────────────────────────────────╮ 00:20:26 verbose #29704 > > │ __assert_eq / actual: "polyglot" / expected: "polyglot" │ 00:20:26 verbose #29705 > > │ │ 00:20:26 verbose #29706 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:26 verbose #29707 > > 00:20:26 verbose #29708 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:26 verbose #29709 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:26 verbose #29710 > > │ ### standardize_path │ 00:20:26 verbose #29711 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:26 verbose #29712 > > 00:20:26 verbose #29713 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:26 verbose #29714 > > let standardize_path path = 00:20:26 verbose #29715 > > path |> get_full_path |> normalize_path 00:20:26 verbose #29716 > > 00:20:26 verbose #29717 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:26 verbose #29718 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:26 verbose #29719 > > │ ### absolute_path │ 00:20:26 verbose #29720 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:26 verbose #29721 > > 00:20:26 verbose #29722 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:26 verbose #29723 > > let absolute_path path = 00:20:26 verbose #29724 > > inl current_dir = get_current_directory () 00:20:26 verbose #29725 > > current_dir </> path |> standardize_path 00:20:26 verbose #29726 > > 00:20:26 verbose #29727 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:26 verbose #29728 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:26 verbose #29729 > > │ ### new_file_uri │ 00:20:26 verbose #29730 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:26 verbose #29731 > > 00:20:26 verbose #29732 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:26 verbose #29733 > > inl new_file_uri (path : string) : string = 00:20:26 verbose #29734 > > inl path = path |> sm'.trim_start [[ '/' ]] 00:20:26 verbose #29735 > > $'$"file:///{!path}"' 00:20:26 verbose #29736 > > 00:20:26 verbose #29737 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:26 verbose #29738 > > //// test 00:20:26 verbose #29739 > > 00:20:26 verbose #29740 > > @"\\?\C:\test" 00:20:26 verbose #29741 > > |> normalize_path 00:20:26 verbose #29742 > > |> new_file_uri 00:20:26 verbose #29743 > > |> _assert_eq "file:///c:/test" 00:20:27 verbose #29744 > > 00:20:27 verbose #29745 > > ╭─[ 121.43ms - stdout ]────────────────────────────────────────────────────────╮ 00:20:27 verbose #29746 > > │ __assert_eq / actual: "file:///c:/test" / expected: "file:///c:/test" │ 00:20:27 verbose #29747 > > │ │ 00:20:27 verbose #29748 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:27 verbose #29749 > > 00:20:27 verbose #29750 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:27 verbose #29751 > > //// test 00:20:27 verbose #29752 > > ///! rust -d regex 00:20:27 verbose #29753 > > 00:20:27 verbose #29754 > > @"\\?\C:\test" 00:20:27 verbose #29755 > > |> normalize_path 00:20:27 verbose #29756 > > |> new_file_uri 00:20:27 verbose #29757 > > |> _assert_eq "file:///c:/test" 00:20:34 verbose #29758 > > 00:20:34 verbose #29759 > > ╭─[ 7.05s - return value ]─────────────────────────────────────────────────────╮ 00:20:34 verbose #29760 > > │ __assert_eq / actual: "file:///c:/test" / expected: "file:///c:/test" │ 00:20:34 verbose #29761 > > │ │ 00:20:34 verbose #29762 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:34 verbose #29763 > > 00:20:34 verbose #29764 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:34 verbose #29765 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:34 verbose #29766 > > │ ### file_delete │ 00:20:34 verbose #29767 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:34 verbose #29768 > > 00:20:34 verbose #29769 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:34 verbose #29770 > > inl file_delete (path : string) : () = 00:20:34 verbose #29771 > > run_target function 00:20:34 verbose #29772 > > | Fsharp (Native) => fun () => 00:20:34 verbose #29773 > > path |> $'System.IO.File.Delete' 00:20:34 verbose #29774 > > | Rust (Native) => fun () => 00:20:34 verbose #29775 > > !\\(path, $'"std::fs::remove_file(&*$0).unwrap()"') 00:20:34 verbose #29776 > > | _ => fun () => () 00:20:34 verbose #29777 > > 00:20:34 verbose #29778 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:34 verbose #29779 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:34 verbose #29780 > > │ ## fsharp │ 00:20:34 verbose #29781 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:34 verbose #29782 > > 00:20:34 verbose #29783 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:34 verbose #29784 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:34 verbose #29785 > > │ ### file_exists_content_async │ 00:20:34 verbose #29786 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:34 verbose #29787 > > 00:20:34 verbose #29788 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:34 verbose #29789 > > inl file_exists_content_async path content : async.async bool = 00:20:34 verbose #29790 > > run_target function 00:20:34 verbose #29791 > > | Fsharp (Native) => fun () => 00:20:34 verbose #29792 > > fun () => 00:20:34 verbose #29793 > > fix_condition 00:20:34 verbose #29794 > > fun () => path |> file_exists |> not 00:20:34 verbose #29795 > > fun () => false |> return 00:20:34 verbose #29796 > > fun () => 00:20:34 verbose #29797 > > inl existing_content = path |> read_all_text_async |> 00:20:34 verbose #29798 > > async.let' 00:20:34 verbose #29799 > > content = existing_content |> return 00:20:34 verbose #29800 > > |> async.new_async_unit 00:20:34 verbose #29801 > > | _ => fun () => null () 00:20:34 verbose #29802 > > 00:20:34 verbose #29803 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:34 verbose #29804 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:34 verbose #29805 > > │ ### write_all_text_exists_async │ 00:20:34 verbose #29806 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:34 verbose #29807 > > 00:20:34 verbose #29808 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:34 verbose #29809 > > inl write_all_text_exists_async path contents = 00:20:34 verbose #29810 > > fun () => 00:20:34 verbose #29811 > > inl exists' = contents |> file_exists_content_async path |> async.let' 00:20:34 verbose #29812 > > if not exists' 00:20:34 verbose #29813 > > then contents |> write_all_text_async path |> async.do 00:20:34 verbose #29814 > > |> async.new_async 00:20:34 verbose #29815 > > 00:20:34 verbose #29816 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:34 verbose #29817 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:34 verbose #29818 > > │ ### delete_directory_async │ 00:20:34 verbose #29819 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:34 verbose #29820 > > 00:20:34 verbose #29821 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:34 verbose #29822 > > inl delete_directory_async path : _ i64 = 00:20:34 verbose #29823 > > run_target function 00:20:34 verbose #29824 > > | Fsharp (Native) => fun () => 00:20:34 verbose #29825 > > let rec loop (retry : i64) = 00:20:34 verbose #29826 > > fun () => 00:20:34 verbose #29827 > > try_unit 00:20:34 verbose #29828 > > fun () => 00:20:34 verbose #29829 > > path |> directory_delete true 00:20:34 verbose #29830 > > retry |> return 00:20:34 verbose #29831 > > fun ex => 00:20:34 verbose #29832 > > if retry % 100i64 = 0 then 00:20:34 verbose #29833 > > inl ex = ex |> sm'.format_exception 00:20:34 verbose #29834 > > trace Debug 00:20:34 verbose #29835 > > fun () => 00:20:34 verbose #29836 > > "file_system.delete_directory_async" 00:20:34 verbose #29837 > > fun () => { ex path = path |> get_file_name 00:20:34 verbose #29838 > > } 00:20:34 verbose #29839 > > async.sleep 10i32 |> async.do 00:20:34 verbose #29840 > > loop (retry + 1) |> async.return_await 00:20:34 verbose #29841 > > |> async.new_async 00:20:34 verbose #29842 > > loop 0 00:20:34 verbose #29843 > > | _ => fun () => null () 00:20:34 verbose #29844 > > 00:20:34 verbose #29845 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:34 verbose #29846 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:34 verbose #29847 > > │ ### trace_file │ 00:20:34 verbose #29848 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:34 verbose #29849 > > 00:20:34 verbose #29850 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:34 verbose #29851 > > let rec trace_file text = 00:20:34 verbose #29852 > > run_target function 00:20:34 verbose #29853 > > | Fsharp (Native) => fun () => 00:20:34 verbose #29854 > > try_unit 00:20:34 verbose #29855 > > fun () => 00:20:34 verbose #29856 > > inl assembly_name = env.get_entry_assembly_name () 00:20:34 verbose #29857 > > inl guid = date_time.now () |> date_time.new_guid_from_date_time 00:20:34 verbose #29858 > > inl file_name = $'$"{!assembly_name}_{!guid}.txt"' 00:20:34 verbose #29859 > > 00:20:34 verbose #29860 > > inl workspace_root = get_workspace_root () 00:20:34 verbose #29861 > > inl trace_dir = workspace_root </> "target/trace" 00:20:34 verbose #29862 > > trace_dir |> create_directory |> ignore 00:20:34 verbose #29863 > > inl path = trace_dir </> file_name 00:20:34 verbose #29864 > > text |> write_all_text_async path |> async.run_synchronously 00:20:34 verbose #29865 > > fun ex => 00:20:34 verbose #29866 > > trace_file $'$"file_system.trace_file / ex: %A{!ex}"' 00:20:34 verbose #29867 > > | _ => fun () => () 00:20:35 verbose #29868 > > 00:20:35 verbose #29869 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:35 verbose #29870 > > //// test 00:20:35 verbose #29871 > > 00:20:35 verbose #29872 > > inl get_count dir : i64 = 00:20:35 verbose #29873 > > inl files = dir |> directory_get_files 00:20:35 verbose #29874 > > a files |> am'.length 00:20:35 verbose #29875 > > 00:20:35 verbose #29876 > > inl trace_dir = get_workspace_root () </> "target/trace" 00:20:35 verbose #29877 > > trace_dir |> create_directory |> ignore 00:20:35 verbose #29878 > > 00:20:35 verbose #29879 > > inl count = get_count trace_dir 00:20:35 verbose #29880 > > 00:20:35 verbose #29881 > > trace_file "test" 00:20:35 verbose #29882 > > 00:20:35 verbose #29883 > > get_count trace_dir 00:20:35 verbose #29884 > > |> _assert_eq (count + 1) 00:20:35 verbose #29885 > > 00:20:35 verbose #29886 > > ╭─[ 681.27ms - stdout ]────────────────────────────────────────────────────────╮ 00:20:35 verbose #29887 > > │ __assert_eq / actual: 1L / expected: 1L │ 00:20:35 verbose #29888 > > │ │ 00:20:35 verbose #29889 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:35 verbose #29890 > > 00:20:35 verbose #29891 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:35 verbose #29892 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:35 verbose #29893 > > │ ### init_trace_file │ 00:20:35 verbose #29894 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:35 verbose #29895 > > 00:20:35 verbose #29896 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:35 verbose #29897 > > inl init_trace_file enabled = 00:20:35 verbose #29898 > > inl state_trace_file = get_trace_state_or_init None .trace_file 00:20:35 verbose #29899 > > state_trace_file <- if enabled then trace_file else ignore 00:20:36 verbose #29900 > > 00:20:36 verbose #29901 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:36 verbose #29902 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:36 verbose #29903 > > │ ## file_system │ 00:20:36 verbose #29904 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:36 verbose #29905 > > 00:20:36 verbose #29906 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:36 verbose #29907 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:36 verbose #29908 > > │ ### create_dir │ 00:20:36 verbose #29909 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:36 verbose #29910 > > 00:20:36 verbose #29911 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:36 verbose #29912 > > let create_dir dir = 00:20:36 verbose #29913 > > run_target function 00:20:36 verbose #29914 > > | Rust (Contract | Wasm) => fun () => null () 00:20:36 verbose #29915 > > | Rust (Native) => fun () => 00:20:36 verbose #29916 > > inl dir = join dir 00:20:36 verbose #29917 > > match dir |> create_dir_all |> resultm.map_error' sm'.format' |> 00:20:36 verbose #29918 > > resultm.unbox with 00:20:36 verbose #29919 > > | Ok () => 00:20:36 verbose #29920 > > trace Verbose 00:20:36 verbose #29921 > > fun () => "file_system.create_dir" 00:20:36 verbose #29922 > > fun () => { dir } 00:20:36 verbose #29923 > > | Error error => 00:20:36 verbose #29924 > > trace Critical 00:20:36 verbose #29925 > > fun () => "file_system.create_dir" 00:20:36 verbose #29926 > > fun () => { dir error } 00:20:36 verbose #29927 > > inl disposable : _ () = new_disposable fun () => 00:20:36 verbose #29928 > > dir 00:20:36 verbose #29929 > > |> directory_delete true 00:20:36 verbose #29930 > > disposable 00:20:36 verbose #29931 > > | _ => fun () => 00:20:36 verbose #29932 > > inl directory_info = dir |> create_directory 00:20:36 verbose #29933 > > inl exists' = directory_info |> directory_info_exists 00:20:36 verbose #29934 > > if not exists' then 00:20:36 verbose #29935 > > inl creation_time = directory_info |> 00:20:36 verbose #29936 > > directory_info_creation_time 00:20:36 verbose #29937 > > inl result = ($'{| Exists = !exists'; CreationTime = 00:20:36 verbose #29938 > > !creation_time |}' : any) |> sm'.format_debug 00:20:36 verbose #29939 > > trace Debug 00:20:36 verbose #29940 > > fun () => "file_system.create_dir" 00:20:36 verbose #29941 > > fun () => { dir result } 00:20:36 verbose #29942 > > inl disposable : _ () = new_disposable fun () => 00:20:36 verbose #29943 > > dir 00:20:36 verbose #29944 > > |> delete_directory_async 00:20:36 verbose #29945 > > |> async.ignore 00:20:36 verbose #29946 > > |> async.run_synchronously 00:20:36 verbose #29947 > > disposable 00:20:36 verbose #29948 > > 00:20:36 verbose #29949 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:36 verbose #29950 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:36 verbose #29951 > > │ ### create_temp_dir │ 00:20:36 verbose #29952 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:36 verbose #29953 > > 00:20:36 verbose #29954 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:36 verbose #29955 > > inl create_temp_dir () = 00:20:36 verbose #29956 > > inl dir = create_temp_path () 00:20:36 verbose #29957 > > dir, dir |> create_dir 00:20:36 verbose #29958 > > 00:20:36 verbose #29959 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:36 verbose #29960 > > //// test 00:20:36 verbose #29961 > > 00:20:36 verbose #29962 > > inl path, disposable = create_temp_dir () 00:20:36 verbose #29963 > > disposable |> use |> ignore 00:20:36 verbose #29964 > > path 00:20:36 verbose #29965 > > |> directory_exists 00:20:36 verbose #29966 > > |> _assert_eq true 00:20:37 verbose #29967 > > 00:20:37 verbose #29968 > > ╭─[ 1.07s - stdout ]───────────────────────────────────────────────────────────╮ 00:20:37 verbose #29969 > > │ __assert_eq / actual: true / expected: true │ 00:20:37 verbose #29970 > > │ │ 00:20:37 verbose #29971 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:37 verbose #29972 > > 00:20:37 verbose #29973 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:37 verbose #29974 > > //// test 00:20:37 verbose #29975 > > ///! rust -d chrono 00:20:37 verbose #29976 > > 00:20:37 verbose #29977 > > inl path, disposable = create_temp_dir () 00:20:37 verbose #29978 > > path 00:20:37 verbose #29979 > > |> directory_exists 00:20:37 verbose #29980 > > |> _assert_eq true 00:20:37 verbose #29981 > > disposable |> use |> ignore 00:20:37 verbose #29982 > > path 00:20:37 verbose #29983 > > |> directory_exists 00:20:37 verbose #29984 > > |> _assert_eq false 00:20:46 verbose #29985 > > 00:20:46 verbose #29986 > > ╭─[ 9.49s - return value ]─────────────────────────────────────────────────────╮ 00:20:46 verbose #29987 > > │ 00:00:00 verbose #1 file_system.create_dir / { dir = │ 00:20:46 verbose #29988 > > │ /tmp/!create_temp_path_/spiral_builder_417efae6e3e0b7903daa864fe88076f7085ba │ 00:20:46 verbose #29989 > > │ ea43c2ba01bdd048789e4febd8f/20240906-1504-2130-9690-000000c7ef36 } │ 00:20:46 verbose #29990 > > │ __assert_eq / actual: true / expected: true │ 00:20:46 verbose #29991 > > │ __assert_eq / actual: false / expected: false │ 00:20:46 verbose #29992 > > │ │ 00:20:46 verbose #29993 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:46 verbose #29994 > > 00:20:46 verbose #29995 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:46 verbose #29996 > > //// test 00:20:46 verbose #29997 > > 00:20:46 verbose #29998 > > inl lock_directory path = 00:20:46 verbose #29999 > > fun () => 00:20:46 verbose #30000 > > trace Debug (fun () => "_1") id 00:20:46 verbose #30001 > > "0" |> write_all_text_async (path </> "test.txt") |> async.do 00:20:46 verbose #30002 > > file_stream 00:20:46 verbose #30003 > > (path </> "test.txt") 00:20:46 verbose #30004 > > ModeOpen 00:20:46 verbose #30005 > > AccessReadWrite 00:20:46 verbose #30006 > > ShareNone 00:20:46 verbose #30007 > > |> use 00:20:46 verbose #30008 > > |> ignore 00:20:46 verbose #30009 > > trace Debug (fun () => "_2") id 00:20:46 verbose #30010 > > async.sleep 2000 |> async.do 00:20:46 verbose #30011 > > trace Debug (fun () => "_3") id 00:20:46 verbose #30012 > > () |> return 00:20:46 verbose #30013 > > |> async.new_async 00:20:46 verbose #30014 > > 00:20:46 verbose #30015 > > inl temp_dir, disposable = create_temp_dir () 00:20:46 verbose #30016 > > disposable |> use |> ignore 00:20:46 verbose #30017 > > inl path = temp_dir </> "test" 00:20:46 verbose #30018 > > 00:20:46 verbose #30019 > > fun () => 00:20:46 verbose #30020 > > trace Debug (fun () => "1") id 00:20:46 verbose #30021 > > path |> create_directory |> ignore 00:20:46 verbose #30022 > > trace Debug (fun () => "2") id 00:20:46 verbose #30023 > > inl child = path |> lock_directory |> async.start_child |> async.let' 00:20:46 verbose #30024 > > trace Debug (fun () => "3") id 00:20:46 verbose #30025 > > async.sleep 60 |> async.do 00:20:46 verbose #30026 > > trace Debug (fun () => "4") id 00:20:46 verbose #30027 > > inl retries = path |> delete_directory_async |> async.let' 00:20:46 verbose #30028 > > trace Debug (fun () => "5") id 00:20:46 verbose #30029 > > child |> async.do 00:20:46 verbose #30030 > > trace Debug (fun () => "6") id 00:20:46 verbose #30031 > > retries |> return 00:20:46 verbose #30032 > > |> async.new_async_unit 00:20:46 verbose #30033 > > |> async.run_with_timeout 3000 00:20:46 verbose #30034 > > |> fun x => x : _ i64 00:20:46 verbose #30035 > > |> function 00:20:46 verbose #30036 > > | Some (retries : i64) => 00:20:46 verbose #30037 > > retries 00:20:46 verbose #30038 > > |> _assert_between 00:20:46 verbose #30039 > > (if platform.is_windows () then 50 else 0) 00:20:46 verbose #30040 > > (if platform.is_windows () then 180 else 0) 00:20:46 verbose #30041 > > 00:20:46 verbose #30042 > > true 00:20:46 verbose #30043 > > | _ => false 00:20:46 verbose #30044 > > |> _assert_eq true 00:20:51 verbose #30045 > > 00:20:51 verbose #30046 > > ╭─[ 4.28s - stdout ]───────────────────────────────────────────────────────────╮ 00:20:51 verbose #30047 > > │ 00:00:00 debug #1 1 │ 00:20:51 verbose #30048 > > │ 00:00:00 debug #2 2 │ 00:20:51 verbose #30049 > > │ 00:00:00 debug #4 3 │ 00:20:51 verbose #30050 > > │ 00:00:00 debug #4 _1 │ 00:20:51 verbose #30051 > > │ 00:00:00 debug #5 _2 │ 00:20:51 verbose #30052 > > │ 00:00:00 debug #6 4 │ 00:20:51 verbose #30053 > > │ 00:00:00 debug #7 5 │ 00:20:51 verbose #30054 > > │ 00:00:02 debug #8 _3 │ 00:20:51 verbose #30055 > > │ 00:00:02 debug #9 6 │ 00:20:51 verbose #30056 > > │ __assert_between / actual: 0L / expected: struct (0L, 0L) │ 00:20:51 verbose #30057 > > │ __assert_eq / actual: true / expected: true │ 00:20:51 verbose #30058 > > │ │ 00:20:51 verbose #30059 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:51 verbose #30060 > > 00:20:51 verbose #30061 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:51 verbose #30062 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:51 verbose #30063 > > │ ### create_temp_dir' │ 00:20:51 verbose #30064 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:51 verbose #30065 > > 00:20:51 verbose #30066 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:51 verbose #30067 > > inl create_temp_dir' (hash : string) = 00:20:51 verbose #30068 > > inl dir = hash |> guid.hash_guid |> create_temp_path' 00:20:51 verbose #30069 > > dir, dir |> create_dir 00:20:51 verbose #30070 > > 00:20:51 verbose #30071 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:51 verbose #30072 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:51 verbose #30073 > > │ ### link_directory │ 00:20:51 verbose #30074 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:51 verbose #30075 > > 00:20:51 verbose #30076 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:51 verbose #30077 > > let link_directory target_path path = 00:20:51 verbose #30078 > > if target_path |> directory_exists |> not 00:20:51 verbose #30079 > > then target_path |> create_dir |> ignore 00:20:51 verbose #30080 > > 00:20:51 verbose #30081 > > inl lib_dir_path = path |> get_directory_name 00:20:51 verbose #30082 > > if lib_dir_path |> directory_exists |> not 00:20:51 verbose #30083 > > then lib_dir_path |> create_dir |> ignore 00:20:51 verbose #30084 > > 00:20:51 verbose #30085 > > if (path |> directory_exists) 00:20:51 verbose #30086 > > && (path |> read_link |> resultm.is_err) then 00:20:51 verbose #30087 > > path |> directory_delete true 00:20:51 verbose #30088 > > 00:20:51 verbose #30089 > > if path |> directory_exists |> not then 00:20:51 verbose #30090 > > path |> directory_create_symbolic_link target_path 00:20:51 verbose #30091 > > 00:20:51 verbose #30092 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:51 verbose #30093 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:51 verbose #30094 > > │ ## rust │ 00:20:51 verbose #30095 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:51 verbose #30096 > > 00:20:51 verbose #30097 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:51 verbose #30098 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:51 verbose #30099 > > │ ### file_exists_content │ 00:20:51 verbose #30100 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:51 verbose #30101 > > 00:20:51 verbose #30102 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:51 verbose #30103 > > let file_exists_content path content : bool = 00:20:51 verbose #30104 > > run_target function 00:20:51 verbose #30105 > > | Rust (Native) => fun () => 00:20:51 verbose #30106 > > if path |> file_exists |> not 00:20:51 verbose #30107 > > then false 00:20:51 verbose #30108 > > else 00:20:51 verbose #30109 > > inl existing_content = path |> read_all_text 00:20:51 verbose #30110 > > content = existing_content 00:20:51 verbose #30111 > > | _ => fun () => null () 00:20:51 verbose #30112 > > 00:20:51 verbose #30113 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:51 verbose #30114 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:51 verbose #30115 > > │ ### write_all_text_exists │ 00:20:51 verbose #30116 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:51 verbose #30117 > > 00:20:51 verbose #30118 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:51 verbose #30119 > > let write_all_text_exists path contents = 00:20:51 verbose #30120 > > inl exists' = contents |> file_exists_content path 00:20:51 verbose #30121 > > if not exists' then 00:20:51 verbose #30122 > > inl dir = path |> get_directory_name 00:20:51 verbose #30123 > > if dir |> directory_exists |> not 00:20:51 verbose #30124 > > then dir |> create_dir |> ignore 00:20:51 verbose #30125 > > contents |> write_all_text path 00:20:51 verbose #30126 > > 00:20:51 verbose #30127 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:51 verbose #30128 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:51 verbose #30129 > > │ ## fsharp │ 00:20:51 verbose #30130 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:51 verbose #30131 > > 00:20:51 verbose #30132 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:51 verbose #30133 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:51 verbose #30134 > > │ ### wait_for_file_access │ 00:20:51 verbose #30135 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:51 verbose #30136 > > 00:20:51 verbose #30137 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:51 verbose #30138 > > inl wait_for_file_access access path = 00:20:51 verbose #30139 > > run_target function 00:20:51 verbose #30140 > > | Fsharp (Native) => fun () => 00:20:51 verbose #30141 > > inl file_access, file_share = 00:20:51 verbose #30142 > > access 00:20:51 verbose #30143 > > |> optionm'.default_value (AccessReadWrite, ShareRead) 00:20:51 verbose #30144 > > let rec loop (retry : i64) : _ i64 = 00:20:51 verbose #30145 > > fun () => 00:20:51 verbose #30146 > > try_unit 00:20:51 verbose #30147 > > fun () => 00:20:51 verbose #30148 > > file_stream 00:20:51 verbose #30149 > > path 00:20:51 verbose #30150 > > ModeOpen 00:20:51 verbose #30151 > > file_access 00:20:51 verbose #30152 > > file_share 00:20:51 verbose #30153 > > |> use 00:20:51 verbose #30154 > > |> ignore 00:20:51 verbose #30155 > > retry |> return 00:20:51 verbose #30156 > > fun ex => 00:20:51 verbose #30157 > > if retry > 0 && retry % 100i64 = 0 then 00:20:51 verbose #30158 > > inl ex = ex |> sm'.format_exception 00:20:51 verbose #30159 > > trace Debug 00:20:51 verbose #30160 > > fun () => "file_system.wait_for_file_access" 00:20:51 verbose #30161 > > fun () => { path = path |> get_file_name; 00:20:51 verbose #30162 > > retry ex } 00:20:51 verbose #30163 > > async.sleep 10i32 |> async.do 00:20:51 verbose #30164 > > loop (retry + 1) |> async.return_await 00:20:51 verbose #30165 > > |> async.new_async 00:20:51 verbose #30166 > > loop 0 00:20:51 verbose #30167 > > | _ => fun () => null () 00:20:51 verbose #30168 > > 00:20:51 verbose #30169 > > inl wait_for_file_access_read path = 00:20:51 verbose #30170 > > path 00:20:51 verbose #30171 > > |> wait_for_file_access (Some ( 00:20:51 verbose #30172 > > AccessRead, 00:20:51 verbose #30173 > > ShareRead 00:20:51 verbose #30174 > > )) 00:20:51 verbose #30175 > > 00:20:51 verbose #30176 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:51 verbose #30177 > > //// test 00:20:51 verbose #30178 > > 00:20:51 verbose #30179 > > inl lock_file path = 00:20:51 verbose #30180 > > fun () => 00:20:51 verbose #30181 > > trace Debug (fun () => "_1") id 00:20:51 verbose #30182 > > inl stream : file_stream' = 00:20:51 verbose #30183 > > file_stream 00:20:51 verbose #30184 > > path 00:20:51 verbose #30185 > > ModeOpen 00:20:51 verbose #30186 > > AccessReadWrite 00:20:51 verbose #30187 > > ShareNone 00:20:51 verbose #30188 > > |> use 00:20:51 verbose #30189 > > trace Debug (fun () => "_2") id 00:20:51 verbose #30190 > > async.sleep 2000 |> async.do 00:20:51 verbose #30191 > > trace Debug (fun () => "_3") id 00:20:51 verbose #30192 > > ($'!stream.Seek (0L, System.IO.SeekOrigin.Begin)' : i64) |> ignore 00:20:51 verbose #30193 > > trace Debug (fun () => "_4") id 00:20:51 verbose #30194 > > $'!stream.WriteByte' 49u8 00:20:51 verbose #30195 > > trace Debug (fun () => "_5") id 00:20:51 verbose #30196 > > stream |> $'_.Flush()' 00:20:51 verbose #30197 > > trace Debug (fun () => "_6") id 00:20:51 verbose #30198 > > |> async.new_async 00:20:51 verbose #30199 > > 00:20:51 verbose #30200 > > inl file_name = "test.txt" 00:20:51 verbose #30201 > > inl text = "0" 00:20:51 verbose #30202 > > 00:20:51 verbose #30203 > > inl temp_dir, disposable = 00:20:51 verbose #30204 > > (file_name, text) 00:20:51 verbose #30205 > > |> sm'.format_debug 00:20:51 verbose #30206 > > |> crypto.hash_text 00:20:51 verbose #30207 > > |> create_temp_dir' 00:20:51 verbose #30208 > > disposable |> use |> ignore 00:20:51 verbose #30209 > > inl path = temp_dir </> file_name 00:20:51 verbose #30210 > > 00:20:51 verbose #30211 > > fun () => 00:20:51 verbose #30212 > > trace Debug (fun () => "1") id 00:20:51 verbose #30213 > > text |> write_all_text_async path |> async.do 00:20:51 verbose #30214 > > trace Debug (fun () => "2") id 00:20:51 verbose #30215 > > inl child = path |> lock_file |> async.start_child |> async.let' 00:20:51 verbose #30216 > > trace Debug (fun () => "3") id 00:20:51 verbose #30217 > > async.sleep 1 |> async.do 00:20:51 verbose #30218 > > trace Debug (fun () => "4") id 00:20:51 verbose #30219 > > inl retries = path |> wait_for_file_access None |> async.let' 00:20:51 verbose #30220 > > trace Debug (fun () => "5") id 00:20:51 verbose #30221 > > inl text = path |> read_all_text_async |> async.let' 00:20:51 verbose #30222 > > trace Debug (fun () => "6") id 00:20:51 verbose #30223 > > child |> async.do 00:20:51 verbose #30224 > > trace Debug (fun () => "7") id 00:20:51 verbose #30225 > > (retries, text) |> return 00:20:51 verbose #30226 > > |> async.new_async_unit 00:20:51 verbose #30227 > > |> async.run_with_timeout 3000 00:20:51 verbose #30228 > > |> function 00:20:51 verbose #30229 > > | Some ((retries : i64), text) => 00:20:51 verbose #30230 > > retries 00:20:51 verbose #30231 > > |> _assert_between 00:20:51 verbose #30232 > > (if platform.is_windows () then 50 else 100) 00:20:51 verbose #30233 > > (if platform.is_windows () then 180 else 200) 00:20:51 verbose #30234 > > 00:20:51 verbose #30235 > > text |> _assert_eq (join "1") 00:20:51 verbose #30236 > > 00:20:51 verbose #30237 > > true 00:20:51 verbose #30238 > > | _ => false 00:20:51 verbose #30239 > > |> _assert_eq true 00:20:56 verbose #30240 > > 00:20:56 verbose #30241 > > ╭─[ 5.02s - stdout ]───────────────────────────────────────────────────────────╮ 00:20:56 verbose #30242 > > │ 00:00:00 debug #1 1 │ 00:20:56 verbose #30243 > > │ 00:00:00 debug #2 2 │ 00:20:56 verbose #30244 > > │ 00:00:00 debug #4 3 │ 00:20:56 verbose #30245 > > │ 00:00:00 debug #4 _1 │ 00:20:56 verbose #30246 > > │ 00:00:00 debug #5 _2 │ 00:20:56 verbose #30247 > > │ 00:00:00 debug #6 4 │ 00:20:56 verbose #30248 > > │ 00:00:01 debug #7 file_system.wait_for_file_access / { path = │ 00:20:56 verbose #30249 > > │ test.txt; retry = 100; ex = System.IO.IOException: The process cannot access │ 00:20:56 verbose #30250 > > │ the file │ 00:20:56 verbose #30251 > > │ '/tmp/!create_temp_path_/dotnet-repl/613830ed-016e-d959-8d21-02dc1c63c252/te │ 00:20:56 verbose #30252 > > │ st.txt' because it is being used by another process. } │ 00:20:56 verbose #30253 > > │ 00:00:02 debug #8 _3 │ 00:20:56 verbose #30254 > > │ 00:00:02 debug #9 _4 │ 00:20:56 verbose #30255 > > │ 00:00:02 debug #10 _5 │ 00:20:56 verbose #30256 > > │ 00:00:02 debug #11 _6 │ 00:20:56 verbose #30257 > > │ 00:00:02 debug #12 5 │ 00:20:56 verbose #30258 > > │ 00:00:02 debug #13 6 │ 00:20:56 verbose #30259 > > │ 00:00:02 debug #14 7 │ 00:20:56 verbose #30260 > > │ __assert_between / actual: 167L / expected: struct (100L, 200L) │ 00:20:56 verbose #30261 > > │ __assert_eq / actual: "1" / expected: "1" │ 00:20:56 verbose #30262 > > │ __assert_eq / actual: true / expected: true │ 00:20:56 verbose #30263 > > │ │ 00:20:56 verbose #30264 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:56 verbose #30265 > > 00:20:56 verbose #30266 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:56 verbose #30267 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:56 verbose #30268 > > │ ### read_all_text_retry_async │ 00:20:56 verbose #30269 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:56 verbose #30270 > > 00:20:56 verbose #30271 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:56 verbose #30272 > > inl read_all_text_retry_async full_path : async.async (optionm'.option' string) 00:20:56 verbose #30273 > > = 00:20:56 verbose #30274 > > run_target function 00:20:56 verbose #30275 > > | Fsharp (Native) => fun () => 00:20:56 verbose #30276 > > let rec loop (retry : i64) = 00:20:56 verbose #30277 > > fun () => 00:20:56 verbose #30278 > > try_unit 00:20:56 verbose #30279 > > fun () => 00:20:56 verbose #30280 > > if retry > 0 00:20:56 verbose #30281 > > then 00:20:56 verbose #30282 > > full_path 00:20:56 verbose #30283 > > |> wait_for_file_access_read 00:20:56 verbose #30284 > > |> async.run_with_timeout_async 1000 00:20:56 verbose #30285 > > |> async.ignore 00:20:56 verbose #30286 > > |> async.do 00:20:56 verbose #30287 > > full_path |> read_all_text_async |> async.map (Some 00:20:56 verbose #30288 > > >> optionm'.box) |> async.return_await 00:20:56 verbose #30289 > > fun ex => 00:20:56 verbose #30290 > > fix_condition 00:20:56 verbose #30291 > > fun () => retry <> 0 00:20:56 verbose #30292 > > fun () => 00:20:56 verbose #30293 > > inl ex = ex |> sm'.format_exception 00:20:56 verbose #30294 > > trace Debug 00:20:56 verbose #30295 > > fun () => $'"read_all_text_retry_async"' 00:20:56 verbose #30296 > > fun () => { retry ex } 00:20:56 verbose #30297 > > (None : _ string) |> optionm'.box |> return 00:20:56 verbose #30298 > > fun () => 00:20:56 verbose #30299 > > loop (retry + 1) |> async.return_await 00:20:56 verbose #30300 > > |> async.new_async 00:20:56 verbose #30301 > > loop 0 00:20:56 verbose #30302 > > | _ => fun () => null () 00:20:57 verbose #30303 > > 00:20:57 verbose #30304 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:57 verbose #30305 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:20:57 verbose #30306 > > │ ### move_file_async │ 00:20:57 verbose #30307 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:20:57 verbose #30308 > > 00:20:57 verbose #30309 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:57 verbose #30310 > > inl move_file_async new_path old_path : _ i64 = 00:20:57 verbose #30311 > > run_target function 00:20:57 verbose #30312 > > | Fsharp (Native) => fun () => 00:20:57 verbose #30313 > > let rec loop (retry : i64) = 00:20:57 verbose #30314 > > fun () => 00:20:57 verbose #30315 > > try_unit 00:20:57 verbose #30316 > > fun () => 00:20:57 verbose #30317 > > old_path |> file_move new_path 00:20:57 verbose #30318 > > return retry 00:20:57 verbose #30319 > > fun ex => 00:20:57 verbose #30320 > > if retry % 100 = 0 then 00:20:57 verbose #30321 > > 00:20:57 verbose #30322 > > trace Warning 00:20:57 verbose #30323 > > fun () => "move_file_async" 00:20:57 verbose #30324 > > fun () => { 00:20:57 verbose #30325 > > old_path = old_path |> get_file_name 00:20:57 verbose #30326 > > new_path = new_path |> get_file_name 00:20:57 verbose #30327 > > ex 00:20:57 verbose #30328 > > } 00:20:57 verbose #30329 > > async.sleep 10 |> async.do 00:20:57 verbose #30330 > > loop (retry + 1) |> async.return_await 00:20:57 verbose #30331 > > |> async.new_async_unit 00:20:57 verbose #30332 > > loop 0 00:20:57 verbose #30333 > > | _ => fun () => null () 00:20:57 verbose #30334 > > 00:20:57 verbose #30335 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:57 verbose #30336 > > //// test 00:20:57 verbose #30337 > > 00:20:57 verbose #30338 > > inl lock_file path = 00:20:57 verbose #30339 > > fun () => 00:20:57 verbose #30340 > > trace Debug (fun () => "_1") id 00:20:57 verbose #30341 > > file_stream 00:20:57 verbose #30342 > > path 00:20:57 verbose #30343 > > ModeOpen 00:20:57 verbose #30344 > > AccessReadWrite 00:20:57 verbose #30345 > > ShareNone 00:20:57 verbose #30346 > > |> use 00:20:57 verbose #30347 > > |> ignore 00:20:57 verbose #30348 > > trace Debug (fun () => "_2") id 00:20:57 verbose #30349 > > async.sleep 2000 |> async.do 00:20:57 verbose #30350 > > trace Debug (fun () => "_3") id 00:20:57 verbose #30351 > > |> async.new_async 00:20:57 verbose #30352 > > 00:20:57 verbose #30353 > > fun () => 00:20:57 verbose #30354 > > inl file_name = "test.txt" 00:20:57 verbose #30355 > > inl text = "0" 00:20:57 verbose #30356 > > 00:20:57 verbose #30357 > > inl temp_dir, disposable = 00:20:57 verbose #30358 > > (file_name, text) 00:20:57 verbose #30359 > > |> sm'.format_debug 00:20:57 verbose #30360 > > |> crypto.hash_text 00:20:57 verbose #30361 > > |> create_temp_dir' 00:20:57 verbose #30362 > > disposable |> use |> ignore 00:20:57 verbose #30363 > > let path = temp_dir </> file_name 00:20:57 verbose #30364 > > let new_path = temp_dir </> "test2.txt" 00:20:57 verbose #30365 > > 00:20:57 verbose #30366 > > trace Debug (fun () => "1") id 00:20:57 verbose #30367 > > text |> write_all_text_async path |> async.do 00:20:57 verbose #30368 > > trace Debug (fun () => "2") id 00:20:57 verbose #30369 > > inl child = lock_file path |> async.start_child |> async.let' 00:20:57 verbose #30370 > > trace Debug (fun () => "3") id 00:20:57 verbose #30371 > > async.sleep 1 |> async.do 00:20:57 verbose #30372 > > trace Debug (fun () => "4") id 00:20:57 verbose #30373 > > inl retries1 = path |> move_file_async new_path |> async.let' 00:20:57 verbose #30374 > > trace Debug (fun () => "5") id 00:20:57 verbose #30375 > > inl retries2 = new_path |> wait_for_file_access None |> async.let' 00:20:57 verbose #30376 > > trace Debug (fun () => "6") id 00:20:57 verbose #30377 > > inl text = new_path |> read_all_text_async |> async.let' 00:20:57 verbose #30378 > > trace Debug (fun () => "7") id 00:20:57 verbose #30379 > > child |> async.do 00:20:57 verbose #30380 > > trace Debug (fun () => "8") id 00:20:57 verbose #30381 > > (retries1, retries2, text) |> return 00:20:57 verbose #30382 > > |> async.new_async_unit 00:20:57 verbose #30383 > > |> async.run_with_timeout 3000 00:20:57 verbose #30384 > > |> function 00:20:57 verbose #30385 > > | Some (retries1, retries2, text) => 00:20:57 verbose #30386 > > retries1 00:20:57 verbose #30387 > > |> _assert_between 00:20:57 verbose #30388 > > (if platform.is_windows () then 50i64 else 0) 00:20:57 verbose #30389 > > (if platform.is_windows () then 200 else 0) 00:20:57 verbose #30390 > > 00:20:57 verbose #30391 > > retries2 00:20:57 verbose #30392 > > |> _assert_between 00:20:57 verbose #30393 > > (if platform.is_windows () then 0i64 else 100) 00:20:57 verbose #30394 > > (if platform.is_windows () then 0 else 200) 00:20:57 verbose #30395 > > 00:20:57 verbose #30396 > > text |> _assert_eq (join "0") 00:20:57 verbose #30397 > > 00:20:57 verbose #30398 > > true 00:20:57 verbose #30399 > > | _ => false 00:20:57 verbose #30400 > > |> _assert_eq true 00:21:02 verbose #30401 > > 00:21:02 verbose #30402 > > ╭─[ 5.09s - stdout ]───────────────────────────────────────────────────────────╮ 00:21:02 verbose #30403 > > │ 00:00:00 debug #1 1 │ 00:21:02 verbose #30404 > > │ 00:00:00 debug #2 2 │ 00:21:02 verbose #30405 > > │ 00:00:00 debug #4 3 │ 00:21:02 verbose #30406 > > │ 00:00:00 debug #4 _1 │ 00:21:02 verbose #30407 > > │ 00:00:00 debug #5 _2 │ 00:21:02 verbose #30408 > > │ 00:00:00 debug #6 4 │ 00:21:02 verbose #30409 > > │ 00:00:00 debug #7 5 │ 00:21:02 verbose #30410 > > │ 00:00:01 debug #8 file_system.wait_for_file_access / { path = │ 00:21:02 verbose #30411 > > │ test2.txt; retry = 100; ex = System.IO.IOException: The process cannot │ 00:21:02 verbose #30412 > > │ access the file │ 00:21:02 verbose #30413 > > │ '/tmp/!create_temp_path_/dotnet-repl/613830ed-016e-d959-8d21-02dc1c63c252/te │ 00:21:02 verbose #30414 > > │ st2.txt' because it is being used by another process. } │ 00:21:02 verbose #30415 > > │ 00:00:02 debug #9 _3 │ 00:21:02 verbose #30416 > > │ 00:00:02 debug #10 6 │ 00:21:02 verbose #30417 > > │ 00:00:02 debug #11 7 │ 00:21:02 verbose #30418 > > │ 00:00:02 debug #12 8 │ 00:21:02 verbose #30419 > > │ __assert_between / actual: 0L / expected: struct (0L, 0L) │ 00:21:02 verbose #30420 > > │ __assert_between / actual: 167L / expected: struct (100L, 200L) │ 00:21:02 verbose #30421 > > │ __assert_eq / actual: "0" / expected: "0" │ 00:21:02 verbose #30422 > > │ __assert_eq / actual: true / expected: true │ 00:21:02 verbose #30423 > > │ │ 00:21:02 verbose #30424 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:02 verbose #30425 > > 00:21:02 verbose #30426 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:02 verbose #30427 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:02 verbose #30428 > > │ ### delete_file_async │ 00:21:02 verbose #30429 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:02 verbose #30430 > > 00:21:02 verbose #30431 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:02 verbose #30432 > > inl delete_file_async path : _ i64 = 00:21:02 verbose #30433 > > run_target function 00:21:02 verbose #30434 > > | Fsharp (Native) => fun () => 00:21:02 verbose #30435 > > let rec loop (retry : i64) = 00:21:02 verbose #30436 > > fun () => 00:21:02 verbose #30437 > > try_unit 00:21:02 verbose #30438 > > fun () => 00:21:02 verbose #30439 > > path |> file_delete 00:21:02 verbose #30440 > > return retry 00:21:02 verbose #30441 > > fun ex => 00:21:02 verbose #30442 > > if retry % 100 = 0 then 00:21:02 verbose #30443 > > trace Warning 00:21:02 verbose #30444 > > fun () => "delete_file_async" 00:21:02 verbose #30445 > > fun () => { path = path |> get_file_name; ex 00:21:02 verbose #30446 > > = ex |> sm'.format_exception } 00:21:02 verbose #30447 > > async.sleep 10 |> async.do 00:21:02 verbose #30448 > > loop (retry + 1) |> async.return_await 00:21:02 verbose #30449 > > |> async.new_async 00:21:02 verbose #30450 > > loop 0 00:21:02 verbose #30451 > > | _ => fun () => null () 00:21:02 verbose #30452 > > 00:21:02 verbose #30453 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:02 verbose #30454 > > //// test 00:21:02 verbose #30455 > > 00:21:02 verbose #30456 > > inl lock_file path = 00:21:02 verbose #30457 > > fun () => 00:21:02 verbose #30458 > > trace Debug (fun () => "_1") id 00:21:02 verbose #30459 > > file_stream 00:21:02 verbose #30460 > > path 00:21:02 verbose #30461 > > ModeOpen 00:21:02 verbose #30462 > > AccessReadWrite 00:21:02 verbose #30463 > > ShareNone 00:21:02 verbose #30464 > > |> use 00:21:02 verbose #30465 > > |> ignore 00:21:02 verbose #30466 > > trace Debug (fun () => "_2") id 00:21:02 verbose #30467 > > async.sleep 2000 |> async.do 00:21:02 verbose #30468 > > trace Debug (fun () => "_3") id 00:21:02 verbose #30469 > > |> async.new_async 00:21:02 verbose #30470 > > 00:21:02 verbose #30471 > > fun () => 00:21:02 verbose #30472 > > inl file_name = "test.txt" 00:21:02 verbose #30473 > > inl text = "0" 00:21:02 verbose #30474 > > 00:21:02 verbose #30475 > > inl temp_dir, disposable = 00:21:02 verbose #30476 > > (file_name, text) 00:21:02 verbose #30477 > > |> sm'.format_debug 00:21:02 verbose #30478 > > |> crypto.hash_text 00:21:02 verbose #30479 > > |> create_temp_dir' 00:21:02 verbose #30480 > > disposable |> use |> ignore 00:21:02 verbose #30481 > > inl path = temp_dir </> file_name 00:21:02 verbose #30482 > > 00:21:02 verbose #30483 > > trace Debug (fun () => "1") id 00:21:02 verbose #30484 > > text |> write_all_text_async path |> async.do 00:21:02 verbose #30485 > > trace Debug (fun () => "2") id 00:21:02 verbose #30486 > > inl child = lock_file path |> async.start_child |> async.let' 00:21:02 verbose #30487 > > trace Debug (fun () => "3") id 00:21:02 verbose #30488 > > async.sleep 1 |> async.do 00:21:02 verbose #30489 > > trace Debug (fun () => "4") id 00:21:02 verbose #30490 > > inl retries = delete_file_async path |> async.let' 00:21:02 verbose #30491 > > trace Debug (fun () => "5") id 00:21:02 verbose #30492 > > child |> async.do 00:21:02 verbose #30493 > > trace Debug (fun () => "6") id 00:21:02 verbose #30494 > > return retries 00:21:02 verbose #30495 > > |> async.new_async_unit 00:21:02 verbose #30496 > > |> async.run_with_timeout 3000 00:21:02 verbose #30497 > > |> function 00:21:02 verbose #30498 > > | Some (retries : i64) => 00:21:02 verbose #30499 > > retries 00:21:02 verbose #30500 > > |> _assert_between 00:21:02 verbose #30501 > > (if platform.is_windows () then 50 else 0) 00:21:02 verbose #30502 > > (if platform.is_windows () then 180 else 0) 00:21:02 verbose #30503 > > 00:21:02 verbose #30504 > > true 00:21:02 verbose #30505 > > | _ => false 00:21:02 verbose #30506 > > |> _assert_eq true 00:21:07 verbose #30507 > > 00:21:07 verbose #30508 > > ╭─[ 4.56s - stdout ]───────────────────────────────────────────────────────────╮ 00:21:07 verbose #30509 > > │ 00:00:00 debug #1 1 │ 00:21:07 verbose #30510 > > │ 00:00:00 debug #2 2 │ 00:21:07 verbose #30511 > > │ 00:00:00 debug #4 3 │ 00:21:07 verbose #30512 > > │ 00:00:00 debug #4 _1 │ 00:21:07 verbose #30513 > > │ 00:00:00 debug #5 _2 │ 00:21:07 verbose #30514 > > │ 00:00:00 debug #6 4 │ 00:21:07 verbose #30515 > > │ 00:00:00 debug #7 5 │ 00:21:07 verbose #30516 > > │ 00:00:02 debug #8 _3 │ 00:21:07 verbose #30517 > > │ 00:00:02 debug #9 6 │ 00:21:07 verbose #30518 > > │ __assert_between / actual: 0L / expected: struct (0L, 0L) │ 00:21:07 verbose #30519 > > │ __assert_eq / actual: true / expected: true │ 00:21:07 verbose #30520 > > │ │ 00:21:07 verbose #30521 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:07 verbose #30522 > > 00:21:07 verbose #30523 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:07 verbose #30524 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:07 verbose #30525 > > │ ## main │ 00:21:07 verbose #30526 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:07 verbose #30527 > > 00:21:07 verbose #30528 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:07 verbose #30529 > > inl main () = 00:21:07 verbose #30530 > > init_trace_state None 00:21:07 verbose #30531 > > $'let delete_directory_async x = !delete_directory_async x' : () 00:21:07 verbose #30532 > > $'let wait_for_file_access x = !wait_for_file_access x' : () 00:21:07 verbose #30533 > > $'let wait_for_file_access_read x = !wait_for_file_access_read x' : () 00:21:07 verbose #30534 > > $'let read_all_text_async x = !read_all_text_async x' : () 00:21:07 verbose #30535 > > $'let file_exists_content x = !file_exists_content x' : () 00:21:07 verbose #30536 > > $'let write_all_text_async x = !write_all_text_async x' : () 00:21:07 verbose #30537 > > $'let write_all_text_exists x = !write_all_text_exists_async x' : () 00:21:07 verbose #30538 > > $'let delete_file_async x = !delete_file_async x' : () 00:21:07 verbose #30539 > > $'let move_file_async x = !move_file_async x' : () 00:21:07 verbose #30540 > > $'let read_all_text_retry_async x = !read_all_text_retry_async x' : () 00:21:07 verbose #30541 > > $'let create_temp_path () = !create_temp_path ()' : () 00:21:07 verbose #30542 > > $'let create_temp_dir () = !create_temp_dir ()' : () 00:21:07 verbose #30543 > > $'let create_temp_dir\' x = !create_temp_dir' x' : () 00:21:07 verbose #30544 > > $'let get_source_directory () = !get_source_directory ()' : () 00:21:07 verbose #30545 > > $'let normalize_path x = !normalize_path x' : () 00:21:07 verbose #30546 > > $'let new_file_uri x = !new_file_uri x' : () 00:21:07 verbose #30547 > > $'let get_workspace_root () = !get_workspace_root ()' : () 00:21:07 verbose #30548 > > $'let init_trace_file x = !init_trace_file x' : () 00:21:07 verbose #30549 > > inl combine x = (</>) x 00:21:07 verbose #30550 > > $'let (</>) x = !combine x' : () 00:21:09 verbose #30551 > 00:01:29 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 111199 } 00:21:09 verbose #30552 > 00:01:29 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:21:09 verbose #30553 > "nbconvert", 00:21:09 verbose #30554 > "/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.ipynb", 00:21:09 verbose #30555 > "--to", 00:21:09 verbose #30556 > "html", 00:21:09 verbose #30557 > "--HTMLExporter.theme=dark", 00:21:09 verbose #30558 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:21:10 verbose #30559 > 00:01:29 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.ipynb to html 00:21:10 verbose #30560 > 00:01:29 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:21:10 verbose #30561 > 00:01:29 verbose #7 ! validate(nb) 00:21:10 verbose #30562 > 00:01:30 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:21:10 verbose #30563 > 00:01:30 verbose #9 ! return _pygments_highlight( 00:21:11 verbose #30564 > 00:01:31 verbose #10 ! [NbConvertApp] Writing 582914 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.html 00:21:12 verbose #30565 > 00:01:31 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 906 } 00:21:12 verbose #30566 > 00:01:31 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 906 } 00:21:12 verbose #30567 > 00:01:31 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:21:12 verbose #30568 > "-c", 00:21:12 verbose #30569 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:21:12 verbose #30570 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:21:12 verbose #30571 > 00:01:31 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:21:12 verbose #30572 > 00:01:31 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:21:12 verbose #30573 > 00:01:31 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 112164 } 00:21:12 debug #30574 runtime.execute_with_options_async / { exit_code = 0; output_length = 119259 } 00:21:12 debug #36 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path file_system.dib --retries 3 00:21:12 debug #30575 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path networking.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:21:12 verbose #30576 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "networking.dib", "--retries", "3"])) } 00:21:12 verbose #30577 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:21:12 verbose #30578 > "repl", 00:21:12 verbose #30579 > "--exit-after-run", 00:21:12 verbose #30580 > "--run", 00:21:12 verbose #30581 > "/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib", 00:21:12 verbose #30582 > "--output-path", 00:21:12 verbose #30583 > "/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.ipynb", 00:21:12 verbose #30584 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:21:13 verbose #30585 > > 00:21:13 verbose #30586 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:13 verbose #30587 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:13 verbose #30588 > > │ # networking │ 00:21:13 verbose #30589 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:16 verbose #30590 > > 00:21:16 verbose #30591 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:16 verbose #30592 > > open rust.rust_operators 00:21:16 verbose #30593 > > 00:21:16 verbose #30594 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:16 verbose #30595 > > //// test 00:21:16 verbose #30596 > > 00:21:16 verbose #30597 > > open testing 00:21:16 verbose #30598 > > 00:21:16 verbose #30599 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:16 verbose #30600 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:16 verbose #30601 > > │ ## rust │ 00:21:16 verbose #30602 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:16 verbose #30603 > > 00:21:16 verbose #30604 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:16 verbose #30605 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:16 verbose #30606 > > │ ### reqwest_response │ 00:21:16 verbose #30607 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:16 verbose #30608 > > 00:21:16 verbose #30609 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:16 verbose #30610 > > nominal reqwest_response = 00:21:16 verbose #30611 > > `( 00:21:16 verbose #30612 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:16 verbose #30613 > > Fable.Core.Emit(\"reqwest_wasm::Response\")>]]\n#endif\ntype reqwest_Response = 00:21:16 verbose #30614 > > class end" 00:21:16 verbose #30615 > > $'' : $'reqwest_Response' 00:21:16 verbose #30616 > > ) 00:21:16 verbose #30617 > > 00:21:16 verbose #30618 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:16 verbose #30619 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:16 verbose #30620 > > │ ### reqwest_error │ 00:21:16 verbose #30621 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:16 verbose #30622 > > 00:21:16 verbose #30623 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:16 verbose #30624 > > nominal reqwest_error = 00:21:16 verbose #30625 > > `( 00:21:16 verbose #30626 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:16 verbose #30627 > > Fable.Core.Emit(\"reqwest_wasm::Error\")>]]\n#endif\ntype reqwest_Error = class 00:21:16 verbose #30628 > > end" 00:21:16 verbose #30629 > > $'' : $'reqwest_Error' 00:21:16 verbose #30630 > > ) 00:21:16 verbose #30631 > > 00:21:16 verbose #30632 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:16 verbose #30633 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:16 verbose #30634 > > │ ### request_builder │ 00:21:16 verbose #30635 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:16 verbose #30636 > > 00:21:16 verbose #30637 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:16 verbose #30638 > > nominal request_builder = 00:21:16 verbose #30639 > > `( 00:21:16 verbose #30640 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:16 verbose #30641 > > Fable.Core.Emit(\"reqwest_wasm::RequestBuilder\")>]]\n#endif\ntype 00:21:16 verbose #30642 > > reqwest_RequestBuilder = class end" 00:21:16 verbose #30643 > > $'' : $'reqwest_RequestBuilder' 00:21:16 verbose #30644 > > ) 00:21:17 verbose #30645 > > 00:21:17 verbose #30646 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:17 verbose #30647 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:17 verbose #30648 > > │ ### request_type │ 00:21:17 verbose #30649 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:17 verbose #30650 > > 00:21:17 verbose #30651 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:17 verbose #30652 > > union request_type = 00:21:17 verbose #30653 > > | Get 00:21:17 verbose #30654 > > | Post 00:21:17 verbose #30655 > > 00:21:17 verbose #30656 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:17 verbose #30657 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:17 verbose #30658 > > │ ### request │ 00:21:17 verbose #30659 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:17 verbose #30660 > > 00:21:17 verbose #30661 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:17 verbose #30662 > > type request = 00:21:17 verbose #30663 > > { 00:21:17 verbose #30664 > > url : string 00:21:17 verbose #30665 > > request_type : request_type 00:21:17 verbose #30666 > > body : string 00:21:17 verbose #30667 > > json : bool 00:21:17 verbose #30668 > > auto_refresh : bool 00:21:17 verbose #30669 > > } 00:21:17 verbose #30670 > > 00:21:17 verbose #30671 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:17 verbose #30672 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:17 verbose #30673 > > │ ### new_request_get │ 00:21:17 verbose #30674 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:17 verbose #30675 > > 00:21:17 verbose #30676 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:17 verbose #30677 > > inl new_request_get (url : string) : request_builder = 00:21:17 verbose #30678 > > inl url = join url 00:21:17 verbose #30679 > > inl url = url |> sm'.to_std_string 00:21:17 verbose #30680 > > inl url = join url 00:21:17 verbose #30681 > > !\($'"reqwest_wasm::Client::builder().build().map_err(|err| 00:21:17 verbose #30682 > > err.to_string())?.get(!url)"') 00:21:17 verbose #30683 > > 00:21:17 verbose #30684 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:17 verbose #30685 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:17 verbose #30686 > > │ ### new_request_post │ 00:21:17 verbose #30687 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:17 verbose #30688 > > 00:21:17 verbose #30689 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:17 verbose #30690 > > inl new_request_post (url : string) : request_builder = 00:21:17 verbose #30691 > > inl url = join url 00:21:17 verbose #30692 > > inl url = url |> sm'.to_std_string 00:21:17 verbose #30693 > > inl url = join url 00:21:17 verbose #30694 > > !\($'"reqwest_wasm::Client::builder().build().map_err(|err| 00:21:17 verbose #30695 > > err.to_string())?.post(!url)"') 00:21:17 verbose #30696 > > 00:21:17 verbose #30697 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:17 verbose #30698 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:17 verbose #30699 > > │ ### request_send │ 00:21:17 verbose #30700 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:17 verbose #30701 > > 00:21:17 verbose #30702 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:17 verbose #30703 > > inl request_send (request : request_builder) : async.future_pin (resultm.result' 00:21:17 verbose #30704 > > reqwest_response reqwest_error) = 00:21:17 verbose #30705 > > inl request = join request 00:21:17 verbose #30706 > > !\($'"Box::pin(reqwest_wasm::RequestBuilder::send(!request))"') 00:21:17 verbose #30707 > > 00:21:17 verbose #30708 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:17 verbose #30709 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:17 verbose #30710 > > │ ### request_body │ 00:21:17 verbose #30711 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:17 verbose #30712 > > 00:21:17 verbose #30713 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:17 verbose #30714 > > inl request_body (body : string) (request : request_builder) : request_builder = 00:21:17 verbose #30715 > > inl body = body |> sm'.to_std_string 00:21:17 verbose #30716 > > !\($'"reqwest_wasm::RequestBuilder::body(!request, !body)"') 00:21:17 verbose #30717 > > 00:21:17 verbose #30718 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:17 verbose #30719 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:17 verbose #30720 > > │ ### request_header │ 00:21:17 verbose #30721 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:17 verbose #30722 > > 00:21:17 verbose #30723 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:17 verbose #30724 > > inl request_header (key : string) (value : string) (request : request_builder) : 00:21:17 verbose #30725 > > request_builder = 00:21:17 verbose #30726 > > inl request = join request 00:21:17 verbose #30727 > > inl key = key |> sm'.to_std_string 00:21:17 verbose #30728 > > inl value = value |> sm'.to_std_string 00:21:17 verbose #30729 > > !\($'"reqwest_wasm::RequestBuilder::header(!request, !key, !value)"') 00:21:17 verbose #30730 > > 00:21:17 verbose #30731 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:17 verbose #30732 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:17 verbose #30733 > > │ ### request_json │ 00:21:17 verbose #30734 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:17 verbose #30735 > > 00:21:17 verbose #30736 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:17 verbose #30737 > > inl request_json forall t. (obj : t) (request : request_builder) : 00:21:17 verbose #30738 > > request_builder = 00:21:17 verbose #30739 > > !\($'"reqwest_wasm::RequestBuilder::json(!request, &!obj)"') 00:21:18 verbose #30740 > > 00:21:18 verbose #30741 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:18 verbose #30742 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:18 verbose #30743 > > │ ### response_text │ 00:21:18 verbose #30744 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:18 verbose #30745 > > 00:21:18 verbose #30746 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:18 verbose #30747 > > inl response_text (response : reqwest_response) : async.future_pin 00:21:18 verbose #30748 > > (resultm.result' sm'.std_string reqwest_error) = 00:21:18 verbose #30749 > > !\($'"Box::pin(reqwest_wasm::Response::text(!response))"') 00:21:18 verbose #30750 > > 00:21:18 verbose #30751 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:18 verbose #30752 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:18 verbose #30753 > > │ ## fsharp │ 00:21:18 verbose #30754 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:18 verbose #30755 > > 00:21:18 verbose #30756 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:18 verbose #30757 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:18 verbose #30758 > > │ ### tcp_client │ 00:21:18 verbose #30759 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:18 verbose #30760 > > 00:21:18 verbose #30761 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:18 verbose #30762 > > nominal tcp_client = $'System.Net.Sockets.TcpClient' 00:21:18 verbose #30763 > > 00:21:18 verbose #30764 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:18 verbose #30765 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:18 verbose #30766 > > │ ### new_tcp_client │ 00:21:18 verbose #30767 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:18 verbose #30768 > > 00:21:18 verbose #30769 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:18 verbose #30770 > > inl new_tcp_client () : tcp_client = 00:21:18 verbose #30771 > > $'new `tcp_client ()' 00:21:18 verbose #30772 > > 00:21:18 verbose #30773 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:18 verbose #30774 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:18 verbose #30775 > > │ ### ip_address │ 00:21:18 verbose #30776 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:18 verbose #30777 > > 00:21:18 verbose #30778 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:18 verbose #30779 > > nominal ip_address = $'System.Net.IPAddress' 00:21:18 verbose #30780 > > 00:21:18 verbose #30781 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:18 verbose #30782 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:18 verbose #30783 > > │ ### ip_address_parse │ 00:21:18 verbose #30784 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:18 verbose #30785 > > 00:21:18 verbose #30786 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:18 verbose #30787 > > inl ip_address_parse (s : string) : ip_address = 00:21:18 verbose #30788 > > s |> $'`ip_address.Parse' 00:21:18 verbose #30789 > > 00:21:18 verbose #30790 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:18 verbose #30791 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:18 verbose #30792 > > │ ### tcp_listener │ 00:21:18 verbose #30793 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:18 verbose #30794 > > 00:21:18 verbose #30795 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:18 verbose #30796 > > nominal tcp_listener = $'System.Net.Sockets.TcpListener' 00:21:18 verbose #30797 > > 00:21:18 verbose #30798 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:18 verbose #30799 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:18 verbose #30800 > > │ ### new_tcp_listener │ 00:21:18 verbose #30801 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:18 verbose #30802 > > 00:21:18 verbose #30803 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:18 verbose #30804 > > inl new_tcp_listener (ip_address : ip_address) (port : i32) : tcp_listener = 00:21:18 verbose #30805 > > $'new `tcp_listener (!ip_address, !port)' 00:21:18 verbose #30806 > > 00:21:18 verbose #30807 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:18 verbose #30808 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:18 verbose #30809 > > │ ### listener_start │ 00:21:18 verbose #30810 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:18 verbose #30811 > > 00:21:18 verbose #30812 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:18 verbose #30813 > > inl listener_start (listener : tcp_listener) : () = 00:21:18 verbose #30814 > > $'!listener.Start' () 00:21:19 verbose #30815 > > 00:21:19 verbose #30816 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:19 verbose #30817 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:19 verbose #30818 > > │ ### listener_stop │ 00:21:19 verbose #30819 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:19 verbose #30820 > > 00:21:19 verbose #30821 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:19 verbose #30822 > > inl listener_stop (listener : tcp_listener) : () = 00:21:19 verbose #30823 > > $'!listener.Stop' () 00:21:19 verbose #30824 > > 00:21:19 verbose #30825 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:19 verbose #30826 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:19 verbose #30827 > > │ ### client_connect_async │ 00:21:19 verbose #30828 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:19 verbose #30829 > > 00:21:19 verbose #30830 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:19 verbose #30831 > > inl client_connect_async 00:21:19 verbose #30832 > > (host : string) 00:21:19 verbose #30833 > > (port : i32) 00:21:19 verbose #30834 > > (ct : threading.cancellation_token) 00:21:19 verbose #30835 > > (client : tcp_client) 00:21:19 verbose #30836 > > : async.value_task 00:21:19 verbose #30837 > > = 00:21:19 verbose #30838 > > $'!client.ConnectAsync (!host, !port, !ct)' 00:21:19 verbose #30839 > > 00:21:19 verbose #30840 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:19 verbose #30841 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:19 verbose #30842 > > │ ### test_port_open │ 00:21:19 verbose #30843 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:19 verbose #30844 > > 00:21:19 verbose #30845 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:19 verbose #30846 > > inl test_port_open host port : _ bool = async.new_async fun () => 00:21:19 verbose #30847 > > inl ct = async.cancellation_token () |> async.let' 00:21:19 verbose #30848 > > inl client = new_tcp_client () |> use 00:21:19 verbose #30849 > > try_unit 00:21:19 verbose #30850 > > fun () => 00:21:19 verbose #30851 > > client |> client_connect_async host port ct |> 00:21:19 verbose #30852 > > async.await_value_task_unit |> async.do 00:21:19 verbose #30853 > > return true 00:21:19 verbose #30854 > > fun ex => 00:21:19 verbose #30855 > > inl ex = ex |> sm'.format_exception 00:21:19 verbose #30856 > > trace Verbose 00:21:19 verbose #30857 > > fun () => $'$"networking.test_port_open"' 00:21:19 verbose #30858 > > fun () => { port ex } 00:21:19 verbose #30859 > > return false 00:21:19 verbose #30860 > > 00:21:19 verbose #30861 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:19 verbose #30862 > > //// test 00:21:19 verbose #30863 > > 00:21:19 verbose #30864 > > test_port_open "127.0.0.1" 65536 00:21:19 verbose #30865 > > |> async.run_with_timeout 120 00:21:19 verbose #30866 > > |> _assert_eq (Some false) 00:21:21 verbose #30867 > > 00:21:21 verbose #30868 > > ╭─[ 2.00s - stdout ]───────────────────────────────────────────────────────────╮ 00:21:21 verbose #30869 > > │ 00:00:00 verbose #1 networking.test_port_open / { port = 65536; ex = │ 00:21:21 verbose #30870 > > │ System.ArgumentOutOfRangeException: Specified argument was out of the range │ 00:21:21 verbose #30871 > > │ of valid values. (Parameter 'port') } │ 00:21:21 verbose #30872 > > │ __assert_eq / actual: US4_0 false / expected: US4_0 false │ 00:21:21 verbose #30873 > > │ │ 00:21:21 verbose #30874 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:21 verbose #30875 > > 00:21:21 verbose #30876 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:21 verbose #30877 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:21 verbose #30878 > > │ ### test_port_open_timeout │ 00:21:21 verbose #30879 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:21 verbose #30880 > > 00:21:21 verbose #30881 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:21 verbose #30882 > > inl test_port_open_timeout timeout host port : _ bool = async.new_async_unit fun 00:21:21 verbose #30883 > > () => 00:21:21 verbose #30884 > > test_port_open host port 00:21:21 verbose #30885 > > |> async.run_with_timeout_async timeout 00:21:21 verbose #30886 > > |> async.let' 00:21:21 verbose #30887 > > |> function 00:21:21 verbose #30888 > > | None => false 00:21:21 verbose #30889 > > | Some result => result 00:21:21 verbose #30890 > > |> return 00:21:21 verbose #30891 > > 00:21:21 verbose #30892 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:21 verbose #30893 > > //// test 00:21:21 verbose #30894 > > 00:21:21 verbose #30895 > > test_port_open_timeout 120 "127.0.0.1" 65535 00:21:21 verbose #30896 > > |> async.run_synchronously 00:21:21 verbose #30897 > > |> _assert_eq false 00:21:22 verbose #30898 > > 00:21:22 verbose #30899 > > ╭─[ 982.30ms - stdout ]────────────────────────────────────────────────────────╮ 00:21:22 verbose #30900 > > │ 00:00:00 verbose #1 networking.test_port_open / { port = 65535; ex = │ 00:21:22 verbose #30901 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:22 verbose #30902 > > │ } │ 00:21:22 verbose #30903 > > │ __assert_eq / actual: false / expected: false │ 00:21:22 verbose #30904 > > │ │ 00:21:22 verbose #30905 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:22 verbose #30906 > > 00:21:22 verbose #30907 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:22 verbose #30908 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:22 verbose #30909 > > │ ### wait_for_port_access │ 00:21:22 verbose #30910 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:22 verbose #30911 > > 00:21:22 verbose #30912 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:22 verbose #30913 > > inl wait_for_port_access timeout status host port : _ i64 = 00:21:22 verbose #30914 > > let rec loop retry : _ i64 = async.new_async_unit fun () => 00:21:22 verbose #30915 > > inl isPortOpen = 00:21:22 verbose #30916 > > match timeout |> optionm'.unbox with 00:21:22 verbose #30917 > > | None => test_port_open host port 00:21:22 verbose #30918 > > | Some timeout => test_port_open_timeout timeout host port 00:21:22 verbose #30919 > > |> async.let' 00:21:22 verbose #30920 > > 00:21:22 verbose #30921 > > fix_condition 00:21:22 verbose #30922 > > fun () => isPortOpen = status 00:21:22 verbose #30923 > > fun () => retry |> return 00:21:22 verbose #30924 > > fun () => 00:21:22 verbose #30925 > > if retry % 100 = 0 then 00:21:22 verbose #30926 > > trace Verbose 00:21:22 verbose #30927 > > fun () => "networking.wait_for_port_access" 00:21:22 verbose #30928 > > fun () => { port retry timeout status } 00:21:22 verbose #30929 > > async.sleep 10 |> async.do 00:21:22 verbose #30930 > > loop (retry + 1) |> async.return_await 00:21:22 verbose #30931 > > loop 0i64 00:21:22 verbose #30932 > > 00:21:22 verbose #30933 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:22 verbose #30934 > > //// test 00:21:22 verbose #30935 > > 00:21:22 verbose #30936 > > inl lock_port host port = async.new_async fun () => 00:21:22 verbose #30937 > > trace Debug (fun () => "_1") id 00:21:22 verbose #30938 > > async.sleep 5000 |> async.do 00:21:22 verbose #30939 > > inl listener = new_tcp_listener (host |> ip_address_parse) port |> use 00:21:22 verbose #30940 > > trace Debug (fun () => "_2") id 00:21:22 verbose #30941 > > listener |> listener_start 00:21:22 verbose #30942 > > trace Debug (fun () => "_3") id 00:21:22 verbose #30943 > > async.sleep 2000 |> async.do 00:21:22 verbose #30944 > > trace Debug (fun () => "_4") id 00:21:22 verbose #30945 > > $'!listener.Stop' () 00:21:22 verbose #30946 > > trace Debug (fun () => "_5") id 00:21:22 verbose #30947 > > 00:21:22 verbose #30948 > > inl host = "127.0.0.1" 00:21:22 verbose #30949 > > inl port = 5555i32 00:21:22 verbose #30950 > > 00:21:22 verbose #30951 > > fun () => 00:21:22 verbose #30952 > > trace Debug (fun () => "1") id 00:21:22 verbose #30953 > > inl child = lock_port host port |> async.start_child |> async.let' 00:21:22 verbose #30954 > > trace Debug (fun () => "2") id 00:21:22 verbose #30955 > > async.sleep 1 |> async.do 00:21:22 verbose #30956 > > trace Debug (fun () => "3") id 00:21:22 verbose #30957 > > inl retries1 = wait_for_port_access (None |> optionm'.box) true host port |> 00:21:22 verbose #30958 > > async.let' 00:21:22 verbose #30959 > > trace Debug (fun () => "4") id 00:21:22 verbose #30960 > > inl retries2 = wait_for_port_access (None |> optionm'.box) false host port 00:21:22 verbose #30961 > > |> async.let' 00:21:22 verbose #30962 > > trace Debug (fun () => "5") id 00:21:22 verbose #30963 > > child |> async.do 00:21:22 verbose #30964 > > trace Debug (fun () => "6") id 00:21:22 verbose #30965 > > (retries1, retries2) |> return 00:21:22 verbose #30966 > > |> async.new_async_unit 00:21:22 verbose #30967 > > |> async.run_with_timeout 20000 00:21:22 verbose #30968 > > |> function 00:21:22 verbose #30969 > > | Some (retries1, retries2) => 00:21:22 verbose #30970 > > retries1 00:21:22 verbose #30971 > > |> _assert_between 00:21:22 verbose #30972 > > if platform.is_windows () then 2i64 else 2 00:21:22 verbose #30973 > > if platform.is_windows () then 5 else 1500 00:21:22 verbose #30974 > > 00:21:22 verbose #30975 > > retries2 00:21:22 verbose #30976 > > |> _assert_between 00:21:22 verbose #30977 > > if platform.is_windows () then 80i64 else 80 00:21:22 verbose #30978 > > if platform.is_windows () then 200 else 600 00:21:22 verbose #30979 > > 00:21:22 verbose #30980 > > true 00:21:22 verbose #30981 > > | _ => false 00:21:22 verbose #30982 > > |> _assert_eq true 00:21:32 verbose #30983 > > 00:21:32 verbose #30984 > > ╭─[ 10.28s - stdout ]──────────────────────────────────────────────────────────╮ 00:21:32 verbose #30985 > > │ 00:00:00 debug #1 1 │ 00:21:32 verbose #30986 > > │ 00:00:00 debug #3 _1 │ 00:21:32 verbose #30987 > > │ 00:00:00 debug #3 2 │ 00:21:32 verbose #30988 > > │ 00:00:00 debug #4 3 │ 00:21:32 verbose #30989 > > │ 00:00:00 verbose #5 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #30990 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #30991 > > │ } │ 00:21:32 verbose #30992 > > │ 00:00:00 verbose #6 networking.wait_for_port_access / { port = 5555; │ 00:21:32 verbose #30993 > > │ retry = 0; timeout = None; status = true } │ 00:21:32 verbose #30994 > > │ 00:00:00 verbose #7 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #30995 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #30996 > > │ } │ 00:21:32 verbose #30997 > > │ 00:00:00 verbose #8 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #30998 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #30999 > > │ } │ 00:21:32 verbose #31000 > > │ 00:00:00 verbose #9 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31001 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31002 > > │ } │ 00:21:32 verbose #31003 > > │ 00:00:00 verbose #10 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31004 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31005 > > │ } │ 00:21:32 verbose #31006 > > │ 00:00:00 verbose #11 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31007 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31008 > > │ } │ 00:21:32 verbose #31009 > > │ 00:00:00 verbose #12 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31010 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31011 > > │ } │ 00:21:32 verbose #31012 > > │ 00:00:00 verbose #13 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31013 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31014 > > │ } │ 00:21:32 verbose #31015 > > │ 00:00:00 verbose #14 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31016 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31017 > > │ } │ 00:21:32 verbose #31018 > > │ 00:00:00 verbose #15 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31019 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31020 > > │ } │ 00:21:32 verbose #31021 > > │ 00:00:00 verbose #16 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31022 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31023 > > │ } │ 00:21:32 verbose #31024 > > │ 00:00:00 verbose #17 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31025 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31026 > > │ } │ 00:21:32 verbose #31027 > > │ 00:00:00 verbose #18 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31028 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31029 > > │ } │ 00:21:32 verbose #31030 > > │ 00:00:00 verbose #19 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31031 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31032 > > │ } │ 00:21:32 verbose #31033 > > │ 00:00:00 verbose #20 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31034 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31035 > > │ } │ 00:21:32 verbose #31036 > > │ 00:00:00 verbose #21 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31037 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31038 > > │ } │ 00:21:32 verbose #31039 > > │ 00:00:00 verbose #22 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31040 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31041 > > │ } │ 00:21:32 verbose #31042 > > │ 00:00:00 verbose #23 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31043 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31044 > > │ } │ 00:21:32 verbose #31045 > > │ 00:00:00 verbose #24 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31046 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31047 > > │ } │ 00:21:32 verbose #31048 > > │ 00:00:00 verbose #25 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31049 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31050 > > │ } │ 00:21:32 verbose #31051 > > │ 00:00:00 verbose #26 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31052 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31053 > > │ } │ 00:21:32 verbose #31054 > > │ 00:00:00 verbose #27 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31055 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31056 > > │ } │ 00:21:32 verbose #31057 > > │ 00:00:00 verbose #28 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31058 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31059 > > │ } │ 00:21:32 verbose #31060 > > │ 00:00:00 verbose #29 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31061 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31062 > > │ } │ 00:21:32 verbose #31063 > > │ 00:00:00 verbose #30 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31064 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31065 > > │ } │ 00:21:32 verbose #31066 > > │ 00:00:00 verbose #31 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31067 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31068 > > │ } │ 00:21:32 verbose #31069 > > │ 00:00:00 verbose #32 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31070 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31071 > > │ } │ 00:21:32 verbose #31072 > > │ 00:00:00 verbose #33 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31073 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31074 > > │ } │ 00:21:32 verbose #31075 > > │ 00:00:00 verbose #34 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31076 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31077 > > │ } │ 00:21:32 verbose #31078 > > │ 00:00:00 verbose #35 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31079 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31080 > > │ } │ 00:21:32 verbose #31081 > > │ 00:00:00 verbose #36 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31082 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31083 > > │ } │ 00:21:32 verbose #31084 > > │ 00:00:00 verbose #37 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31085 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31086 > > │ } │ 00:21:32 verbose #31087 > > │ 00:00:00 verbose #38 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31088 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31089 > > │ } │ 00:21:32 verbose #31090 > > │ 00:00:00 verbose #39 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31091 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31092 > > │ } │ 00:21:32 verbose #31093 > > │ 00:00:00 verbose #40 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31094 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31095 > > │ } │ 00:21:32 verbose #31096 > > │ 00:00:00 verbose #41 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31097 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31098 > > │ } │ 00:21:32 verbose #31099 > > │ 00:00:00 verbose #42 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31100 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31101 > > │ } │ 00:21:32 verbose #31102 > > │ 00:00:00 verbose #43 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31103 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31104 > > │ } │ 00:21:32 verbose #31105 > > │ 00:00:00 verbose #44 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31106 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31107 > > │ } │ 00:21:32 verbose #31108 > > │ 00:00:00 verbose #45 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31109 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31110 > > │ } │ 00:21:32 verbose #31111 > > │ 00:00:00 verbose #46 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31112 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31113 > > │ } │ 00:21:32 verbose #31114 > > │ 00:00:00 verbose #47 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31115 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31116 > > │ } │ 00:21:32 verbose #31117 > > │ 00:00:00 verbose #48 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31118 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31119 > > │ } │ 00:21:32 verbose #31120 > > │ 00:00:00 verbose #49 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31121 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31122 > > │ } │ 00:21:32 verbose #31123 > > │ 00:00:00 verbose #50 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31124 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31125 > > │ } │ 00:21:32 verbose #31126 > > │ 00:00:00 verbose #51 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31127 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31128 > > │ } │ 00:21:32 verbose #31129 > > │ 00:00:00 verbose #52 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31130 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31131 > > │ } │ 00:21:32 verbose #31132 > > │ 00:00:00 verbose #53 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31133 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31134 > > │ } │ 00:21:32 verbose #31135 > > │ 00:00:00 verbose #54 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31136 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31137 > > │ } │ 00:21:32 verbose #31138 > > │ 00:00:00 verbose #55 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31139 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31140 > > │ } │ 00:21:32 verbose #31141 > > │ 00:00:00 verbose #56 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31142 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31143 > > │ } │ 00:21:32 verbose #31144 > > │ 00:00:00 verbose #57 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31145 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31146 > > │ } │ 00:21:32 verbose #31147 > > │ 00:00:00 verbose #58 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31148 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31149 > > │ } │ 00:21:32 verbose #31150 > > │ 00:00:00 verbose #59 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31151 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31152 > > │ } │ 00:21:32 verbose #31153 > > │ 00:00:00 verbose #60 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31154 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31155 > > │ } │ 00:21:32 verbose #31156 > > │ 00:00:00 verbose #61 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31157 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31158 > > │ } │ 00:21:32 verbose #31159 > > │ 00:00:00 verbose #62 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31160 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31161 > > │ } │ 00:21:32 verbose #31162 > > │ 00:00:00 verbose #63 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31163 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31164 > > │ } │ 00:21:32 verbose #31165 > > │ 00:00:00 verbose #64 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31166 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31167 > > │ } │ 00:21:32 verbose #31168 > > │ 00:00:00 verbose #65 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31169 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31170 > > │ } │ 00:21:32 verbose #31171 > > │ 00:00:00 verbose #66 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31172 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31173 > > │ } │ 00:21:32 verbose #31174 > > │ 00:00:00 verbose #67 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31175 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31176 > > │ } │ 00:21:32 verbose #31177 > > │ 00:00:00 verbose #68 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31178 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31179 > > │ } │ 00:21:32 verbose #31180 > > │ 00:00:00 verbose #69 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31181 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31182 > > │ } │ 00:21:32 verbose #31183 > > │ 00:00:00 verbose #70 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31184 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31185 > > │ } │ 00:21:32 verbose #31186 > > │ 00:00:00 verbose #71 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31187 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31188 > > │ } │ 00:21:32 verbose #31189 > > │ 00:00:00 verbose #72 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31190 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31191 > > │ } │ 00:21:32 verbose #31192 > > │ 00:00:00 verbose #73 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31193 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31194 > > │ } │ 00:21:32 verbose #31195 > > │ 00:00:00 verbose #74 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31196 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31197 > > │ } │ 00:21:32 verbose #31198 > > │ 00:00:00 verbose #75 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31199 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31200 > > │ } │ 00:21:32 verbose #31201 > > │ 00:00:00 verbose #76 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31202 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31203 > > │ } │ 00:21:32 verbose #31204 > > │ 00:00:00 verbose #77 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31205 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31206 > > │ } │ 00:21:32 verbose #31207 > > │ 00:00:00 verbose #78 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31208 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31209 > > │ } │ 00:21:32 verbose #31210 > > │ 00:00:00 verbose #79 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31211 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31212 > > │ } │ 00:21:32 verbose #31213 > > │ 00:00:00 verbose #80 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31214 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31215 > > │ } │ 00:21:32 verbose #31216 > > │ 00:00:00 verbose #81 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31217 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31218 > > │ } │ 00:21:32 verbose #31219 > > │ 00:00:00 verbose #82 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31220 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31221 > > │ } │ 00:21:32 verbose #31222 > > │ 00:00:00 verbose #83 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31223 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31224 > > │ } │ 00:21:32 verbose #31225 > > │ 00:00:00 verbose #84 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31226 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31227 > > │ } │ 00:21:32 verbose #31228 > > │ 00:00:00 verbose #85 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31229 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31230 > > │ } │ 00:21:32 verbose #31231 > > │ 00:00:00 verbose #86 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31232 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31233 > > │ } │ 00:21:32 verbose #31234 > > │ 00:00:00 verbose #87 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31235 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31236 > > │ } │ 00:21:32 verbose #31237 > > │ 00:00:01 verbose #88 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31238 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31239 > > │ } │ 00:21:32 verbose #31240 > > │ 00:00:01 verbose #89 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31241 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31242 > > │ } │ 00:21:32 verbose #31243 > > │ 00:00:01 verbose #90 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31244 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31245 > > │ } │ 00:21:32 verbose #31246 > > │ 00:00:01 verbose #91 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31247 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31248 > > │ } │ 00:21:32 verbose #31249 > > │ 00:00:01 verbose #92 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31250 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31251 > > │ } │ 00:21:32 verbose #31252 > > │ 00:00:01 verbose #93 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31253 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31254 > > │ } │ 00:21:32 verbose #31255 > > │ 00:00:01 verbose #94 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31256 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31257 > > │ } │ 00:21:32 verbose #31258 > > │ 00:00:01 verbose #95 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31259 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31260 > > │ } │ 00:21:32 verbose #31261 > > │ 00:00:01 verbose #96 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31262 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31263 > > │ } │ 00:21:32 verbose #31264 > > │ 00:00:01 verbose #97 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31265 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31266 > > │ } │ 00:21:32 verbose #31267 > > │ 00:00:01 verbose #98 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31268 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31269 > > │ } │ 00:21:32 verbose #31270 > > │ 00:00:01 verbose #99 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31271 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31272 > > │ } │ 00:21:32 verbose #31273 > > │ 00:00:01 verbose #100 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31274 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31275 > > │ } │ 00:21:32 verbose #31276 > > │ 00:00:01 verbose #101 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31277 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31278 > > │ } │ 00:21:32 verbose #31279 > > │ 00:00:01 verbose #102 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31280 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31281 > > │ } │ 00:21:32 verbose #31282 > > │ 00:00:01 verbose #103 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31283 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31284 > > │ } │ 00:21:32 verbose #31285 > > │ 00:00:01 verbose #104 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31286 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31287 > > │ } │ 00:21:32 verbose #31288 > > │ 00:00:01 verbose #105 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31289 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31290 > > │ } │ 00:21:32 verbose #31291 > > │ 00:00:01 verbose #106 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31292 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31293 > > │ } │ 00:21:32 verbose #31294 > > │ 00:00:01 verbose #107 networking.wait_for_port_access / { port = 5555; │ 00:21:32 verbose #31295 > > │ retry = 100; timeout = None; status = true } │ 00:21:32 verbose #31296 > > │ 00:00:01 verbose #108 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31297 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31298 > > │ } │ 00:21:32 verbose #31299 > > │ 00:00:01 verbose #109 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31300 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31301 > > │ } │ 00:21:32 verbose #31302 > > │ 00:00:01 verbose #110 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31303 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31304 > > │ } │ 00:21:32 verbose #31305 > > │ 00:00:01 verbose #111 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31306 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31307 > > │ } │ 00:21:32 verbose #31308 > > │ 00:00:01 verbose #112 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31309 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31310 > > │ } │ 00:21:32 verbose #31311 > > │ 00:00:01 verbose #113 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31312 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31313 > > │ } │ 00:21:32 verbose #31314 > > │ 00:00:01 verbose #114 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31315 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31316 > > │ } │ 00:21:32 verbose #31317 > > │ 00:00:01 verbose #115 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31318 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31319 > > │ } │ 00:21:32 verbose #31320 > > │ 00:00:01 verbose #116 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31321 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31322 > > │ } │ 00:21:32 verbose #31323 > > │ 00:00:01 verbose #117 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31324 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31325 > > │ } │ 00:21:32 verbose #31326 > > │ 00:00:01 verbose #118 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31327 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31328 > > │ } │ 00:21:32 verbose #31329 > > │ 00:00:01 verbose #119 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31330 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31331 > > │ } │ 00:21:32 verbose #31332 > > │ 00:00:01 verbose #120 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31333 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31334 > > │ } │ 00:21:32 verbose #31335 > > │ 00:00:01 verbose #121 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31336 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31337 > > │ } │ 00:21:32 verbose #31338 > > │ 00:00:01 verbose #122 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31339 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31340 > > │ } │ 00:21:32 verbose #31341 > > │ 00:00:01 verbose #123 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31342 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31343 > > │ } │ 00:21:32 verbose #31344 > > │ 00:00:01 verbose #124 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31345 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31346 > > │ } │ 00:21:32 verbose #31347 > > │ 00:00:01 verbose #125 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31348 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31349 > > │ } │ 00:21:32 verbose #31350 > > │ 00:00:01 verbose #126 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31351 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31352 > > │ } │ 00:21:32 verbose #31353 > > │ 00:00:01 verbose #127 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31354 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31355 > > │ } │ 00:21:32 verbose #31356 > > │ 00:00:01 verbose #128 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31357 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31358 > > │ } │ 00:21:32 verbose #31359 > > │ 00:00:01 verbose #129 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31360 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31361 > > │ } │ 00:21:32 verbose #31362 > > │ 00:00:01 verbose #130 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31363 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31364 > > │ } │ 00:21:32 verbose #31365 > > │ 00:00:01 verbose #131 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31366 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31367 > > │ } │ 00:21:32 verbose #31368 > > │ 00:00:01 verbose #132 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31369 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31370 > > │ } │ 00:21:32 verbose #31371 > > │ 00:00:01 verbose #133 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31372 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31373 > > │ } │ 00:21:32 verbose #31374 > > │ 00:00:01 verbose #134 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31375 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31376 > > │ } │ 00:21:32 verbose #31377 > > │ 00:00:01 verbose #135 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31378 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31379 > > │ } │ 00:21:32 verbose #31380 > > │ 00:00:01 verbose #136 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31381 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31382 > > │ } │ 00:21:32 verbose #31383 > > │ 00:00:01 verbose #137 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31384 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31385 > > │ } │ 00:21:32 verbose #31386 > > │ 00:00:01 verbose #138 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31387 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31388 > > │ } │ 00:21:32 verbose #31389 > > │ 00:00:01 verbose #139 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31390 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31391 > > │ } │ 00:21:32 verbose #31392 > > │ 00:00:01 verbose #140 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31393 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31394 > > │ } │ 00:21:32 verbose #31395 > > │ 00:00:01 verbose #141 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31396 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31397 > > │ } │ 00:21:32 verbose #31398 > > │ 00:00:01 verbose #142 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31399 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31400 > > │ } │ 00:21:32 verbose #31401 > > │ 00:00:01 verbose #143 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31402 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31403 > > │ } │ 00:21:32 verbose #31404 > > │ 00:00:01 verbose #144 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31405 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31406 > > │ } │ 00:21:32 verbose #31407 > > │ 00:00:01 verbose #145 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31408 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31409 > > │ } │ 00:21:32 verbose #31410 > > │ 00:00:01 verbose #146 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31411 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31412 > > │ } │ 00:21:32 verbose #31413 > > │ 00:00:01 verbose #147 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31414 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31415 > > │ } │ 00:21:32 verbose #31416 > > │ 00:00:01 verbose #148 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31417 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31418 > > │ } │ 00:21:32 verbose #31419 > > │ 00:00:01 verbose #149 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31420 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31421 > > │ } │ 00:21:32 verbose #31422 > > │ 00:00:01 verbose #150 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31423 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31424 > > │ } │ 00:21:32 verbose #31425 > > │ 00:00:01 verbose #151 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31426 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31427 > > │ } │ 00:21:32 verbose #31428 > > │ 00:00:01 verbose #152 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31429 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31430 > > │ } │ 00:21:32 verbose #31431 > > │ 00:00:01 verbose #153 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31432 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31433 > > │ } │ 00:21:32 verbose #31434 > > │ 00:00:01 verbose #154 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31435 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31436 > > │ } │ 00:21:32 verbose #31437 > > │ 00:00:01 verbose #155 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31438 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31439 > > │ } │ 00:21:32 verbose #31440 > > │ 00:00:01 verbose #156 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31441 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31442 > > │ } │ 00:21:32 verbose #31443 > > │ 00:00:01 verbose #157 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31444 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31445 > > │ } │ 00:21:32 verbose #31446 > > │ 00:00:01 verbose #158 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31447 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31448 > > │ } │ 00:21:32 verbose #31449 > > │ 00:00:01 verbose #159 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31450 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31451 > > │ } │ 00:21:32 verbose #31452 > > │ 00:00:01 verbose #160 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31453 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31454 > > │ } │ 00:21:32 verbose #31455 > > │ 00:00:01 verbose #161 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31456 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31457 > > │ } │ 00:21:32 verbose #31458 > > │ 00:00:01 verbose #162 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31459 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31460 > > │ } │ 00:21:32 verbose #31461 > > │ 00:00:01 verbose #163 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31462 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31463 > > │ } │ 00:21:32 verbose #31464 > > │ 00:00:01 verbose #164 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31465 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31466 > > │ } │ 00:21:32 verbose #31467 > > │ 00:00:01 verbose #165 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31468 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31469 > > │ } │ 00:21:32 verbose #31470 > > │ 00:00:01 verbose #166 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31471 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31472 > > │ } │ 00:21:32 verbose #31473 > > │ 00:00:01 verbose #167 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31474 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31475 > > │ } │ 00:21:32 verbose #31476 > > │ 00:00:01 verbose #168 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31477 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31478 > > │ } │ 00:21:32 verbose #31479 > > │ 00:00:01 verbose #169 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31480 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31481 > > │ } │ 00:21:32 verbose #31482 > > │ 00:00:01 verbose #170 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31483 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31484 > > │ } │ 00:21:32 verbose #31485 > > │ 00:00:01 verbose #171 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31486 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31487 > > │ } │ 00:21:32 verbose #31488 > > │ 00:00:01 verbose #172 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31489 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31490 > > │ } │ 00:21:32 verbose #31491 > > │ 00:00:02 verbose #173 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31492 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31493 > > │ } │ 00:21:32 verbose #31494 > > │ 00:00:02 verbose #174 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31495 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31496 > > │ } │ 00:21:32 verbose #31497 > > │ 00:00:02 verbose #175 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31498 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31499 > > │ } │ 00:21:32 verbose #31500 > > │ 00:00:02 verbose #176 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31501 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31502 > > │ } │ 00:21:32 verbose #31503 > > │ 00:00:02 verbose #177 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31504 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31505 > > │ } │ 00:21:32 verbose #31506 > > │ 00:00:02 verbose #178 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31507 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31508 > > │ } │ 00:21:32 verbose #31509 > > │ 00:00:02 verbose #179 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31510 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31511 > > │ } │ 00:21:32 verbose #31512 > > │ 00:00:02 verbose #180 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31513 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31514 > > │ } │ 00:21:32 verbose #31515 > > │ 00:00:02 verbose #181 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31516 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31517 > > │ } │ 00:21:32 verbose #31518 > > │ 00:00:02 verbose #182 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31519 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31520 > > │ } │ 00:21:32 verbose #31521 > > │ 00:00:02 verbose #183 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31522 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31523 > > │ } │ 00:21:32 verbose #31524 > > │ 00:00:02 verbose #184 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31525 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31526 > > │ } │ 00:21:32 verbose #31527 > > │ 00:00:02 verbose #185 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31528 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31529 > > │ } │ 00:21:32 verbose #31530 > > │ 00:00:02 verbose #186 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31531 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31532 > > │ } │ 00:21:32 verbose #31533 > > │ 00:00:02 verbose #187 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31534 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31535 > > │ } │ 00:21:32 verbose #31536 > > │ 00:00:02 verbose #188 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31537 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31538 > > │ } │ 00:21:32 verbose #31539 > > │ 00:00:02 verbose #189 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31540 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31541 > > │ } │ 00:21:32 verbose #31542 > > │ 00:00:02 verbose #190 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31543 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31544 > > │ } │ 00:21:32 verbose #31545 > > │ 00:00:02 verbose #191 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31546 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31547 > > │ } │ 00:21:32 verbose #31548 > > │ 00:00:02 verbose #192 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31549 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31550 > > │ } │ 00:21:32 verbose #31551 > > │ 00:00:02 verbose #193 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31552 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31553 > > │ } │ 00:21:32 verbose #31554 > > │ 00:00:02 verbose #194 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31555 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31556 > > │ } │ 00:21:32 verbose #31557 > > │ 00:00:02 verbose #195 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31558 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31559 > > │ } │ 00:21:32 verbose #31560 > > │ 00:00:02 verbose #196 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31561 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31562 > > │ } │ 00:21:32 verbose #31563 > > │ 00:00:02 verbose #197 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31564 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31565 > > │ } │ 00:21:32 verbose #31566 > > │ 00:00:02 verbose #198 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31567 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31568 > > │ } │ 00:21:32 verbose #31569 > > │ 00:00:02 verbose #199 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31570 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31571 > > │ } │ 00:21:32 verbose #31572 > > │ 00:00:02 verbose #200 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31573 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31574 > > │ } │ 00:21:32 verbose #31575 > > │ 00:00:02 verbose #201 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31576 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31577 > > │ } │ 00:21:32 verbose #31578 > > │ 00:00:02 verbose #202 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31579 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31580 > > │ } │ 00:21:32 verbose #31581 > > │ 00:00:02 verbose #203 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31582 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31583 > > │ } │ 00:21:32 verbose #31584 > > │ 00:00:02 verbose #204 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31585 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31586 > > │ } │ 00:21:32 verbose #31587 > > │ 00:00:02 verbose #205 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31588 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31589 > > │ } │ 00:21:32 verbose #31590 > > │ 00:00:02 verbose #206 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31591 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31592 > > │ } │ 00:21:32 verbose #31593 > > │ 00:00:02 verbose #207 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31594 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31595 > > │ } │ 00:21:32 verbose #31596 > > │ 00:00:02 verbose #208 networking.wait_for_port_access / { port = 5555; │ 00:21:32 verbose #31597 > > │ retry = 200; timeout = None; status = true } │ 00:21:32 verbose #31598 > > │ 00:00:02 verbose #209 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31599 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31600 > > │ } │ 00:21:32 verbose #31601 > > │ 00:00:02 verbose #210 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31602 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31603 > > │ } │ 00:21:32 verbose #31604 > > │ 00:00:02 verbose #211 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31605 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31606 > > │ } │ 00:21:32 verbose #31607 > > │ 00:00:02 verbose #212 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31608 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31609 > > │ } │ 00:21:32 verbose #31610 > > │ 00:00:02 verbose #213 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31611 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31612 > > │ } │ 00:21:32 verbose #31613 > > │ 00:00:02 verbose #214 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31614 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31615 > > │ } │ 00:21:32 verbose #31616 > > │ 00:00:02 verbose #215 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31617 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31618 > > │ } │ 00:21:32 verbose #31619 > > │ 00:00:02 verbose #216 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31620 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31621 > > │ } │ 00:21:32 verbose #31622 > > │ 00:00:02 verbose #217 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31623 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31624 > > │ } │ 00:21:32 verbose #31625 > > │ 00:00:02 verbose #218 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31626 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31627 > > │ } │ 00:21:32 verbose #31628 > > │ 00:00:02 verbose #219 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31629 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31630 > > │ } │ 00:21:32 verbose #31631 > > │ 00:00:02 verbose #220 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31632 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31633 > > │ } │ 00:21:32 verbose #31634 > > │ 00:00:02 verbose #221 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31635 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31636 > > │ } │ 00:21:32 verbose #31637 > > │ 00:00:02 verbose #222 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31638 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31639 > > │ } │ 00:21:32 verbose #31640 > > │ 00:00:02 verbose #223 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31641 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31642 > > │ } │ 00:21:32 verbose #31643 > > │ 00:00:02 verbose #224 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31644 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31645 > > │ } │ 00:21:32 verbose #31646 > > │ 00:00:02 verbose #225 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31647 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31648 > > │ } │ 00:21:32 verbose #31649 > > │ 00:00:02 verbose #226 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31650 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31651 > > │ } │ 00:21:32 verbose #31652 > > │ 00:00:02 verbose #227 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31653 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31654 > > │ } │ 00:21:32 verbose #31655 > > │ 00:00:02 verbose #228 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31656 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31657 > > │ } │ 00:21:32 verbose #31658 > > │ 00:00:02 verbose #229 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31659 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31660 > > │ } │ 00:21:32 verbose #31661 > > │ 00:00:02 verbose #230 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31662 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31663 > > │ } │ 00:21:32 verbose #31664 > > │ 00:00:02 verbose #231 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31665 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31666 > > │ } │ 00:21:32 verbose #31667 > > │ 00:00:02 verbose #232 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31668 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31669 > > │ } │ 00:21:32 verbose #31670 > > │ 00:00:02 verbose #233 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31671 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31672 > > │ } │ 00:21:32 verbose #31673 > > │ 00:00:02 verbose #234 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31674 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31675 > > │ } │ 00:21:32 verbose #31676 > > │ 00:00:02 verbose #235 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31677 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31678 > > │ } │ 00:21:32 verbose #31679 > > │ 00:00:02 verbose #236 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31680 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31681 > > │ } │ 00:21:32 verbose #31682 > > │ 00:00:02 verbose #237 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31683 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31684 > > │ } │ 00:21:32 verbose #31685 > > │ 00:00:02 verbose #238 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31686 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31687 > > │ } │ 00:21:32 verbose #31688 > > │ 00:00:02 verbose #239 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31689 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31690 > > │ } │ 00:21:32 verbose #31691 > > │ 00:00:02 verbose #240 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31692 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31693 > > │ } │ 00:21:32 verbose #31694 > > │ 00:00:02 verbose #241 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31695 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31696 > > │ } │ 00:21:32 verbose #31697 > > │ 00:00:02 verbose #242 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31698 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31699 > > │ } │ 00:21:32 verbose #31700 > > │ 00:00:02 verbose #243 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31701 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31702 > > │ } │ 00:21:32 verbose #31703 > > │ 00:00:02 verbose #244 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31704 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31705 > > │ } │ 00:21:32 verbose #31706 > > │ 00:00:02 verbose #245 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31707 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31708 > > │ } │ 00:21:32 verbose #31709 > > │ 00:00:02 verbose #246 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31710 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31711 > > │ } │ 00:21:32 verbose #31712 > > │ 00:00:02 verbose #247 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31713 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31714 > > │ } │ 00:21:32 verbose #31715 > > │ 00:00:02 verbose #248 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31716 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31717 > > │ } │ 00:21:32 verbose #31718 > > │ 00:00:02 verbose #249 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31719 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31720 > > │ } │ 00:21:32 verbose #31721 > > │ 00:00:02 verbose #250 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31722 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31723 > > │ } │ 00:21:32 verbose #31724 > > │ 00:00:02 verbose #251 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31725 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31726 > > │ } │ 00:21:32 verbose #31727 > > │ 00:00:02 verbose #252 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31728 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31729 > > │ } │ 00:21:32 verbose #31730 > > │ 00:00:02 verbose #253 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31731 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31732 > > │ } │ 00:21:32 verbose #31733 > > │ 00:00:02 verbose #254 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31734 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31735 > > │ } │ 00:21:32 verbose #31736 > > │ 00:00:02 verbose #255 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31737 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31738 > > │ } │ 00:21:32 verbose #31739 > > │ 00:00:02 verbose #256 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31740 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31741 > > │ } │ 00:21:32 verbose #31742 > > │ 00:00:03 verbose #257 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31743 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31744 > > │ } │ 00:21:32 verbose #31745 > > │ 00:00:03 verbose #258 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31746 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31747 > > │ } │ 00:21:32 verbose #31748 > > │ 00:00:03 verbose #259 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31749 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31750 > > │ } │ 00:21:32 verbose #31751 > > │ 00:00:03 verbose #260 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31752 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31753 > > │ } │ 00:21:32 verbose #31754 > > │ 00:00:03 verbose #261 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31755 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31756 > > │ } │ 00:21:32 verbose #31757 > > │ 00:00:03 verbose #262 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31758 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31759 > > │ } │ 00:21:32 verbose #31760 > > │ 00:00:03 verbose #263 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31761 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31762 > > │ } │ 00:21:32 verbose #31763 > > │ 00:00:03 verbose #264 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31764 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31765 > > │ } │ 00:21:32 verbose #31766 > > │ 00:00:03 verbose #265 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31767 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31768 > > │ } │ 00:21:32 verbose #31769 > > │ 00:00:03 verbose #266 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31770 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31771 > > │ } │ 00:21:32 verbose #31772 > > │ 00:00:03 verbose #267 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31773 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31774 > > │ } │ 00:21:32 verbose #31775 > > │ 00:00:03 verbose #268 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31776 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31777 > > │ } │ 00:21:32 verbose #31778 > > │ 00:00:03 verbose #269 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31779 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31780 > > │ } │ 00:21:32 verbose #31781 > > │ 00:00:03 verbose #270 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31782 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31783 > > │ } │ 00:21:32 verbose #31784 > > │ 00:00:03 verbose #271 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31785 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31786 > > │ } │ 00:21:32 verbose #31787 > > │ 00:00:03 verbose #272 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31788 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31789 > > │ } │ 00:21:32 verbose #31790 > > │ 00:00:03 verbose #273 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31791 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31792 > > │ } │ 00:21:32 verbose #31793 > > │ 00:00:03 verbose #274 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31794 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31795 > > │ } │ 00:21:32 verbose #31796 > > │ 00:00:03 verbose #275 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31797 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31798 > > │ } │ 00:21:32 verbose #31799 > > │ 00:00:03 verbose #276 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31800 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31801 > > │ } │ 00:21:32 verbose #31802 > > │ 00:00:03 verbose #277 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31803 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31804 > > │ } │ 00:21:32 verbose #31805 > > │ 00:00:03 verbose #278 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31806 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31807 > > │ } │ 00:21:32 verbose #31808 > > │ 00:00:03 verbose #279 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31809 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31810 > > │ } │ 00:21:32 verbose #31811 > > │ 00:00:03 verbose #280 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31812 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31813 > > │ } │ 00:21:32 verbose #31814 > > │ 00:00:03 verbose #281 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31815 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31816 > > │ } │ 00:21:32 verbose #31817 > > │ 00:00:03 verbose #282 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31818 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31819 > > │ } │ 00:21:32 verbose #31820 > > │ 00:00:03 verbose #283 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31821 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31822 > > │ } │ 00:21:32 verbose #31823 > > │ 00:00:03 verbose #284 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31824 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31825 > > │ } │ 00:21:32 verbose #31826 > > │ 00:00:03 verbose #285 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31827 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31828 > > │ } │ 00:21:32 verbose #31829 > > │ 00:00:03 verbose #286 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31830 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31831 > > │ } │ 00:21:32 verbose #31832 > > │ 00:00:03 verbose #287 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31833 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31834 > > │ } │ 00:21:32 verbose #31835 > > │ 00:00:03 verbose #288 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31836 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31837 > > │ } │ 00:21:32 verbose #31838 > > │ 00:00:03 verbose #289 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31839 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31840 > > │ } │ 00:21:32 verbose #31841 > > │ 00:00:03 verbose #290 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31842 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31843 > > │ } │ 00:21:32 verbose #31844 > > │ 00:00:03 verbose #291 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31845 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31846 > > │ } │ 00:21:32 verbose #31847 > > │ 00:00:03 verbose #292 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31848 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31849 > > │ } │ 00:21:32 verbose #31850 > > │ 00:00:03 verbose #293 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31851 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31852 > > │ } │ 00:21:32 verbose #31853 > > │ 00:00:03 verbose #294 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31854 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31855 > > │ } │ 00:21:32 verbose #31856 > > │ 00:00:03 verbose #295 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31857 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31858 > > │ } │ 00:21:32 verbose #31859 > > │ 00:00:03 verbose #296 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31860 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31861 > > │ } │ 00:21:32 verbose #31862 > > │ 00:00:03 verbose #297 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31863 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31864 > > │ } │ 00:21:32 verbose #31865 > > │ 00:00:03 verbose #298 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31866 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31867 > > │ } │ 00:21:32 verbose #31868 > > │ 00:00:03 verbose #299 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31869 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31870 > > │ } │ 00:21:32 verbose #31871 > > │ 00:00:03 verbose #300 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31872 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31873 > > │ } │ 00:21:32 verbose #31874 > > │ 00:00:03 verbose #301 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31875 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31876 > > │ } │ 00:21:32 verbose #31877 > > │ 00:00:03 verbose #302 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31878 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31879 > > │ } │ 00:21:32 verbose #31880 > > │ 00:00:03 verbose #303 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31881 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31882 > > │ } │ 00:21:32 verbose #31883 > > │ 00:00:03 verbose #304 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31884 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31885 > > │ } │ 00:21:32 verbose #31886 > > │ 00:00:03 verbose #305 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31887 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31888 > > │ } │ 00:21:32 verbose #31889 > > │ 00:00:03 verbose #306 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31890 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31891 > > │ } │ 00:21:32 verbose #31892 > > │ 00:00:03 verbose #307 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31893 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31894 > > │ } │ 00:21:32 verbose #31895 > > │ 00:00:03 verbose #308 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31896 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31897 > > │ } │ 00:21:32 verbose #31898 > > │ 00:00:03 verbose #309 networking.wait_for_port_access / { port = 5555; │ 00:21:32 verbose #31899 > > │ retry = 300; timeout = None; status = true } │ 00:21:32 verbose #31900 > > │ 00:00:03 verbose #310 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31901 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31902 > > │ } │ 00:21:32 verbose #31903 > > │ 00:00:03 verbose #311 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31904 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31905 > > │ } │ 00:21:32 verbose #31906 > > │ 00:00:03 verbose #312 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31907 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31908 > > │ } │ 00:21:32 verbose #31909 > > │ 00:00:03 verbose #313 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31910 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31911 > > │ } │ 00:21:32 verbose #31912 > > │ 00:00:03 verbose #314 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31913 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31914 > > │ } │ 00:21:32 verbose #31915 > > │ 00:00:03 verbose #315 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31916 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31917 > > │ } │ 00:21:32 verbose #31918 > > │ 00:00:03 verbose #316 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31919 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31920 > > │ } │ 00:21:32 verbose #31921 > > │ 00:00:03 verbose #317 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31922 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31923 > > │ } │ 00:21:32 verbose #31924 > > │ 00:00:03 verbose #318 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31925 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31926 > > │ } │ 00:21:32 verbose #31927 > > │ 00:00:03 verbose #319 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31928 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31929 > > │ } │ 00:21:32 verbose #31930 > > │ 00:00:03 verbose #320 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31931 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31932 > > │ } │ 00:21:32 verbose #31933 > > │ 00:00:03 verbose #321 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31934 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31935 > > │ } │ 00:21:32 verbose #31936 > > │ 00:00:03 verbose #322 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31937 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31938 > > │ } │ 00:21:32 verbose #31939 > > │ 00:00:03 verbose #323 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31940 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31941 > > │ } │ 00:21:32 verbose #31942 > > │ 00:00:03 verbose #324 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31943 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31944 > > │ } │ 00:21:32 verbose #31945 > > │ 00:00:03 verbose #325 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31946 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31947 > > │ } │ 00:21:32 verbose #31948 > > │ 00:00:03 verbose #326 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31949 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31950 > > │ } │ 00:21:32 verbose #31951 > > │ 00:00:03 verbose #327 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31952 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31953 > > │ } │ 00:21:32 verbose #31954 > > │ 00:00:03 verbose #328 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31955 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31956 > > │ } │ 00:21:32 verbose #31957 > > │ 00:00:03 verbose #329 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31958 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31959 > > │ } │ 00:21:32 verbose #31960 > > │ 00:00:03 verbose #330 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31961 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31962 > > │ } │ 00:21:32 verbose #31963 > > │ 00:00:03 verbose #331 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31964 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31965 > > │ } │ 00:21:32 verbose #31966 > > │ 00:00:03 verbose #332 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31967 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31968 > > │ } │ 00:21:32 verbose #31969 > > │ 00:00:03 verbose #333 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31970 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31971 > > │ } │ 00:21:32 verbose #31972 > > │ 00:00:03 verbose #334 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31973 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31974 > > │ } │ 00:21:32 verbose #31975 > > │ 00:00:03 verbose #335 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31976 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31977 > > │ } │ 00:21:32 verbose #31978 > > │ 00:00:03 verbose #336 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31979 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31980 > > │ } │ 00:21:32 verbose #31981 > > │ 00:00:03 verbose #337 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31982 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31983 > > │ } │ 00:21:32 verbose #31984 > > │ 00:00:03 verbose #338 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31985 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31986 > > │ } │ 00:21:32 verbose #31987 > > │ 00:00:03 verbose #339 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31988 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31989 > > │ } │ 00:21:32 verbose #31990 > > │ 00:00:03 verbose #340 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31991 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31992 > > │ } │ 00:21:32 verbose #31993 > > │ 00:00:04 verbose #341 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31994 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31995 > > │ } │ 00:21:32 verbose #31996 > > │ 00:00:04 verbose #342 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #31997 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #31998 > > │ } │ 00:21:32 verbose #31999 > > │ 00:00:04 verbose #343 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32000 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32001 > > │ } │ 00:21:32 verbose #32002 > > │ 00:00:04 verbose #344 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32003 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32004 > > │ } │ 00:21:32 verbose #32005 > > │ 00:00:04 verbose #345 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32006 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32007 > > │ } │ 00:21:32 verbose #32008 > > │ 00:00:04 verbose #346 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32009 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32010 > > │ } │ 00:21:32 verbose #32011 > > │ 00:00:04 verbose #347 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32012 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32013 > > │ } │ 00:21:32 verbose #32014 > > │ 00:00:04 verbose #348 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32015 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32016 > > │ } │ 00:21:32 verbose #32017 > > │ 00:00:04 verbose #349 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32018 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32019 > > │ } │ 00:21:32 verbose #32020 > > │ 00:00:04 verbose #350 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32021 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32022 > > │ } │ 00:21:32 verbose #32023 > > │ 00:00:04 verbose #351 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32024 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32025 > > │ } │ 00:21:32 verbose #32026 > > │ 00:00:04 verbose #352 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32027 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32028 > > │ } │ 00:21:32 verbose #32029 > > │ 00:00:04 verbose #353 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32030 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32031 > > │ } │ 00:21:32 verbose #32032 > > │ 00:00:04 verbose #354 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32033 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32034 > > │ } │ 00:21:32 verbose #32035 > > │ 00:00:04 verbose #355 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32036 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32037 > > │ } │ 00:21:32 verbose #32038 > > │ 00:00:04 verbose #356 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32039 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32040 > > │ } │ 00:21:32 verbose #32041 > > │ 00:00:04 verbose #357 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32042 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32043 > > │ } │ 00:21:32 verbose #32044 > > │ 00:00:04 verbose #358 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32045 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32046 > > │ } │ 00:21:32 verbose #32047 > > │ 00:00:04 verbose #359 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32048 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32049 > > │ } │ 00:21:32 verbose #32050 > > │ 00:00:04 verbose #360 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32051 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32052 > > │ } │ 00:21:32 verbose #32053 > > │ 00:00:04 verbose #361 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32054 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32055 > > │ } │ 00:21:32 verbose #32056 > > │ 00:00:04 verbose #362 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32057 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32058 > > │ } │ 00:21:32 verbose #32059 > > │ 00:00:04 verbose #363 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32060 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32061 > > │ } │ 00:21:32 verbose #32062 > > │ 00:00:04 verbose #364 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32063 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32064 > > │ } │ 00:21:32 verbose #32065 > > │ 00:00:04 verbose #365 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32066 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32067 > > │ } │ 00:21:32 verbose #32068 > > │ 00:00:04 verbose #366 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32069 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32070 > > │ } │ 00:21:32 verbose #32071 > > │ 00:00:04 verbose #367 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32072 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32073 > > │ } │ 00:21:32 verbose #32074 > > │ 00:00:04 verbose #368 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32075 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32076 > > │ } │ 00:21:32 verbose #32077 > > │ 00:00:04 verbose #369 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32078 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32079 > > │ } │ 00:21:32 verbose #32080 > > │ 00:00:04 verbose #370 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32081 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32082 > > │ } │ 00:21:32 verbose #32083 > > │ 00:00:04 verbose #371 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32084 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32085 > > │ } │ 00:21:32 verbose #32086 > > │ 00:00:04 verbose #372 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32087 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32088 > > │ } │ 00:21:32 verbose #32089 > > │ 00:00:04 verbose #373 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32090 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32091 > > │ } │ 00:21:32 verbose #32092 > > │ 00:00:04 verbose #374 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32093 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32094 > > │ } │ 00:21:32 verbose #32095 > > │ 00:00:04 verbose #375 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32096 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32097 > > │ } │ 00:21:32 verbose #32098 > > │ 00:00:04 verbose #376 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32099 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32100 > > │ } │ 00:21:32 verbose #32101 > > │ 00:00:04 verbose #377 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32102 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32103 > > │ } │ 00:21:32 verbose #32104 > > │ 00:00:04 verbose #378 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32105 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32106 > > │ } │ 00:21:32 verbose #32107 > > │ 00:00:04 verbose #379 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32108 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32109 > > │ } │ 00:21:32 verbose #32110 > > │ 00:00:04 verbose #380 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32111 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32112 > > │ } │ 00:21:32 verbose #32113 > > │ 00:00:04 verbose #381 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32114 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32115 > > │ } │ 00:21:32 verbose #32116 > > │ 00:00:04 verbose #382 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32117 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32118 > > │ } │ 00:21:32 verbose #32119 > > │ 00:00:04 verbose #383 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32120 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32121 > > │ } │ 00:21:32 verbose #32122 > > │ 00:00:04 verbose #384 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32123 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32124 > > │ } │ 00:21:32 verbose #32125 > > │ 00:00:04 verbose #385 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32126 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32127 > > │ } │ 00:21:32 verbose #32128 > > │ 00:00:04 verbose #386 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32129 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32130 > > │ } │ 00:21:32 verbose #32131 > > │ 00:00:04 verbose #387 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32132 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32133 > > │ } │ 00:21:32 verbose #32134 > > │ 00:00:04 verbose #388 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32135 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32136 > > │ } │ 00:21:32 verbose #32137 > > │ 00:00:04 verbose #389 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32138 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32139 > > │ } │ 00:21:32 verbose #32140 > > │ 00:00:04 verbose #390 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32141 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32142 > > │ } │ 00:21:32 verbose #32143 > > │ 00:00:04 verbose #391 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32144 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32145 > > │ } │ 00:21:32 verbose #32146 > > │ 00:00:04 verbose #392 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32147 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32148 > > │ } │ 00:21:32 verbose #32149 > > │ 00:00:04 verbose #393 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32150 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32151 > > │ } │ 00:21:32 verbose #32152 > > │ 00:00:04 verbose #394 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32153 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32154 > > │ } │ 00:21:32 verbose #32155 > > │ 00:00:04 verbose #395 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32156 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32157 > > │ } │ 00:21:32 verbose #32158 > > │ 00:00:04 verbose #396 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32159 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32160 > > │ } │ 00:21:32 verbose #32161 > > │ 00:00:04 verbose #397 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32162 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32163 > > │ } │ 00:21:32 verbose #32164 > > │ 00:00:04 verbose #398 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32165 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32166 > > │ } │ 00:21:32 verbose #32167 > > │ 00:00:04 verbose #399 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32168 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32169 > > │ } │ 00:21:32 verbose #32170 > > │ 00:00:04 verbose #400 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32171 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32172 > > │ } │ 00:21:32 verbose #32173 > > │ 00:00:04 verbose #401 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32174 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32175 > > │ } │ 00:21:32 verbose #32176 > > │ 00:00:04 verbose #402 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32177 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32178 > > │ } │ 00:21:32 verbose #32179 > > │ 00:00:04 verbose #403 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32180 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32181 > > │ } │ 00:21:32 verbose #32182 > > │ 00:00:04 verbose #404 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32183 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32184 > > │ } │ 00:21:32 verbose #32185 > > │ 00:00:04 verbose #405 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32186 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32187 > > │ } │ 00:21:32 verbose #32188 > > │ 00:00:04 verbose #406 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32189 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32190 > > │ } │ 00:21:32 verbose #32191 > > │ 00:00:04 verbose #407 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32192 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32193 > > │ } │ 00:21:32 verbose #32194 > > │ 00:00:04 verbose #408 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32195 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32196 > > │ } │ 00:21:32 verbose #32197 > > │ 00:00:04 verbose #409 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32198 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32199 > > │ } │ 00:21:32 verbose #32200 > > │ 00:00:04 verbose #410 networking.wait_for_port_access / { port = 5555; │ 00:21:32 verbose #32201 > > │ retry = 400; timeout = None; status = true } │ 00:21:32 verbose #32202 > > │ 00:00:04 verbose #411 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32203 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32204 > > │ } │ 00:21:32 verbose #32205 > > │ 00:00:04 verbose #412 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32206 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32207 > > │ } │ 00:21:32 verbose #32208 > > │ 00:00:04 verbose #413 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32209 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32210 > > │ } │ 00:21:32 verbose #32211 > > │ 00:00:04 verbose #414 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32212 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32213 > > │ } │ 00:21:32 verbose #32214 > > │ 00:00:04 verbose #415 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32215 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32216 > > │ } │ 00:21:32 verbose #32217 > > │ 00:00:04 verbose #416 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32218 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32219 > > │ } │ 00:21:32 verbose #32220 > > │ 00:00:04 verbose #417 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32221 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32222 > > │ } │ 00:21:32 verbose #32223 > > │ 00:00:04 verbose #418 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32224 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32225 > > │ } │ 00:21:32 verbose #32226 > > │ 00:00:04 verbose #419 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32227 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32228 > > │ } │ 00:21:32 verbose #32229 > > │ 00:00:04 verbose #420 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32230 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32231 > > │ } │ 00:21:32 verbose #32232 > > │ 00:00:04 verbose #421 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32233 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32234 > > │ } │ 00:21:32 verbose #32235 > > │ 00:00:04 verbose #422 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32236 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32237 > > │ } │ 00:21:32 verbose #32238 > > │ 00:00:04 verbose #423 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32239 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32240 > > │ } │ 00:21:32 verbose #32241 > > │ 00:00:04 verbose #424 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32242 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32243 > > │ } │ 00:21:32 verbose #32244 > > │ 00:00:04 verbose #425 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32245 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32246 > > │ } │ 00:21:32 verbose #32247 > > │ 00:00:05 debug #426 _2 │ 00:21:32 verbose #32248 > > │ 00:00:05 debug #427 _3 │ 00:21:32 verbose #32249 > > │ 00:00:05 debug #428 4 │ 00:21:32 verbose #32250 > > │ 00:00:05 verbose #429 networking.wait_for_port_access / { port = 5555; │ 00:21:32 verbose #32251 > > │ retry = 0; timeout = None; status = false } │ 00:21:32 verbose #32252 > > │ 00:00:06 verbose #430 networking.wait_for_port_access / { port = 5555; │ 00:21:32 verbose #32253 > > │ retry = 100; timeout = None; status = false } │ 00:21:32 verbose #32254 > > │ 00:00:07 debug #431 _4 │ 00:21:32 verbose #32255 > > │ 00:00:07 debug #432 _5 │ 00:21:32 verbose #32256 > > │ 00:00:07 verbose #433 networking.test_port_open / { port = 5555; ex = │ 00:21:32 verbose #32257 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:32 verbose #32258 > > │ } │ 00:21:32 verbose #32259 > > │ 00:00:07 debug #434 5 │ 00:21:32 verbose #32260 > > │ 00:00:07 debug #435 6 │ 00:21:32 verbose #32261 > > │ __assert_between / actual: 416L / expected: struct (2L, 1500L) │ 00:21:32 verbose #32262 > > │ __assert_between / actual: 167L / expected: struct (80L, 600L) │ 00:21:32 verbose #32263 > > │ __assert_eq / actual: true / expected: true │ 00:21:32 verbose #32264 > > │ │ 00:21:32 verbose #32265 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:32 verbose #32266 > > 00:21:32 verbose #32267 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:32 verbose #32268 > > //// test 00:21:32 verbose #32269 > > 00:21:32 verbose #32270 > > inl lock_port host port = async.new_async_unit fun () => 00:21:32 verbose #32271 > > trace Debug (fun () => "_1") id 00:21:32 verbose #32272 > > async.sleep 500 |> async.do 00:21:32 verbose #32273 > > inl listener = new_tcp_listener (ip_address_parse host) port |> use 00:21:32 verbose #32274 > > trace Debug (fun () => "_2") id 00:21:32 verbose #32275 > > listener |> listener_start 00:21:32 verbose #32276 > > trace Debug (fun () => "_3") id 00:21:32 verbose #32277 > > async.sleep 200 |> async.do 00:21:32 verbose #32278 > > trace Debug (fun () => "_4") id 00:21:32 verbose #32279 > > listener |> listener_stop 00:21:32 verbose #32280 > > trace Debug (fun () => "_5") id 00:21:32 verbose #32281 > > 00:21:32 verbose #32282 > > inl host = "127.0.0.1" 00:21:32 verbose #32283 > > inl port = 5555 00:21:32 verbose #32284 > > 00:21:32 verbose #32285 > > fun () => 00:21:32 verbose #32286 > > trace Debug (fun () => "1") id 00:21:32 verbose #32287 > > inl child = lock_port host port |> async.start_child |> async.let' 00:21:32 verbose #32288 > > trace Debug (fun () => "2") id 00:21:32 verbose #32289 > > async.sleep 1 |> async.do 00:21:32 verbose #32290 > > trace Debug (fun () => "3") id 00:21:32 verbose #32291 > > inl retries1 = wait_for_port_access (Some 60 |> optionm'.box) true host port 00:21:32 verbose #32292 > > |> async.let' 00:21:32 verbose #32293 > > trace Debug (fun () => "4") id 00:21:32 verbose #32294 > > inl retries2 = wait_for_port_access (Some 60 |> optionm'.box) false host 00:21:32 verbose #32295 > > port |> async.let' 00:21:32 verbose #32296 > > trace Debug (fun () => "5") id 00:21:32 verbose #32297 > > child |> async.do 00:21:32 verbose #32298 > > trace Debug (fun () => "6") id 00:21:32 verbose #32299 > > (retries1, retries2) |> return 00:21:32 verbose #32300 > > |> async.new_async_unit 00:21:32 verbose #32301 > > |> async.run_with_timeout 2000 00:21:32 verbose #32302 > > |> function 00:21:32 verbose #32303 > > | Some (retries1, retries2) => 00:21:32 verbose #32304 > > retries1 00:21:32 verbose #32305 > > |> _assert_between 00:21:32 verbose #32306 > > if platform.is_windows () then 4i64 else 2 00:21:32 verbose #32307 > > if platform.is_windows () then 15 else 150 00:21:32 verbose #32308 > > 00:21:32 verbose #32309 > > retries2 00:21:32 verbose #32310 > > |> _assert_between 00:21:32 verbose #32311 > > if platform.is_windows () then 5i64 else 0 00:21:32 verbose #32312 > > if platform.is_windows () then 20 else 60 00:21:32 verbose #32313 > > 00:21:32 verbose #32314 > > true 00:21:32 verbose #32315 > > | _ => false 00:21:32 verbose #32316 > > |> _assert_eq true 00:21:36 verbose #32317 > > 00:21:36 verbose #32318 > > ╭─[ 3.49s - stdout ]───────────────────────────────────────────────────────────╮ 00:21:36 verbose #32319 > > │ 00:00:00 debug #1 1 │ 00:21:36 verbose #32320 > > │ 00:00:00 debug #2 2 │ 00:21:36 verbose #32321 > > │ 00:00:00 debug #2 _1 │ 00:21:36 verbose #32322 > > │ 00:00:00 debug #3 3 │ 00:21:36 verbose #32323 > > │ 00:00:00 verbose #4 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32324 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32325 > > │ } │ 00:21:36 verbose #32326 > > │ 00:00:00 verbose #5 networking.wait_for_port_access / { port = 5555; │ 00:21:36 verbose #32327 > > │ retry = 0; timeout = Some 60; status = true } │ 00:21:36 verbose #32328 > > │ 00:00:00 verbose #6 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32329 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32330 > > │ } │ 00:21:36 verbose #32331 > > │ 00:00:00 verbose #7 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32332 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32333 > > │ } │ 00:21:36 verbose #32334 > > │ 00:00:00 verbose #8 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32335 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32336 > > │ } │ 00:21:36 verbose #32337 > > │ 00:00:00 verbose #9 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32338 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32339 > > │ } │ 00:21:36 verbose #32340 > > │ 00:00:00 verbose #10 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32341 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32342 > > │ } │ 00:21:36 verbose #32343 > > │ 00:00:00 verbose #11 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32344 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32345 > > │ } │ 00:21:36 verbose #32346 > > │ 00:00:00 verbose #12 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32347 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32348 > > │ } │ 00:21:36 verbose #32349 > > │ 00:00:00 verbose #13 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32350 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32351 > > │ } │ 00:21:36 verbose #32352 > > │ 00:00:00 verbose #14 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32353 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32354 > > │ } │ 00:21:36 verbose #32355 > > │ 00:00:00 verbose #15 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32356 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32357 > > │ } │ 00:21:36 verbose #32358 > > │ 00:00:00 verbose #16 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32359 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32360 > > │ } │ 00:21:36 verbose #32361 > > │ 00:00:00 verbose #17 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32362 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32363 > > │ } │ 00:21:36 verbose #32364 > > │ 00:00:00 verbose #18 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32365 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32366 > > │ } │ 00:21:36 verbose #32367 > > │ 00:00:00 verbose #19 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32368 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32369 > > │ } │ 00:21:36 verbose #32370 > > │ 00:00:00 verbose #20 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32371 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32372 > > │ } │ 00:21:36 verbose #32373 > > │ 00:00:00 verbose #21 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32374 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32375 > > │ } │ 00:21:36 verbose #32376 > > │ 00:00:00 verbose #22 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32377 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32378 > > │ } │ 00:21:36 verbose #32379 > > │ 00:00:00 verbose #23 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32380 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32381 > > │ } │ 00:21:36 verbose #32382 > > │ 00:00:00 verbose #24 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32383 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32384 > > │ } │ 00:21:36 verbose #32385 > > │ 00:00:00 verbose #25 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32386 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32387 > > │ } │ 00:21:36 verbose #32388 > > │ 00:00:00 verbose #26 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32389 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32390 > > │ } │ 00:21:36 verbose #32391 > > │ 00:00:00 verbose #27 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32392 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32393 > > │ } │ 00:21:36 verbose #32394 > > │ 00:00:00 verbose #28 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32395 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32396 > > │ } │ 00:21:36 verbose #32397 > > │ 00:00:00 verbose #29 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32398 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32399 > > │ } │ 00:21:36 verbose #32400 > > │ 00:00:00 verbose #30 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32401 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32402 > > │ } │ 00:21:36 verbose #32403 > > │ 00:00:00 verbose #31 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32404 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32405 > > │ } │ 00:21:36 verbose #32406 > > │ 00:00:00 verbose #32 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32407 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32408 > > │ } │ 00:21:36 verbose #32409 > > │ 00:00:00 verbose #33 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32410 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32411 > > │ } │ 00:21:36 verbose #32412 > > │ 00:00:00 verbose #34 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32413 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32414 > > │ } │ 00:21:36 verbose #32415 > > │ 00:00:00 verbose #35 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32416 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32417 > > │ } │ 00:21:36 verbose #32418 > > │ 00:00:00 verbose #36 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32419 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32420 > > │ } │ 00:21:36 verbose #32421 > > │ 00:00:00 verbose #37 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32422 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32423 > > │ } │ 00:21:36 verbose #32424 > > │ 00:00:00 verbose #38 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32425 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32426 > > │ } │ 00:21:36 verbose #32427 > > │ 00:00:00 verbose #39 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32428 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32429 > > │ } │ 00:21:36 verbose #32430 > > │ 00:00:00 verbose #40 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32431 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32432 > > │ } │ 00:21:36 verbose #32433 > > │ 00:00:00 verbose #41 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32434 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32435 > > │ } │ 00:21:36 verbose #32436 > > │ 00:00:00 verbose #42 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32437 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32438 > > │ } │ 00:21:36 verbose #32439 > > │ 00:00:00 verbose #43 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32440 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32441 > > │ } │ 00:21:36 verbose #32442 > > │ 00:00:00 verbose #44 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32443 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32444 > > │ } │ 00:21:36 verbose #32445 > > │ 00:00:00 verbose #45 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32446 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32447 > > │ } │ 00:21:36 verbose #32448 > > │ 00:00:00 debug #46 _2 │ 00:21:36 verbose #32449 > > │ 00:00:00 debug #47 _3 │ 00:21:36 verbose #32450 > > │ 00:00:00 debug #48 4 │ 00:21:36 verbose #32451 > > │ 00:00:00 verbose #49 networking.wait_for_port_access / { port = 5555; │ 00:21:36 verbose #32452 > > │ retry = 0; timeout = Some 60; status = false } │ 00:21:36 verbose #32453 > > │ 00:00:00 debug #50 _4 │ 00:21:36 verbose #32454 > > │ 00:00:00 debug #51 _5 │ 00:21:36 verbose #32455 > > │ 00:00:00 verbose #52 networking.test_port_open / { port = 5555; ex = │ 00:21:36 verbose #32456 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:36 verbose #32457 > > │ } │ 00:21:36 verbose #32458 > > │ 00:00:00 debug #53 5 │ 00:21:36 verbose #32459 > > │ 00:00:00 debug #54 6 │ 00:21:36 verbose #32460 > > │ __assert_between / actual: 41L / expected: struct (2L, 150L) │ 00:21:36 verbose #32461 > > │ __assert_between / actual: 16L / expected: struct (0L, 60L) │ 00:21:36 verbose #32462 > > │ __assert_eq / actual: true / expected: true │ 00:21:36 verbose #32463 > > │ │ 00:21:36 verbose #32464 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:36 verbose #32465 > > 00:21:36 verbose #32466 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:36 verbose #32467 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:36 verbose #32468 > > │ ### get_available_port │ 00:21:36 verbose #32469 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:36 verbose #32470 > > 00:21:36 verbose #32471 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:36 verbose #32472 > > inl get_available_port timeout host initial_port : _ i32 = 00:21:36 verbose #32473 > > let rec loop port = async.new_async_unit fun () => 00:21:36 verbose #32474 > > inl is_port_open = 00:21:36 verbose #32475 > > match timeout |> optionm'.unbox with 00:21:36 verbose #32476 > > | None => test_port_open host port 00:21:36 verbose #32477 > > | Some timeout => test_port_open_timeout timeout host port 00:21:36 verbose #32478 > > |> async.let' 00:21:36 verbose #32479 > > fix_condition 00:21:36 verbose #32480 > > fun () => is_port_open |> not 00:21:36 verbose #32481 > > fun () => port |> return 00:21:36 verbose #32482 > > fun () => loop (port + 1) |> async.return_await 00:21:36 verbose #32483 > > loop initial_port 00:21:36 verbose #32484 > > 00:21:36 verbose #32485 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:36 verbose #32486 > > //// test 00:21:36 verbose #32487 > > 00:21:36 verbose #32488 > > inl lock_ports host port = async.new_async_unit fun () => 00:21:36 verbose #32489 > > trace Debug (fun () => "_1") id 00:21:36 verbose #32490 > > inl listener1 = new_tcp_listener (ip_address_parse host) port |> use 00:21:36 verbose #32491 > > inl listener2 = new_tcp_listener (ip_address_parse host) (port + 1) |> use 00:21:36 verbose #32492 > > trace Debug (fun () => "_2") id 00:21:36 verbose #32493 > > listener1 |> listener_start 00:21:36 verbose #32494 > > listener2 |> listener_start 00:21:36 verbose #32495 > > trace Debug (fun () => "_3") id 00:21:36 verbose #32496 > > async.sleep 4000 |> async.do 00:21:36 verbose #32497 > > trace Debug (fun () => "_4") id 00:21:36 verbose #32498 > > listener1 |> listener_stop 00:21:36 verbose #32499 > > listener2 |> listener_stop 00:21:36 verbose #32500 > > trace Debug (fun () => "_5") id 00:21:36 verbose #32501 > > 00:21:36 verbose #32502 > > inl host = "127.0.0.1" 00:21:36 verbose #32503 > > inl port = 5555 00:21:36 verbose #32504 > > 00:21:36 verbose #32505 > > fun () => 00:21:36 verbose #32506 > > trace Debug (fun () => "1") id 00:21:36 verbose #32507 > > inl child = lock_ports host port |> async.start_child |> async.let' 00:21:36 verbose #32508 > > trace Debug (fun () => "2") id 00:21:36 verbose #32509 > > async.sleep 240 |> async.do 00:21:36 verbose #32510 > > trace Debug (fun () => "3") id 00:21:36 verbose #32511 > > inl available_port = get_available_port (None |> optionm'.box) host port |> 00:21:36 verbose #32512 > > async.let' 00:21:36 verbose #32513 > > trace Debug (fun () => "4") id 00:21:36 verbose #32514 > > inl retries = wait_for_port_access (None |> optionm'.box) false host port |> 00:21:36 verbose #32515 > > async.let' 00:21:36 verbose #32516 > > trace Debug (fun () => "5") id 00:21:36 verbose #32517 > > child |> async.do 00:21:36 verbose #32518 > > trace Debug (fun () => "6") id 00:21:36 verbose #32519 > > (available_port, retries) |> return 00:21:36 verbose #32520 > > |> async.new_async_unit 00:21:36 verbose #32521 > > |> async.run_with_timeout 15000 00:21:36 verbose #32522 > > |> function 00:21:36 verbose #32523 > > | Some (available_port, retries) => 00:21:36 verbose #32524 > > available_port |> _assert_eq (port + 2) 00:21:36 verbose #32525 > > 00:21:36 verbose #32526 > > retries 00:21:36 verbose #32527 > > |> _assert_between 00:21:36 verbose #32528 > > if platform.is_windows () then 50i64 else 50 00:21:36 verbose #32529 > > if platform.is_windows () then 150 else 1200 00:21:36 verbose #32530 > > 00:21:36 verbose #32531 > > true 00:21:36 verbose #32532 > > | _ => false 00:21:36 verbose #32533 > > |> _assert_eq true 00:21:42 verbose #32534 > > 00:21:42 verbose #32535 > > ╭─[ 6.41s - stdout ]───────────────────────────────────────────────────────────╮ 00:21:42 verbose #32536 > > │ 00:00:00 debug #1 1 │ 00:21:42 verbose #32537 > > │ 00:00:00 debug #3 _1 │ 00:21:42 verbose #32538 > > │ 00:00:00 debug #3 2 │ 00:21:42 verbose #32539 > > │ 00:00:00 debug #4 _2 │ 00:21:42 verbose #32540 > > │ 00:00:00 debug #5 _3 │ 00:21:42 verbose #32541 > > │ 00:00:00 debug #6 3 │ 00:21:42 verbose #32542 > > │ 00:00:00 verbose #7 networking.test_port_open / { port = 5557; ex = │ 00:21:42 verbose #32543 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:42 verbose #32544 > > │ } │ 00:21:42 verbose #32545 > > │ 00:00:00 debug #8 4 │ 00:21:42 verbose #32546 > > │ 00:00:00 verbose #9 networking.wait_for_port_access / { port = 5555; │ 00:21:42 verbose #32547 > > │ retry = 0; timeout = None; status = false } │ 00:21:42 verbose #32548 > > │ 00:00:01 verbose #10 networking.wait_for_port_access / { port = 5555; │ 00:21:42 verbose #32549 > > │ retry = 100; timeout = None; status = false } │ 00:21:42 verbose #32550 > > │ 00:00:02 verbose #11 networking.wait_for_port_access / { port = 5555; │ 00:21:42 verbose #32551 > > │ retry = 200; timeout = None; status = false } │ 00:21:42 verbose #32552 > > │ 00:00:03 verbose #12 networking.wait_for_port_access / { port = 5555; │ 00:21:42 verbose #32553 > > │ retry = 300; timeout = None; status = false } │ 00:21:42 verbose #32554 > > │ 00:00:04 debug #13 _4 │ 00:21:42 verbose #32555 > > │ 00:00:04 debug #14 _5 │ 00:21:42 verbose #32556 > > │ 00:00:04 verbose #15 networking.test_port_open / { port = 5555; ex = │ 00:21:42 verbose #32557 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:42 verbose #32558 > > │ } │ 00:21:42 verbose #32559 > > │ 00:00:04 debug #16 5 │ 00:21:42 verbose #32560 > > │ 00:00:04 debug #17 6 │ 00:21:42 verbose #32561 > > │ __assert_eq / actual: 5557 / expected: 5557 │ 00:21:42 verbose #32562 > > │ __assert_between / actual: 313L / expected: struct (50L, 1200L) │ 00:21:42 verbose #32563 > > │ __assert_eq / actual: true / expected: true │ 00:21:42 verbose #32564 > > │ │ 00:21:42 verbose #32565 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:42 verbose #32566 > > 00:21:42 verbose #32567 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:42 verbose #32568 > > //// test 00:21:42 verbose #32569 > > 00:21:42 verbose #32570 > > inl lock_ports host port = async.new_async_unit fun () => 00:21:42 verbose #32571 > > trace Debug (fun () => "_1") id 00:21:42 verbose #32572 > > inl listener1 = new_tcp_listener (ip_address_parse host) port |> use 00:21:42 verbose #32573 > > inl listener2 = new_tcp_listener (ip_address_parse host) (port + 1) |> use 00:21:42 verbose #32574 > > trace Debug (fun () => "_2") id 00:21:42 verbose #32575 > > listener1 |> listener_start 00:21:42 verbose #32576 > > listener2 |> listener_start 00:21:42 verbose #32577 > > trace Debug (fun () => "_3") id 00:21:42 verbose #32578 > > async.sleep 400 |> async.do 00:21:42 verbose #32579 > > trace Debug (fun () => "_4") id 00:21:42 verbose #32580 > > listener1 |> listener_stop 00:21:42 verbose #32581 > > listener2 |> listener_stop 00:21:42 verbose #32582 > > trace Debug (fun () => "_5") id 00:21:42 verbose #32583 > > 00:21:42 verbose #32584 > > inl host = "127.0.0.1" 00:21:42 verbose #32585 > > inl port = 5555 00:21:42 verbose #32586 > > 00:21:42 verbose #32587 > > fun () => 00:21:42 verbose #32588 > > trace Debug (fun () => "1") id 00:21:42 verbose #32589 > > inl child = lock_ports host port |> async.start_child |> async.let' 00:21:42 verbose #32590 > > trace Debug (fun () => "2") id 00:21:42 verbose #32591 > > async.sleep 240 |> async.do 00:21:42 verbose #32592 > > trace Debug (fun () => "3") id 00:21:42 verbose #32593 > > inl available_port = get_available_port (Some 60 |> optionm'.box) host port 00:21:42 verbose #32594 > > |> async.let' 00:21:42 verbose #32595 > > trace Debug (fun () => "4") id 00:21:42 verbose #32596 > > inl retries = wait_for_port_access (Some 60 |> optionm'.box) false host port 00:21:42 verbose #32597 > > |> async.let' 00:21:42 verbose #32598 > > trace Debug (fun () => "5") id 00:21:42 verbose #32599 > > child |> async.do 00:21:42 verbose #32600 > > trace Debug (fun () => "6") id 00:21:42 verbose #32601 > > (available_port, retries) |> return 00:21:42 verbose #32602 > > |> async.new_async_unit 00:21:42 verbose #32603 > > |> async.run_with_timeout 1500 00:21:42 verbose #32604 > > |> function 00:21:42 verbose #32605 > > | Some (available_port, retries) => 00:21:42 verbose #32606 > > available_port |> _assert_eq (port + 2) 00:21:42 verbose #32607 > > 00:21:42 verbose #32608 > > retries 00:21:42 verbose #32609 > > |> _assert_between 00:21:42 verbose #32610 > > (if platform.is_windows () then 2i64 else 1) 00:21:42 verbose #32611 > > (if platform.is_windows () then 10 else 120) 00:21:42 verbose #32612 > > 00:21:42 verbose #32613 > > true 00:21:42 verbose #32614 > > | _ => false 00:21:42 verbose #32615 > > |> _assert_eq true 00:21:45 verbose #32616 > > 00:21:45 verbose #32617 > > ╭─[ 3.04s - stdout ]───────────────────────────────────────────────────────────╮ 00:21:45 verbose #32618 > > │ 00:00:00 debug #1 1 │ 00:21:45 verbose #32619 > > │ 00:00:00 debug #3 _1 │ 00:21:45 verbose #32620 > > │ 00:00:00 debug #3 2 │ 00:21:45 verbose #32621 > > │ 00:00:00 debug #4 _2 │ 00:21:45 verbose #32622 > > │ 00:00:00 debug #5 _3 │ 00:21:45 verbose #32623 > > │ 00:00:00 debug #6 3 │ 00:21:45 verbose #32624 > > │ 00:00:00 verbose #7 networking.test_port_open / { port = 5557; ex = │ 00:21:45 verbose #32625 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:45 verbose #32626 > > │ } │ 00:21:45 verbose #32627 > > │ 00:00:00 debug #8 4 │ 00:21:45 verbose #32628 > > │ 00:00:00 verbose #9 networking.wait_for_port_access / { port = 5555; │ 00:21:45 verbose #32629 > > │ retry = 0; timeout = Some 60; status = false } │ 00:21:45 verbose #32630 > > │ 00:00:00 debug #10 _4 │ 00:21:45 verbose #32631 > > │ 00:00:00 debug #11 _5 │ 00:21:45 verbose #32632 > > │ 00:00:00 verbose #12 networking.test_port_open / { port = 5555; ex = │ 00:21:45 verbose #32633 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:21:45 verbose #32634 > > │ } │ 00:21:45 verbose #32635 > > │ 00:00:00 debug #13 5 │ 00:21:45 verbose #32636 > > │ 00:00:00 debug #14 6 │ 00:21:45 verbose #32637 > > │ __assert_eq / actual: 5557 / expected: 5557 │ 00:21:45 verbose #32638 > > │ __assert_between / actual: 12L / expected: struct (1L, 120L) │ 00:21:45 verbose #32639 > > │ __assert_eq / actual: true / expected: true │ 00:21:45 verbose #32640 > > │ │ 00:21:45 verbose #32641 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:45 verbose #32642 > > 00:21:45 verbose #32643 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:45 verbose #32644 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:21:45 verbose #32645 > > │ ## main │ 00:21:45 verbose #32646 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:21:45 verbose #32647 > > 00:21:45 verbose #32648 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:45 verbose #32649 > > inl main () = 00:21:45 verbose #32650 > > init_trace_state None 00:21:45 verbose #32651 > > $'let test_port_open x = !test_port_open x' : () 00:21:45 verbose #32652 > > $'let test_port_open_timeout x = !test_port_open_timeout x' : () 00:21:45 verbose #32653 > > $'let wait_for_port_access x = !wait_for_port_access x' : () 00:21:45 verbose #32654 > > $'let get_available_port x = !get_available_port x' : () 00:21:47 verbose #32655 > 00:00:34 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 189117 } 00:21:47 verbose #32656 > 00:00:34 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:21:47 verbose #32657 > "nbconvert", 00:21:47 verbose #32658 > "/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.ipynb", 00:21:47 verbose #32659 > "--to", 00:21:47 verbose #32660 > "html", 00:21:47 verbose #32661 > "--HTMLExporter.theme=dark", 00:21:47 verbose #32662 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:21:47 verbose #32663 > 00:00:35 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.ipynb to html 00:21:47 verbose #32664 > 00:00:35 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:21:47 verbose #32665 > 00:00:35 verbose #7 ! validate(nb) 00:21:48 verbose #32666 > 00:00:35 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:21:48 verbose #32667 > 00:00:35 verbose #9 ! return _pygments_highlight( 00:21:48 verbose #32668 > 00:00:36 verbose #10 ! [NbConvertApp] Writing 457395 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.html 00:21:48 verbose #32669 > 00:00:36 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 904 } 00:21:48 verbose #32670 > 00:00:36 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 904 } 00:21:48 verbose #32671 > 00:00:36 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:21:48 verbose #32672 > "-c", 00:21:48 verbose #32673 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:21:48 verbose #32674 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:21:49 verbose #32675 > 00:00:36 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:21:49 verbose #32676 > 00:00:36 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:21:49 verbose #32677 > 00:00:36 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 190080 } 00:21:49 debug #32678 runtime.execute_with_options_async / { exit_code = 0; output_length = 197102 } 00:21:49 debug #37 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path networking.dib --retries 3 00:00:00 debug #1 writeDibCode / output: Spi / path: async.dib 00:00:00 debug #1 writeDibCode / output: Spi / path: runtime.dib 00:00:00 debug #1 writeDibCode / output: Spi / path: trace.dib 00:00:00 debug #1 writeDibCode / output: Spi / path: testing.dib 00:00:00 debug #5 parseDibCode / output: Spi / file: runtime.dib 00:00:00 debug #5 parseDibCode / output: Spi / file: async.dib 00:00:00 debug #5 parseDibCode / output: Spi / file: trace.dib 00:00:00 debug #5 parseDibCode / output: Spi / file: testing.dib 00:00:00 debug #9 writeDibCode / output: Spi / path: threading.dib 00:00:00 debug #9 writeDibCode / output: Spi / path: networking.dib 00:00:00 debug #9 writeDibCode / output: Spi / path: crypto.dib 00:00:00 debug #9 writeDibCode / output: Spi / path: common.dib 00:00:00 debug #13 parseDibCode / output: Spi / file: crypto.dib 00:00:00 debug #13 parseDibCode / output: Spi / file: common.dib 00:00:00 debug #13 parseDibCode / output: Spi / file: networking.dib 00:00:00 debug #10 parseDibCode / output: Spi / file: threading.dib 00:00:00 debug #14 writeDibCode / output: Spi / path: base.dib 00:00:00 debug #15 parseDibCode / output: Spi / file: base.dib 00:00:00 debug #16 writeDibCode / output: Spi / path: resultm.dib 00:00:00 debug #17 parseDibCode / output: Spi / file: resultm.dib 00:00:00 debug #18 writeDibCode / output: Spi / path: iter.dib 00:00:00 debug #19 parseDibCode / output: Spi / file: iter.dib 00:00:00 debug #20 writeDibCode / output: Spi / path: env.dib 00:00:00 debug #22 writeDibCode / output: Spi / path: parsing.dib 00:00:00 debug #22 parseDibCode / output: Spi / file: env.dib 00:00:00 debug #23 parseDibCode / output: Spi / file: parsing.dib 00:00:00 debug #25 writeDibCode / output: Spi / path: console.dib 00:00:00 debug #27 parseDibCode / output: Spi / file: console.dib 00:00:00 debug #27 writeDibCode / output: Spi / path: file_system.dib 00:00:00 debug #28 parseDibCode / output: Spi / file: file_system.dib 00:00:00 debug #29 writeDibCode / output: Spi / path: date_time.dib 00:00:00 debug #29 writeDibCode / output: Spi / path: guid.dib 00:00:00 debug #31 parseDibCode / output: Spi / file: date_time.dib 00:00:00 debug #31 parseDibCode / output: Spi / file: guid.dib 00:00:00 debug #32 writeDibCode / output: Spi / path: math.dib 00:00:00 debug #33 parseDibCode / output: Spi / file: math.dib 00:00:00 debug #34 writeDibCode / output: Spi / path: mapm.dib 00:00:00 debug #35 parseDibCode / output: Spi / file: mapm.dib 00:00:00 debug #37 writeDibCode / output: Spi / path: optionm'.dib 00:00:00 debug #37 writeDibCode / output: Spi / path: am'.dib 00:00:00 debug #39 parseDibCode / output: Spi / file: am'.dib 00:00:00 debug #39 parseDibCode / output: Spi / file: optionm'.dib 00:00:00 debug #40 writeDibCode / output: Spi / path: sm'.dib 00:00:00 debug #41 parseDibCode / output: Spi / file: sm'.dib 00:00:00 debug #42 writeDibCode / output: Spir / path: sm'.dib 00:00:00 debug #43 parseDibCode / output: Spir / file: sm'.dib 00:00:00 debug #44 writeDibCode / output: Spi / path: listm'.dib 00:00:00 debug #45 parseDibCode / output: Spi / file: listm'.dib 00:00:00 debug #46 writeDibCode / output: Spi / path: reflection.dib 00:00:00 debug #47 parseDibCode / output: Spi / file: reflection.dib 00:00:00 debug #48 writeDibCode / output: Spi / path: python.dib 00:00:00 debug #49 writeDibCode / output: Spi / path: typescript.dib 00:00:00 debug #50 parseDibCode / output: Spi / file: typescript.dib 00:00:00 debug #51 writeDibCode / output: Spi / path: benchmark.dib 00:00:00 debug #53 parseDibCode / output: Spi / file: benchmark.dib 00:00:00 debug #53 writeDibCode / output: Spi / path: stream.dib 00:00:00 debug #54 parseDibCode / output: Spi / file: stream.dib 00:00:00 debug #55 parseDibCode / output: Spi / file: python.dib 00:00:00 debug #56 writeDibCode / output: Spi / path: seq.dib 00:00:00 debug #57 parseDibCode / output: Spi / file: seq.dib 00:00:00 debug #58 writeDibCode / output: Spi / path: util.dib 00:00:00 debug #59 parseDibCode / output: Spi / file: util.dib 00:00:00 debug #60 writeDibCode / output: Spi / path: platform.dib 00:00:00 debug #61 parseDibCode / output: Spi / file: platform.dib 00:00:00 debug #62 writeDibCode / output: Spi / path: rust/rust.dib 00:00:00 debug #63 parseDibCode / output: Spi / file: rust/rust.dib 00:00:00 debug #64 writeDibCode / output: Spi / path: rust/testing.dib 00:00:00 debug #65 parseDibCode / output: Spi / file: rust/testing.dib 00:00:00 debug #66 writeDibCode / output: Spi / path: rust/near.dib 00:00:00 debug #67 parseDibCode / output: Spi / file: rust/near.dib 00:00:00 debug #68 writeDibCode / output: Spi / path: physics.dib 00:00:00 debug #70 parseDibCode / output: Spi / file: physics.dib 00:00:00 debug #70 writeDibCode / output: Spi / path: leptos/leptos.dib 00:00:00 debug #71 parseDibCode / output: Spi / file: leptos/leptos.dib 00:00:00 debug #72 writeDibCode / output: Spi / path: wasm.dib 00:00:00 debug #73 parseDibCode / output: Spi / file: wasm.dib 00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 verbose #2 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 verbose #2 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 verbose #3 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 debug #1 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: runtime.spi 00:00:00 debug #1 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: async.spi 00:00:00 debug #1 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: trace.spi 00:00:00 debug #4 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: trace.spi 00:00:00 debug #4 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: runtime.spi 00:00:00 debug #3 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: async.spi 00:00:00 debug #6 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: async.spi 00:00:00 debug #7 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: runtime.spi 00:00:00 debug #7 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: trace.spi 00:00:00 verbose #9 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # async\nopen rust\nopen rust_operators\n\n/// ## rust\n\n/// ### future...ault_async x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/async.spi"}} / result: 00:00:00 verbose #8 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # trace\n\n/// ## trace\n\n/// ### trace_level\nunion trace_level =\n ...x = !trace x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/trace.spi"}} / result: 00:00:00 verbose #10 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # runtime\nopen rust\nopen rust_operators\nopen sm\u0027_operators\n\n//...lit_args x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/runtime.spi"}} / result: 00:00:00 verbose #11 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/async.spi"}} / result: 00:00:00 verbose #12 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/trace.spi"}} / result: 00:00:00 verbose #13 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/runtime.spi"}} / result: 00:00:01 debug #14 Supervisor.buildFile / AsyncSeq.scan / outputContent: let rec closure0 () (v0 : System.Threading.CancellationToken) : Async<System.Threading.CancellationToken> = let v1 : unit = () #if FABLE_COMP...em.Threading.CancellationToken -> Async<System.Threading.CancellationToken>) = closure0() let merge_cancellation_token_with_default_async x = v0 x () / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: async.spi 00:00:01 debug #15 Supervisor.buildFile / takeWhileInclusive / outputContent: let rec closure0 () (v0 : System.Threading.CancellationToken) : Async<System.Threading.CancellationToken> = let v1 : unit = () #if FABLE_COMP...em.Threading.CancellationToken -> Async<System.Threading.CancellationToken>) = closure0() let merge_cancellation_token_with_default_async x = v0 x () / errors: [] / typeErrorCount: 0 / retry: 0 / path: async.spi 00:00:01 debug #16 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:01 verbose #4 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 debug #17 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: threading.spi 00:00:01 debug #18 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: threading.spi 00:00:01 debug #19 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: threading.spi 00:00:01 verbose #20 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # threading\nopen rust\nopen rust_operators\n\n/// ## rust\n\n/// ### sl..._token x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/threading.spi"}} / result: 00:00:01 debug #21 Supervisor.buildFile / AsyncSeq.scan / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] #endif type std_string_String = class end #if FABLE_COMPILER [<Fable.C...e0() let v2 : unit = (fun () -> v1 (); v0) () let v15 : (US0 -> ((unit -> string) -> ((unit -> string) -> unit))) = closure4() let trace x = v15 x () / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: trace.spi 00:00:01 debug #22 Supervisor.buildFile / takeWhileInclusive / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] #endif type std_string_String = class end #if FABLE_COMPILER [<Fable.C...e0() let v2 : unit = (fun () -> v1 (); v0) () let v15 : (US0 -> ((unit -> string) -> ((unit -> string) -> unit))) = closure4() let trace x = v15 x () / errors: [] / typeErrorCount: 0 / retry: 0 / path: trace.spi 00:00:01 debug #23 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:01 debug #24 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: runtime.spi 00:00:01 debug #25 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: runtime.spi 00:00:01 verbose #26 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/threading.spi"}} / result: 00:00:01 verbose #5 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 debug #27 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi 00:00:01 debug #28 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: networking.spi 00:00:01 debug #29 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi 00:00:01 verbose #30 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # networking\nopen rust.rust_operators\n\n/// ## rust\n\n/// ### reqwest..._port x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/networking.spi"}} / result: 00:00:01 verbose #31 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/networking.spi"}} / result: 00:00:01 debug #32 Supervisor.buildFile / AsyncSeq.scan / outputContent: type Disposable (f : unit -> unit) = interface System.IDisposable with member _.Dispose () = f () type [<Struct>] US0 = | US0_0 of f0_0 : System.T...ading.CancellationToken option -> struct (System.Threading.CancellationToken * System.IDisposable)) = closure0() let new_disposable_token x = v0 x () / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: threading.spi 00:00:01 debug #33 Supervisor.buildFile / takeWhileInclusive / outputContent: type Disposable (f : unit -> unit) = interface System.IDisposable with member _.Dispose () = f () type [<Struct>] US0 = | US0_0 of f0_0 : System.T...ading.CancellationToken option -> struct (System.Threading.CancellationToken * System.IDisposable)) = closure0() let new_disposable_token x = v0 x () / errors: [] / typeErrorCount: 0 / retry: 0 / path: threading.spi 00:00:01 debug #34 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:01 verbose #6 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 debug #35 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: crypto.spi 00:00:01 debug #36 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: crypto.spi 00:00:01 debug #37 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: crypto.spi 00:00:01 verbose #38 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # crypto\nopen rust\nopen rust_operators\n\n/// ## fsharp\n\n/// ### sha...h_to_port x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/crypto.spi"}} / result: 00:00:01 verbose #39 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/crypto.spi"}} / result: 00:00:01 debug #40 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: runtime.spi 00:00:01 debug #41 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: runtime.spi 00:00:01 debug #42 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: networking.spi 00:00:01 debug #43 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi 00:00:01 debug #44 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: crypto.spi 00:00:01 debug #45 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: crypto.spi 00:00:02 debug #46 Supervisor.buildFile / AsyncSeq.scan / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core....1024us v813 let v0 : (string -> string) = closure0() let hash_text x = v0 x let v1 : (string -> uint16) = closure1() let hash_to_port x = v1 x () / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: crypto.spi 00:00:02 debug #47 Supervisor.buildFile / takeWhileInclusive / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core....1024us v813 let v0 : (string -> string) = closure0() let hash_text x = v0 x let v1 : (string -> uint16) = closure1() let hash_to_port x = v1 x () / errors: [] / typeErrorCount: 0 / retry: 0 / path: crypto.spi 00:00:02 debug #48 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:02 verbose #7 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:02 debug #49 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: common.spi 00:00:02 debug #50 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: common.spi 00:00:02 debug #51 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: common.spi 00:00:02 verbose #53 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # common\n\n/// ## common\n\n/// ### (:\u003E)\nprototype (~:\u003E) r :... !memoize x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/common.spi"}} / result: 00:00:02 debug #53 Supervisor.buildFile / AsyncSeq.scan / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] #endif type std_string_String = class end #if FABLE_COMPILER [<Fable.C...ng option)) = closure39() let execution_options x = v18 x let v19 : (string -> Result<(string []), string>) = closure40() let split_args x = v19 x () / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: runtime.spi 00:00:02 debug #54 Supervisor.buildFile / takeWhileInclusive / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] #endif type std_string_String = class end #if FABLE_COMPILER [<Fable.C...ng option)) = closure39() let execution_options x = v18 x let v19 : (string -> Result<(string []), string>) = closure40() let split_args x = v19 x () / errors: [] / typeErrorCount: 0 / retry: 0 / path: runtime.spi 00:00:02 debug #55 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:02 verbose #56 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/common.spi"}} / result: 00:00:02 debug #57 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: networking.spi 00:00:02 debug #58 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi 00:00:02 verbose #8 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:02 debug #59 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: date_time.spi 00:00:02 debug #60 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: date_time.spi 00:00:02 debug #61 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: date_time.spi 00:00:02 verbose #62 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # date_time\nopen rust.rust_operators\nopen sm\u0027_operators\n\n/// ##...so8601 x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/date_time.spi"}} / result: 00:00:02 verbose #63 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/date_time.spi"}} / result: 00:00:02 debug #64 Supervisor.buildFile / AsyncSeq.scan / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("chrono::DateTime<$0>")>] #endif type chrono_DateTime<'T> = class end #if FABLE_COMPILER [<Fabl...g -> (System.DateTime -> string)) = closure11() let format x = v6 x let v7 : (System.DateTime -> string) = closure13() let format_iso8601 x = v7 x () / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: date_time.spi 00:00:02 debug #65 Supervisor.buildFile / takeWhileInclusive / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("chrono::DateTime<$0>")>] #endif type chrono_DateTime<'T> = class end #if FABLE_COMPILER [<Fabl...g -> (System.DateTime -> string)) = closure11() let format x = v6 x let v7 : (System.DateTime -> string) = closure13() let format_iso8601 x = v7 x () / errors: [] / typeErrorCount: 0 / retry: 0 / path: date_time.spi 00:00:02 debug #66 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:02 verbose #9 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:02 debug #67 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: platform.spi 00:00:02 debug #68 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: platform.spi 00:00:02 debug #69 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: platform.spi 00:00:02 verbose #70 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # platform\nopen rust.rust_operators\n\n/// ## fsharp\n\n/// ### os_plat...suffix ()\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/platform.spi"}} / result: 00:00:02 debug #71 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: common.spi 00:00:02 debug #72 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: common.spi 00:00:02 verbose #73 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/platform.spi"}} / result: 00:00:02 debug #74 Supervisor.buildFile / AsyncSeq.scan / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] #endif type std_string_String = class end #if FABLE_COMPILER [<Fable.C... let wait_for_port_access x = v17 x let v18 : (int32 option -> (string -> (int32 -> Async<int32>))) = closure31() let get_available_port x = v18 x () / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: networking.spi 00:00:02 debug #75 Supervisor.buildFile / takeWhileInclusive / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] #endif type std_string_String = class end #if FABLE_COMPILER [<Fable.C... let wait_for_port_access x = v17 x let v18 : (int32 option -> (string -> (int32 -> Async<int32>))) = closure31() let get_available_port x = v18 x () / errors: [] / typeErrorCount: 0 / retry: 0 / path: networking.spi 00:00:02 debug #76 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:02 verbose #10 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:02 debug #77 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi 00:00:02 debug #78 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: file_system.spi 00:00:02 debug #79 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi 00:00:02 verbose #80 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # file_system\nopen sm\u0027_operators\nopen rust\nopen rust_operators\n...bine x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/file_system.spi"}} / result: 00:00:02 verbose #81 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/file_system.spi"}} / result: 00:00:02 debug #82 Supervisor.buildFile / AsyncSeq.scan / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] #endif type std_string_String = class end #if FABLE_COMPILER [<Fable.C...nit -> unit) -> unit option)) = closure5() let retry_fn x = v16 x let v17 : ((unit -> unit) -> (unit -> unit)) = closure18() let memoize x = v17 x () / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: common.spi 00:00:02 debug #83 Supervisor.buildFile / takeWhileInclusive / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] #endif type std_string_String = class end #if FABLE_COMPILER [<Fable.C...nit -> unit) -> unit option)) = closure5() let retry_fn x = v16 x let v17 : ((unit -> unit) -> (unit -> unit)) = closure18() let memoize x = v17 x () / errors: [] / typeErrorCount: 0 / retry: 0 / path: common.spi 00:00:02 debug #84 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:02 verbose #11 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:02 debug #85 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: guid.spi 00:00:02 debug #86 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: guid.spi 00:00:02 debug #87 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: guid.spi 00:00:02 verbose #88 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # guid\n\n/// ## guid\n\n/// ### guid\nnominal guid_python =\n \u0060...ew_raw_guid x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/guid.spi"}} / result: 00:00:02 verbose #89 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/guid.spi"}} / result: 00:00:02 debug #90 Supervisor.buildFile / AsyncSeq.scan / outputContent: type [<Struct>] US0 = | US0_0 | US0_1 | US0_2 and [<Struct>] US1 = | US1_0 of f0_0 : US0 | US1_1 of f1_0 : US0 | US1_2 of f2_0... v25 let v0 : (unit -> bool) = closure0() let is_windows () = v0 () let v1 : (unit -> string) = closure1() let get_executable_suffix () = v1 () () / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: platform.spi 00:00:02 debug #91 Supervisor.buildFile / takeWhileInclusive / outputContent: type [<Struct>] US0 = | US0_0 | US0_1 | US0_2 and [<Struct>] US1 = | US1_0 of f0_0 : US0 | US1_1 of f1_0 : US0 | US1_2 of f2_0... v25 let v0 : (unit -> bool) = closure0() let is_windows () = v0 () let v1 : (unit -> string) = closure1() let get_executable_suffix () = v1 () () / errors: [] / typeErrorCount: 0 / retry: 0 / path: platform.spi 00:00:02 debug #92 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:02 verbose #12 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:02 debug #93 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: sm'.spi 00:00:02 debug #94 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: sm'.spi 00:00:02 debug #95 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: sm'.spi 00:00:02 verbose #96 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # sm\u0027\nopen rust\nopen rust_operators\nopen real_sm\u0027\n\n/// ##...ng = from_std_string\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/sm\u0027.spi"}} / result: 00:00:02 verbose #97 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/sm\u0027.spi"}} / result: 00:00:02 debug #98 Supervisor.buildFile / AsyncSeq.scan / outputContent: let rec closure0 () (v0 : string) : System.Guid = let v1 : System.Guid = v0 |> System.Guid v1 and method0 (v0 : string) : System.Guid = l... = v0 x let v1 : (string -> System.Guid) = closure1() let hash_guid x = v1 x let v2 : (unit -> System.Guid) = closure2() let new_raw_guid x = v2 x () / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: guid.spi 00:00:02 debug #99 Supervisor.buildFile / takeWhileInclusive / outputContent: let rec closure0 () (v0 : string) : System.Guid = let v1 : System.Guid = v0 |> System.Guid v1 and method0 (v0 : string) : System.Guid = l... = v0 x let v1 : (string -> System.Guid) = closure1() let hash_guid x = v1 x let v2 : (unit -> System.Guid) = closure2() let new_raw_guid x = v2 x () / errors: [] / typeErrorCount: 0 / retry: 0 / path: guid.spi 00:00:02 debug #100 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:03 debug #101 Supervisor.buildFile / AsyncSeq.scan / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("regex::Regex")>] #endif type regex_Regex = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fa... : (string -> ((string []) -> string)) = closure46() let join' x = v21 x let v22 : (string -> (char [])) = closure48() let to_char_array x = v22 x () / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: sm'.spi 00:00:03 debug #102 Supervisor.buildFile / takeWhileInclusive / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("regex::Regex")>] #endif type regex_Regex = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fa... : (string -> ((string []) -> string)) = closure46() let join' x = v21 x let v22 : (string -> (char [])) = closure48() let to_char_array x = v22 x () / errors: [] / typeErrorCount: 0 / retry: 0 / path: sm'.spi 00:00:03 debug #103 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:03 debug #104 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: file_system.spi 00:00:03 debug #105 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi 00:00:03 debug #106 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: file_system.spi 00:00:03 debug #107 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi 00:00:04 debug #108 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: file_system.spi 00:00:04 debug #109 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi 00:00:04 debug #110 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: file_system.spi 00:00:04 debug #111 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi 00:00:04 debug #112 Supervisor.buildFile / AsyncSeq.scan / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] #endif type std_string_String = class end #if FABLE_COMPILER [<Fable.C...() let v32 : (bool -> unit) = closure64() let init_trace_file x = v32 x let v33 : (string -> (string -> string)) = closure66() let (</>) x = v33 x () / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: file_system.spi 00:00:04 debug #113 Supervisor.buildFile / takeWhileInclusive / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] #endif type std_string_String = class end #if FABLE_COMPILER [<Fable.C...() let v32 : (bool -> unit) = closure64() let init_trace_file x = v32 x let v33 : (string -> (string -> string)) = closure66() let (</>) x = v33 x () / errors: [] / typeErrorCount: 0 / retry: 0 / path: file_system.spi 00:00:04 debug #114 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite
In [ ]:
{ pwsh ../apps/scheduler/build.ps1 } | Invoke-Block
00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 debug #1 runtime.execute_with_options_async / { options = { command = ../../workspace/target/release/spiral_builder dib --path Tasks.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:00 verbose #2 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "Tasks.dib", "--retries", "3"])) } 00:00:00 verbose #3 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:00:00 verbose #4 > "repl", 00:00:00 verbose #5 > "--exit-after-run", 00:00:00 verbose #6 > "--run", 00:00:00 verbose #7 > "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib", 00:00:00 verbose #8 > "--output-path", 00:00:00 verbose #9 > "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb", 00:00:00 verbose #10 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:02 verbose #11 > > 00:00:02 verbose #12 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 verbose #13 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:02 verbose #14 > > │ ## Tasks (Polyglot) │ 00:00:02 verbose #15 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:04 verbose #16 > > 00:00:04 verbose #17 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:04 verbose #18 > > //// test 00:00:04 verbose #19 > > 00:00:04 verbose #20 > > open testing 00:00:05 verbose #21 > > 00:00:05 verbose #22 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:05 verbose #23 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:05 verbose #24 > > │ ## task_name │ 00:00:05 verbose #25 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 verbose #26 > > 00:00:05 verbose #27 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #28 > > nominal task_name = string 00:00:05 verbose #29 > > 00:00:05 verbose #30 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:05 verbose #31 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:05 verbose #32 > > │ ## manual_scheduling │ 00:00:05 verbose #33 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 verbose #34 > > 00:00:05 verbose #35 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #36 > > union manual_scheduling = 00:00:05 verbose #37 > > | WithSuggestion 00:00:05 verbose #38 > > | WithoutSuggestion 00:00:05 verbose #39 > > 00:00:05 verbose #40 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:05 verbose #41 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:05 verbose #42 > > │ ## recurrency_offset │ 00:00:05 verbose #43 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 verbose #44 > > 00:00:05 verbose #45 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #46 > > union recurrency_offset = 00:00:05 verbose #47 > > | Days : i32 00:00:05 verbose #48 > > | Weeks : i32 00:00:05 verbose #49 > > | Months : i32 00:00:05 verbose #50 > > 00:00:05 verbose #51 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:05 verbose #52 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:05 verbose #53 > > │ ## day_of_week │ 00:00:05 verbose #54 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 verbose #55 > > 00:00:05 verbose #56 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #57 > > union day_of_week = 00:00:05 verbose #58 > > | Sunday 00:00:05 verbose #59 > > | Monday 00:00:05 verbose #60 > > | Tuesday 00:00:05 verbose #61 > > | Wednesday 00:00:05 verbose #62 > > | Thursday 00:00:05 verbose #63 > > | Friday 00:00:05 verbose #64 > > | Saturday 00:00:05 verbose #65 > > 00:00:05 verbose #66 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:05 verbose #67 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:05 verbose #68 > > │ ## month │ 00:00:05 verbose #69 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 verbose #70 > > 00:00:05 verbose #71 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #72 > > union month = 00:00:05 verbose #73 > > | January 00:00:05 verbose #74 > > | February 00:00:05 verbose #75 > > | March 00:00:05 verbose #76 > > | April 00:00:05 verbose #77 > > | May 00:00:05 verbose #78 > > | June 00:00:05 verbose #79 > > | July 00:00:05 verbose #80 > > | August 00:00:05 verbose #81 > > | September 00:00:05 verbose #82 > > | October 00:00:05 verbose #83 > > | November 00:00:05 verbose #84 > > | December 00:00:05 verbose #85 > > 00:00:05 verbose #86 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:05 verbose #87 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:05 verbose #88 > > │ ## day │ 00:00:05 verbose #89 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 verbose #90 > > 00:00:05 verbose #91 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #92 > > nominal day = i32 00:00:05 verbose #93 > > 00:00:05 verbose #94 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:05 verbose #95 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:05 verbose #96 > > │ ## year │ 00:00:05 verbose #97 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:05 verbose #98 > > 00:00:05 verbose #99 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 verbose #100 > > nominal year = i32 00:00:06 verbose #101 > > 00:00:06 verbose #102 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:06 verbose #103 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:06 verbose #104 > > │ ## fixed_recurrency │ 00:00:06 verbose #105 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 verbose #106 > > 00:00:06 verbose #107 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 verbose #108 > > union fixed_recurrency = 00:00:06 verbose #109 > > | Weekly : day_of_week 00:00:06 verbose #110 > > | Monthly : day 00:00:06 verbose #111 > > | Yearly : day * month 00:00:06 verbose #112 > > 00:00:06 verbose #113 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:06 verbose #114 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:06 verbose #115 > > │ ## recurrency │ 00:00:06 verbose #116 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 verbose #117 > > 00:00:06 verbose #118 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 verbose #119 > > union recurrency = 00:00:06 verbose #120 > > | Offset : recurrency_offset 00:00:06 verbose #121 > > | Fixed : list fixed_recurrency 00:00:06 verbose #122 > > 00:00:06 verbose #123 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:06 verbose #124 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:06 verbose #125 > > │ ## scheduling │ 00:00:06 verbose #126 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 verbose #127 > > 00:00:06 verbose #128 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 verbose #129 > > union scheduling = 00:00:06 verbose #130 > > | Manual : manual_scheduling 00:00:06 verbose #131 > > | Recurrent : recurrency 00:00:06 verbose #132 > > 00:00:06 verbose #133 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:06 verbose #134 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:06 verbose #135 > > │ ## task │ 00:00:06 verbose #136 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 verbose #137 > > 00:00:06 verbose #138 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 verbose #139 > > type task = 00:00:06 verbose #140 > > { 00:00:06 verbose #141 > > name : task_name 00:00:06 verbose #142 > > scheduling : scheduling 00:00:06 verbose #143 > > } 00:00:06 verbose #144 > > 00:00:06 verbose #145 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:06 verbose #146 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:06 verbose #147 > > │ ## date │ 00:00:06 verbose #148 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 verbose #149 > > 00:00:06 verbose #150 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 verbose #151 > > type date = 00:00:06 verbose #152 > > { 00:00:06 verbose #153 > > year : year 00:00:06 verbose #154 > > month : month 00:00:06 verbose #155 > > day : day 00:00:06 verbose #156 > > } 00:00:06 verbose #157 > > 00:00:06 verbose #158 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:06 verbose #159 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:06 verbose #160 > > │ ## status │ 00:00:06 verbose #161 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 verbose #162 > > 00:00:06 verbose #163 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 verbose #164 > > union status = 00:00:06 verbose #165 > > | Postponed : option () 00:00:06 verbose #166 > > 00:00:06 verbose #167 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:06 verbose #168 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:06 verbose #169 > > │ ## event │ 00:00:06 verbose #170 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 verbose #171 > > 00:00:06 verbose #172 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 verbose #173 > > type event = 00:00:06 verbose #174 > > { 00:00:06 verbose #175 > > date : date 00:00:06 verbose #176 > > status : status 00:00:06 verbose #177 > > } 00:00:06 verbose #178 > > 00:00:06 verbose #179 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:06 verbose #180 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:06 verbose #181 > > │ ## task_template │ 00:00:06 verbose #182 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 verbose #183 > > 00:00:06 verbose #184 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 verbose #185 > > type task_template = 00:00:06 verbose #186 > > { 00:00:06 verbose #187 > > task : task 00:00:06 verbose #188 > > events : list event 00:00:06 verbose #189 > > } 00:00:06 verbose #190 > > 00:00:06 verbose #191 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:06 verbose #192 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:06 verbose #193 > > │ ## get_tasks (test) │ 00:00:06 verbose #194 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:06 verbose #195 > > 00:00:06 verbose #196 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 verbose #197 > > //// test 00:00:06 verbose #198 > > 00:00:06 verbose #199 > > inl get_tasks () : list task_template = 00:00:06 verbose #200 > > [[ 00:00:06 verbose #201 > > { 00:00:06 verbose #202 > > task = 00:00:06 verbose #203 > > { 00:00:06 verbose #204 > > name = task_name "01" 00:00:06 verbose #205 > > scheduling = Manual WithSuggestion 00:00:06 verbose #206 > > } 00:00:06 verbose #207 > > events = [[]] 00:00:06 verbose #208 > > } 00:00:06 verbose #209 > > { 00:00:06 verbose #210 > > task = 00:00:06 verbose #211 > > { 00:00:06 verbose #212 > > name = task_name "02" 00:00:06 verbose #213 > > scheduling = Manual WithSuggestion 00:00:06 verbose #214 > > } 00:00:06 verbose #215 > > events = [[]] 00:00:06 verbose #216 > > } 00:00:06 verbose #217 > > { 00:00:06 verbose #218 > > task = 00:00:06 verbose #219 > > { 00:00:06 verbose #220 > > name = task_name "03" 00:00:06 verbose #221 > > scheduling = Manual WithSuggestion 00:00:06 verbose #222 > > } 00:00:06 verbose #223 > > events = [[]] 00:00:06 verbose #224 > > } 00:00:06 verbose #225 > > ]] 00:00:06 verbose #226 > > 00:00:06 verbose #227 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 verbose #228 > > //// test 00:00:06 verbose #229 > > ///! fsharp 00:00:06 verbose #230 > > ///! cuda 00:00:06 verbose #231 > > ///! rust 00:00:06 verbose #232 > > ///! typescript 00:00:06 verbose #233 > > ///! python 00:00:06 verbose #234 > > 00:00:06 verbose #235 > > get_tasks () 00:00:06 verbose #236 > > |> sm'.format_debug 00:00:06 verbose #237 > > |> _assert_string_contains "01" 00:00:18 verbose #238 > > 00:00:18 verbose #239 > > ╭─[ 12.12s - return value ]────────────────────────────────────────────────────╮ 00:00:18 verbose #240 > > │ .py output (Cuda): │ 00:00:18 verbose #241 > > │ __assert_string_contains / actual: 01 / expected: UH2_1(v0='01', │ 00:00:18 verbose #242 > > │ v1=US1_0(v0=US0_0()), v2=UH1_0(), v3=UH2_1(v0='02', v1=US1_0(v0=US0_0()), │ 00:00:18 verbose #243 > > │ v2=UH1_0(), v3=UH2_1(v0='03', v1=US1_0(v0=US0_0()), v2=UH1_0(), │ 00:00:18 verbose #244 > > │ v3=UH2_0()))) │ 00:00:18 verbose #245 > > │ │ 00:00:18 verbose #246 > > │ .rs output: │ 00:00:18 verbose #247 > > │ __assert_string_contains / actual: "01" / expected: "UH2_1("01", │ 00:00:18 verbose #248 > > │ US1_0(US0_0), UH1_0, UH2_1("02", US1_0(US0_0), UH1_0, UH2_1("03", │ 00:00:18 verbose #249 > > │ US1_0(US0_0), UH1_0, UH2_0)))" │ 00:00:18 verbose #250 > > │ │ 00:00:18 verbose #251 > > │ .ts output: │ 00:00:18 verbose #252 > > │ __assert_string_contains / actual: 01 / expected: UH2_1 (01, US1_0 US0_0, │ 00:00:18 verbose #253 > > │ UH1_0, UH2_1 (02, US1_0 US0_0, UH1_0, UH2_1 (03, US1_0 US0_0, UH1_0, │ 00:00:18 verbose #254 > > │ UH2_0))) │ 00:00:18 verbose #255 > > │ │ 00:00:18 verbose #256 > > │ .py output: │ 00:00:18 verbose #257 > > │ __assert_string_contains / actual: 01 / expected: UH2_1 ("01", US1_0 US0_0, │ 00:00:18 verbose #258 > > │ UH1_0, UH2_1 ("02", US1_0 US0_0, UH1_0, UH2_1 ("03", US1_0 US0_0, UH1_0, │ 00:00:18 verbose #259 > > │ UH2_0))) │ 00:00:18 verbose #260 > > │ │ 00:00:18 verbose #261 > > │ │ 00:00:18 verbose #262 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:18 verbose #263 > > 00:00:18 verbose #264 > > ╭─[ 12.12s - stdout ]──────────────────────────────────────────────────────────╮ 00:00:18 verbose #265 > > │ .fsx output: │ 00:00:18 verbose #266 > > │ __assert_string_contains / actual: "01" / expected: "UH2_1 │ 00:00:18 verbose #267 > > │ ("01", US1_0 US0_0, UH1_0, │ 00:00:18 verbose #268 > > │ UH2_1 ("02", US1_0 US0_0, UH1_0, UH2_1 ("03", US1_0 US0_0, UH1_0, │ 00:00:18 verbose #269 > > │ UH2_0)))" │ 00:00:18 verbose #270 > > │ │ 00:00:18 verbose #271 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:18 verbose #272 > > 00:00:18 verbose #273 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:18 verbose #274 > > //// test 00:00:18 verbose #275 > > ///! fsharp 00:00:18 verbose #276 > > ///! cuda 00:00:18 verbose #277 > > ///! rust 00:00:18 verbose #278 > > ///! typescript 00:00:18 verbose #279 > > ///! python 00:00:18 verbose #280 > > 00:00:18 verbose #281 > > get_tasks () 00:00:18 verbose #282 > > |> listm'.try_item 0i32 00:00:18 verbose #283 > > |> fun (Some task) => task.task.name 00:00:18 verbose #284 > > |> _assert_eq (task_name "01") 00:00:30 verbose #285 > > 00:00:30 verbose #286 > > ╭─[ 11.16s - return value ]────────────────────────────────────────────────────╮ 00:00:30 verbose #287 > > │ .py output (Cuda): │ 00:00:30 verbose #288 > > │ __assert_eq / actual: 01 / expected: 01 │ 00:00:30 verbose #289 > > │ │ 00:00:30 verbose #290 > > │ .rs output: │ 00:00:30 verbose #291 > > │ __assert_eq / actual: "01" / expected: "01" │ 00:00:30 verbose #292 > > │ │ 00:00:30 verbose #293 > > │ .ts output: │ 00:00:30 verbose #294 > > │ __assert_eq / actual: 01 / expected: 01 │ 00:00:30 verbose #295 > > │ │ 00:00:30 verbose #296 > > │ .py output: │ 00:00:30 verbose #297 > > │ __assert_eq / actual: 01 / expected: 01 │ 00:00:30 verbose #298 > > │ │ 00:00:30 verbose #299 > > │ │ 00:00:30 verbose #300 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:30 verbose #301 > > 00:00:30 verbose #302 > > ╭─[ 11.16s - stdout ]──────────────────────────────────────────────────────────╮ 00:00:30 verbose #303 > > │ .fsx output: │ 00:00:30 verbose #304 > > │ __assert_eq / actual: "01" / expected: "01" │ 00:00:30 verbose #305 > > │ │ 00:00:30 verbose #306 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:30 verbose #307 > 00:00:29 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 16233 } 00:00:30 verbose #308 > 00:00:29 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:00:30 verbose #309 > "nbconvert", 00:00:30 verbose #310 > "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb", 00:00:30 verbose #311 > "--to", 00:00:30 verbose #312 > "html", 00:00:30 verbose #313 > "--HTMLExporter.theme=dark", 00:00:30 verbose #314 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:30 verbose #315 > 00:00:30 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb to html 00:00:30 verbose #316 > 00:00:30 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:30 verbose #317 > 00:00:30 verbose #7 ! validate(nb) 00:00:31 verbose #318 > 00:00:30 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:31 verbose #319 > 00:00:30 verbose #9 ! return _pygments_highlight( 00:00:31 verbose #320 > 00:00:30 verbose #10 ! [NbConvertApp] Writing 300476 bytes to /home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.html 00:00:31 verbose #321 > 00:00:30 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 } 00:00:31 verbose #322 > 00:00:30 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 } 00:00:31 verbose #323 > 00:00:30 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:00:31 verbose #324 > "-c", 00:00:31 verbose #325 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:00:31 verbose #326 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:31 verbose #327 > 00:00:31 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:31 verbose #328 > 00:00:31 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:31 verbose #329 > 00:00:31 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 17194 } 00:00:31 debug #330 runtime.execute_with_options_async / { exit_code = 0; output_length = 20653 } 00:00:31 debug #1 main / executeCommand / exitCode: 0 / command: ../../workspace/target/release/spiral_builder dib --path Tasks.dib --retries 3 00:00:00 debug #1 writeDibCode / output: Spi / path: Tasks.dib 00:00:00 debug #2 parseDibCode / output: Spi / file: Tasks.dib
In [ ]:
{ pwsh ../apps/chat/build.ps1 } | Invoke-Block
00:00:00 debug #1 writeDibCode / output: Spi / path: chat_contract.dib 00:00:00 debug #2 parseDibCode / output: Spi / file: chat_contract.dib 00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 verbose #2 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 debug #1 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: chat_contract.spi 00:00:00 debug #2 Supervisor.buildFile / AsyncSeq.scan / outputContent: / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: chat_contract.spi 00:00:00 debug #3 Supervisor.buildFile / takeWhileInclusive / outputContent: / errors: [] / typeErrorCount: 0 / retry: 0 / path: chat_contract.spi 00:00:00 verbose #4 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # chat_contract\nopen rust\nopen rust.rust_operators\n\n/// ## chat_cont...27 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.spi"}} / result: 00:00:00 verbose #5 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.spi"}} / result: 00:00:00 debug #6 Supervisor.buildFile / AsyncSeq.scan / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("*/ $0 /*")>] #endif type TypeEmit<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable... / i': 15uy / n: 14uy" let v287 : bool = Fable.Core.RustInterop.emitRustExpr () v286 () let v0 : (unit -> unit) = closure0() v0 |> ignore () / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / path: chat_contract.spi 00:00:00 debug #7 Supervisor.buildFile / takeWhileInclusive / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("*/ $0 /*")>] #endif type TypeEmit<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable... / i': 15uy / n: 14uy" let v287 : bool = Fable.Core.RustInterop.emitRustExpr () v286 () let v0 : (unit -> unit) = closure0() v0 |> ignore () / errors: [] / typeErrorCount: 0 / retry: 0 / path: chat_contract.spi 00:00:00 debug #8 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:00 debug #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: chat_contract / hash: / code.Length: 28575 00:00:00 debug #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj 00:00:00 debug #1 runtime.execute_with_options_async / { options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/chat/contract/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/chat_contract" } } 00:00:00 verbose #2 > MSBuild version 17.10.0-preview-24101-01+07fd5d51f for .NET 00:00:00 verbose #3 > Determining projects to restore... 00:00:01 verbose #4 > Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b 00:00:01 verbose #5 > The last full restore is still up to date. Nothing left to do. 00:00:01 verbose #6 > Total time taken: 0 milliseconds 00:00:01 verbose #7 > Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b 00:00:01 verbose #8 > Restoring /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj 00:00:01 verbose #9 > Starting restore process. 00:00:02 verbose #10 > Total time taken: 0 milliseconds 00:00:02 verbose #11 > Restored /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj (in 279 ms). 00:00:02 verbose #12 > /usr/share/dotnet/sdk/9.0.100-preview.1.24101.2/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets(313,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy [/home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj] 00:00:11 verbose #13 > chat_contract -> /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/bin/Release/net9.0/linux-x64/chat_contract.dll 00:00:12 verbose #14 > chat_contract -> /home/runner/work/polyglot/polyglot/apps/chat/contract/dist 00:00:12 debug #15 runtime.execute_with_options_async / { exit_code = 0; output_length = 1149 } targetDir: /home/runner/work/polyglot/polyglot/target/Builder/chat_contract Fable 4.19.3: F# to Rust compiler (status: alpha) Thanks to the contributor! @entropitor Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target/Builder/chat_contract/chat_contract.fsproj... target/Builder/chat_contract> dotnet restore chat_contract.fable-temp.csproj -p:FABLE_COMPILER=true -p:FABLE_COMPILER_4=true -p:FABLE_COMPILER_RUST=true -p:CONTRACT=true -p:_LINUX=true Determining projects to restore... Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b The last full restore is still up to date. Nothing left to do. Total time taken: 0 milliseconds Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b Restoring /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fable-temp.csproj Starting restore process. Total time taken: 0 milliseconds Restored /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fable-temp.csproj (in 303 ms). target/Builder/chat_contract> dotnet restore /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj Determining projects to restore... Restored /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj (in 297 ms). Project and references (14 source files) parsed in 4961ms Started Fable compilation... Fable compilation finished in 6101ms ./lib/spiral/date_time.fsx(1012,0): (1012,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/async_.fsx(76,0): (76,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/crypto.fsx(1326,0): (1326,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/sm.fsx(414,0): (414,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/threading.fsx(145,0): (145,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/common.fsx(1425,0): (1425,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/platform.fsx(104,0): (104,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/networking.fsx(4626,0): (4626,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/trace.fsx(1524,0): (1524,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./target/Builder/chat_contract/chat_contract.fs(544,6): (544,12) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/runtime.fsx(7219,0): (7219,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/file_system.fsx(11479,0): (11479,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! Downloading crates ... Downloaded cfg-if v0.1.10 Downloaded wasm-bindgen-macro v0.2.93 Downloaded wasm-bindgen-shared v0.2.93 Downloaded near-sdk-macros v5.4.0 Downloaded wee_alloc v0.4.5 Downloaded js-sys v0.3.70 Downloaded near-sys v0.2.2 Downloaded wasm-bindgen-backend v0.2.93 Downloaded near-sdk v5.4.0 Downloaded multibase v0.9.1 Downloaded wasm-bindgen v0.2.93 Downloaded unsigned-varint v0.8.0 Downloaded data-encoding-macro v0.1.15 Downloaded base-x v0.2.11 Downloaded wasm-bindgen-macro-support v0.2.93 Downloaded near-token v0.3.0 Downloaded memory_units v0.4.0 Downloaded data-encoding-macro-internal v0.1.13 Downloaded near-gas v0.3.0 Compiling proc-macro-error v1.0.4 Compiling syn v2.0.76 Compiling wasm-bindgen-shared v0.2.93 Compiling bumpalo v3.16.0 Compiling typenum v1.17.0 Compiling serde v1.0.209 Compiling borsh v1.5.1 Compiling syn v1.0.109 Compiling once_cell v1.19.0 Compiling cfg-if v1.0.0 Compiling wasm-bindgen v0.2.93 Compiling near-sdk-macros v5.4.0 Compiling data-encoding v2.6.0 Compiling hybrid-array v0.2.0-rc.9 Compiling wee_alloc v0.4.5 Compiling data-encoding-macro-internal v0.1.13 Compiling crypto-common v0.2.0-rc.1 Compiling serde_json v1.0.127 Compiling ryu v1.0.18 Compiling const-oid v0.10.0-rc.0 Compiling strum v0.26.3 Compiling itoa v1.0.11 Compiling cfg-if v0.1.10 Compiling Inflector v0.11.4 Compiling memchr v2.7.4 Compiling block-buffer v0.11.0-rc.1 Compiling memory_units v0.4.0 Compiling digest v0.11.0-pre.9 Compiling wasm-bindgen-backend v0.2.93 Compiling darling_core v0.20.10 Compiling data-encoding-macro v0.1.15 Compiling near-sys v0.2.2 Compiling bs58 v0.5.1 Compiling base64 v0.22.1 Compiling base-x v0.2.11 Compiling multibase v0.9.1 Compiling wasm-bindgen-macro-support v0.2.93 Compiling sha2 v0.11.0-pre.4 Compiling unsigned-varint v0.8.0 Compiling inline_colorization v0.1.6 Compiling serde_derive v1.0.209 Compiling syn_derive v0.1.8 Compiling wasm-bindgen-macro v0.2.93 Compiling darling_macro v0.20.10 Compiling darling v0.20.10 Compiling borsh-derive v1.5.1 Compiling strum_macros v0.26.4 Compiling js-sys v0.3.70 Compiling near-token v0.3.0 Compiling near-gas v0.3.0 Compiling near-account-id v1.0.0 Compiling getrandom v0.2.15 Compiling near-sdk v5.4.0 Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust) Compiling chat_contract v0.0.1 (/home/runner/work/polyglot/polyglot/apps/chat/contract) Finished `release` profile [optimized] target(s) in 17.68s Compiling typenum v1.17.0 Compiling futures-executor v0.3.30 Compiling strum_macros v0.26.4 Compiling near-token v0.3.0 Compiling opentelemetry_sdk v0.22.1 Compiling futures v0.3.30 Compiling near-performance-metrics v0.23.0 Compiling near-gas v0.3.0 Compiling near-sys v0.2.2 Compiling generic-array v0.14.7 Compiling crypto-common v0.1.6 Compiling block-buffer v0.10.4 Compiling block-padding v0.3.3 Compiling digest v0.10.7 Compiling inout v0.1.3 Compiling opentelemetry-proto v0.5.0 Compiling cipher v0.4.4 Compiling sha2 v0.10.8 Compiling curve25519-dalek v4.1.3 Compiling near-primitives-core v0.23.0 Compiling hmac v0.12.1 Compiling blake2 v0.10.6 Compiling sha1 v0.10.6 Compiling opentelemetry-otlp v0.15.0 Compiling aes v0.8.4 Compiling ed25519-dalek v2.1.1 Compiling near-crypto v0.23.0 Compiling tracing-opentelemetry v0.23.0 Compiling near-parameters v0.23.0 Compiling near-o11y v0.23.0 Compiling near-fmt v0.23.0 Compiling sha3 v0.10.8 Compiling near-async v0.23.0 Compiling near-primitives v0.23.0 Compiling digest v0.9.0 Compiling zbus v3.15.2 Compiling pbkdf2 v0.11.0 Compiling hkdf v0.12.4 Compiling cbc v0.1.2 Compiling crypto-mac v0.9.1 Compiling block-buffer v0.9.0 Compiling sha2 v0.9.9 Compiling hmac v0.9.0 Compiling zip v0.6.6 Compiling slipped10 v0.4.6 Compiling binary-install v0.2.0 Compiling near-sandbox-utils v0.9.0 Compiling near-sdk-macros v5.4.0 Compiling near-sandbox-utils v0.10.1 Compiling near-sdk v5.4.0 Compiling secret-service v3.1.0 Compiling keyring v2.3.3 Compiling near-chain-configs v0.23.0 Compiling near-jsonrpc-primitives v0.23.0 Compiling near-jsonrpc-client v0.10.1 Compiling near-socialdb-client v0.3.2 Compiling near-cli-rs v0.11.1 Compiling cargo-near v0.6.4 Compiling near-workspaces v0.11.1 Compiling chat_contract_tests v0.0.1 (/home/runner/work/polyglot/polyglot/apps/chat/contract/tests) Finished `release` profile [optimized] target(s) in 1m 29s Running `/home/runner/work/polyglot/polyglot/workspace/target/release/chat_contract_tests` Installed near-sandbox into /home/runner/work/polyglot/polyglot/workspace/target/release/build/near-sandbox-utils-c39df2faf0b47791/out/.near/near-sandbox-1.40.0_7dd0b5993577f592be15eb102e5a3da37be66271/near-sandbox new: ExecutionFinalResult { total_gas_burnt: NearGas { inner: 1550478844443, }, transaction: ExecutionOutcome { transaction_hash: 9HrcLPQ7ipJb4FDtVBvaR5m31N8KNUJZ3MBWKH4jC3e7, block_hash: 5GgSp36DTkUsSaoY9tjy38ViLsQbwUXojHUG8qB7gb5K, logs: [], receipt_ids: [ CDg1DdMWmFJ6oqqsdGTqnR7PVutC6WjDzHpwryr5JiZ9, ], gas_burnt: NearGas { inner: 308066207802, }, tokens_burnt: NearToken { inner: 30806620780200000000, }, executor_id: AccountId( "dev-20240906150821-61494692078095", ), status: SuccessReceiptId(CDg1DdMWmFJ6oqqsdGTqnR7PVutC6WjDzHpwryr5JiZ9), }, receipts: [ ExecutionOutcome { transaction_hash: CDg1DdMWmFJ6oqqsdGTqnR7PVutC6WjDzHpwryr5JiZ9, block_hash: 5GgSp36DTkUsSaoY9tjy38ViLsQbwUXojHUG8qB7gb5K, logs: [], receipt_ids: [ DtN5m5YveERRJa2E7EVuXB9pniasHTk83FrWSujsQfXa, ], gas_burnt: NearGas { inner: 1242412636641, }, tokens_burnt: NearToken { inner: 124241263664100000000, }, executor_id: AccountId( "dev-20240906150821-61494692078095", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.001035719868087924 outcome (success: true): outcome_gas_burnt_usd: 0.000205788226811736 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.000829931641276188 outcome_tokens_burnt_usd: 0.0 claim_alias(contract, ''): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 1825999512589, }, transaction: ExecutionOutcome { transaction_hash: 2kiaAQxKLJMSSyDmx4JnWRj5setjb73EdqT8h72c5wXv, block_hash: 241HEsuZdtUiQEH6rf93ySF1mA8nU5vG52MFCFFECho6, logs: [], receipt_ids: [ 25QmKrzKgwtUwjXjpp1Vnm8fyajx8BJRkNMrqe4zbcSu, ], gas_burnt: NearGas { inner: 308110926482, }, tokens_burnt: NearToken { inner: 30811092648200000000, }, executor_id: AccountId( "dev-20240906150821-61494692078095", ), status: SuccessReceiptId(25QmKrzKgwtUwjXjpp1Vnm8fyajx8BJRkNMrqe4zbcSu), }, receipts: [ ExecutionOutcome { transaction_hash: 25QmKrzKgwtUwjXjpp1Vnm8fyajx8BJRkNMrqe4zbcSu, block_hash: 241HEsuZdtUiQEH6rf93ySF1mA8nU5vG52MFCFFECho6, logs: [ "claim_alias ;\n alias: \"\" ;\n account_id: AccountId(\n \"dev-20240906150821-61494692078095\",\n) ;\n timestamp: 1725635303028880758", ], receipt_ids: [ HUqqZzYUNPP3ecfff2i8HJPADF8tiXQsQHxF33dZ7bn1, ], gas_burnt: NearGas { inner: 1294706023607, }, tokens_burnt: NearToken { inner: 129470602360700000000, }, executor_id: AccountId( "dev-20240906150821-61494692078095", ), status: Failure(ActionError(ActionError { index: Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: Invalid alias")) })), }, ExecutionOutcome { transaction_hash: HUqqZzYUNPP3ecfff2i8HJPADF8tiXQsQHxF33dZ7bn1, block_hash: 2ywisg8CSSfnr5kKhKWDe4aWP8WLSaKsaTYQFjP3VWai, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20240906150821-61494692078095", ), status: SuccessValue(''), }, ], status: Failure(ActionError(ActionError { index: Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: Invalid alias")) })), } total_gas_burnt_usd: 0.001219767674409452 outcome (success: true): outcome_gas_burnt_usd: 0.000205818098889976 outcome_tokens_burnt_usd: 0.0 outcome (success: false): outcome_gas_burnt_usd: 0.000864863623769476 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 dev_create_account(account1): Account { id: AccountId( "dev-20240906150823-65203187145440", ), } generate_cid_borsh(account1): ViewResultDetails { result: [ 59, 0, 0, 0, 98, 97, 102, 107, 114, 101, 105, 104, 100, 119, 100, 99, 101, 102, 103, 104, 52, 100, 113, 107, 106, 118, 54, 55, 117, 122, 99, 109, 119, 55, 111, 106, 101, 101, 54, 120, 101, 100, 122, 100, 101, 116, 111, 106, 117, 122, 106, 101, 118, 116, 101, 110, 120, 113, 117, 118, 121, 107, 117, ], logs: [], } claim_alias(account1, alias1): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 2251508365774, }, transaction: ExecutionOutcome { transaction_hash: BCsRE9j7gusyG3hk1cqcxGDKybecQocE14mU3jxrS7PE, block_hash: 2DcHpqEw6ajakQxNuNuQZAGtuQbEgv5Cnx5pKkD9pvEH, logs: [], receipt_ids: [ HgonTuMeeb2eQL71tvU9uLjXvHFb6dwfMhMQEk2pj7Y8, ], gas_burnt: NearGas { inner: 308124342086, }, tokens_burnt: NearToken { inner: 30812434208600000000, }, executor_id: AccountId( "dev-20240906150823-65203187145440", ), status: SuccessReceiptId(HgonTuMeeb2eQL71tvU9uLjXvHFb6dwfMhMQEk2pj7Y8), }, receipts: [ ExecutionOutcome { transaction_hash: HgonTuMeeb2eQL71tvU9uLjXvHFb6dwfMhMQEk2pj7Y8, block_hash: 97BXmTz7ia3GQTM8t2PmB7rPK6wcnG4tJf1KK3LiQxBj, logs: [ "claim_alias ;\n alias: \"alias1\" ;\n account_id: AccountId(\n \"dev-20240906150823-65203187145440\",\n) ;\n timestamp: 1725635304849588279", ], receipt_ids: [ ChdqHnY5GmyeMQrHS9itbJvzJqkCAPEAei1frtYZv6H9, ], gas_burnt: NearGas { inner: 1720201461188, }, tokens_burnt: NearToken { inner: 172020146118800000000, }, executor_id: AccountId( "dev-20240906150821-61494692078095", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: ChdqHnY5GmyeMQrHS9itbJvzJqkCAPEAei1frtYZv6H9, block_hash: DzYHUZ5zXbtHjUEZ57xWKmdX8BaaLGGzb9LU3HNoBLod, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20240906150823-65203187145440", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.0015040075883370318 outcome (success: true): outcome_gas_burnt_usd: 0.000205827060513448 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.001149094576073584 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 claim_alias(account1, alias1): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 2076448382059, }, transaction: ExecutionOutcome { transaction_hash: GfWvCqFASkq8bEQL41NZPEf4DhH5tcZbKtQHZZtprYeH, block_hash: FAetoBdLz5KwuNmKkRirvnAx7QhoKzvFr5jJWZfJJv3b, logs: [], receipt_ids: [ 3UFNkKy7WuWYSkDEkZks3ExEYSSbiyLFegJK2zqXa28g, ], gas_burnt: NearGas { inner: 308124342086, }, tokens_burnt: NearToken { inner: 30812434208600000000, }, executor_id: AccountId( "dev-20240906150823-65203187145440", ), status: SuccessReceiptId(3UFNkKy7WuWYSkDEkZks3ExEYSSbiyLFegJK2zqXa28g), }, receipts: [ ExecutionOutcome { transaction_hash: 3UFNkKy7WuWYSkDEkZks3ExEYSSbiyLFegJK2zqXa28g, block_hash: GcThxrrAwMFGd3SM5xhWEgRfNcQBoaB9vDZjByjhNegQ, logs: [ "claim_alias ;\n alias: \"alias1\" ;\n account_id: AccountId(\n \"dev-20240906150823-65203187145440\",\n) ;\n timestamp: 1725635305861502436", "Alias already claimed", ], receipt_ids: [ 4PR4feWzMUmXbusxrgRJunRi47AzcZ7uNMd6bt7egMnZ, ], gas_burnt: NearGas { inner: 1545141477473, }, tokens_burnt: NearToken { inner: 154514147747300000000, }, executor_id: AccountId( "dev-20240906150821-61494692078095", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: 4PR4feWzMUmXbusxrgRJunRi47AzcZ7uNMd6bt7egMnZ, block_hash: 9ponUfGTzSg4gjYePoVpfJ6QqTdodErsadz25ujVsAaP, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20240906150823-65203187145440", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.0013870675192154118 outcome (success: true): outcome_gas_burnt_usd: 0.000205827060513448 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.001032154506951964 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 get_account_info(account1): Some( ( "alias1", ( 1725635304849588279, 0, ), ), ) get_alias_map(account1, alias1): Some( { AccountId( "dev-20240906150823-65203187145440", ): ( 1725635304849588279, 0, ), }, ) dev_create_account(account2): Account { id: AccountId( "dev-20240906150826-72149056471042", ), } claim_alias(alias2): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 2338858145404, }, transaction: ExecutionOutcome { transaction_hash: G34by6v3Mb1ubpV15Fh5vn7TcHYwPJzegg9CHUPARWTK, block_hash: 8mfDV8Bz4YKVjtRA5bKRxCk4VqmwmwRSyPC4TLqQ1S2L, logs: [], receipt_ids: [ Gks1WaPcSo9yhf1wBN2dHPooSN7MWCf84egixFPcGE7y, ], gas_burnt: NearGas { inner: 308124342086, }, tokens_burnt: NearToken { inner: 30812434208600000000, }, executor_id: AccountId( "dev-20240906150826-72149056471042", ), status: SuccessReceiptId(Gks1WaPcSo9yhf1wBN2dHPooSN7MWCf84egixFPcGE7y), }, receipts: [ ExecutionOutcome { transaction_hash: Gks1WaPcSo9yhf1wBN2dHPooSN7MWCf84egixFPcGE7y, block_hash: QgpGVDXHgU1SkQwyewnSujhicVSLkxJMMGUjQPHXjeF, logs: [ "claim_alias ;\n alias: \"alias2\" ;\n account_id: AccountId(\n \"dev-20240906150826-72149056471042\",\n) ;\n timestamp: 1725635307884362667", ], receipt_ids: [ 2jGnBcxpQdGF8H48G7F1CKfh3i8rqePSMCWzNv5Qdk1G, ], gas_burnt: NearGas { inner: 1807551240818, }, tokens_burnt: NearToken { inner: 180755124081800000000, }, executor_id: AccountId( "dev-20240906150821-61494692078095", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: 2jGnBcxpQdGF8H48G7F1CKfh3i8rqePSMCWzNv5Qdk1G, block_hash: 9yEAR51HpUB2cCHrtYVrmT2rgDoB5Sa84ZNkQZ4PayvC, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20240906150826-72149056471042", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.001562357241129872 outcome (success: true): outcome_gas_burnt_usd: 0.000205827060513448 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.001207444228866424 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 get_account_info(account2): Some( ( "alias2", ( 1725635307884362667, 0, ), ), ) get_alias_map_borsh(alias2): Some( { AccountId( "dev-20240906150826-72149056471042", ): ( 1725635307884362667, 0, ), }, ) claim_alias(account2, alias1): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 2642282396731, }, transaction: ExecutionOutcome { transaction_hash: 9ipWz3ZLJCpt58cdEJ78jBEjbkZRy1A5Q6BPdipYvR8H, block_hash: 6cauu8UULig1LUTp6Qmocp9ydLfReTZpCxfyJoKL2Fh4, logs: [], receipt_ids: [ DYtm8b5xSj2eJg3pHATTrxRpv2rQuEAWU4Y92pCd35ic, ], gas_burnt: NearGas { inner: 308124342086, }, tokens_burnt: NearToken { inner: 30812434208600000000, }, executor_id: AccountId( "dev-20240906150826-72149056471042", ), status: SuccessReceiptId(DYtm8b5xSj2eJg3pHATTrxRpv2rQuEAWU4Y92pCd35ic), }, receipts: [ ExecutionOutcome { transaction_hash: DYtm8b5xSj2eJg3pHATTrxRpv2rQuEAWU4Y92pCd35ic, block_hash: ED9U7YEMhHzWGz6s48DkR7EeaosNA69ek4P5pRUS5bUK, logs: [ "claim_alias ;\n alias: \"alias1\" ;\n account_id: AccountId(\n \"dev-20240906150826-72149056471042\",\n) ;\n timestamp: 1725635308896128456", ], receipt_ids: [ ArEDZ4fTikumTMDVE9g8VeCQZR2FwKhhZtFvz6cmzU66, ], gas_burnt: NearGas { inner: 2110975492145, }, tokens_burnt: NearToken { inner: 211097549214500000000, }, executor_id: AccountId( "dev-20240906150821-61494692078095", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: ArEDZ4fTikumTMDVE9g8VeCQZR2FwKhhZtFvz6cmzU66, block_hash: 6482gwwFGJL1zjbvx4fKsZScMiC2BXd8Di8gWzZ2RzgG, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20240906150826-72149056471042", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.0017650446410163079 outcome (success: true): outcome_gas_burnt_usd: 0.000205827060513448 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.0014101316287528601 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 get_account_info(account2): Some( ( "alias1", ( 1725635308896128456, 1, ), ), ) get_alias_map(account2, alias1): Some( { AccountId( "dev-20240906150823-65203187145440", ): ( 1725635304849588279, 0, ), AccountId( "dev-20240906150826-72149056471042", ): ( 1725635308896128456, 1, ), }, ) get_alias_map(account2, alias2): Some( {}, ) claim_alias(account1, alias2): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 2637246307255, }, transaction: ExecutionOutcome { transaction_hash: AkPp11wyuHKmLm1ZdSekr5ZRRg6WdndSfTLdNruFYcCo, block_hash: EFN6gZ5hS8W5wdLE9ZAs8A46dd5aymV3R6JLaUyNcKxm, logs: [], receipt_ids: [ DkyvDoGQo3NH9H95iCysgjyv81HTY2BcsGL3upy81RgK, ], gas_burnt: NearGas { inner: 308124342086, }, tokens_burnt: NearToken { inner: 30812434208600000000, }, executor_id: AccountId( "dev-20240906150823-65203187145440", ), status: SuccessReceiptId(DkyvDoGQo3NH9H95iCysgjyv81HTY2BcsGL3upy81RgK), }, receipts: [ ExecutionOutcome { transaction_hash: DkyvDoGQo3NH9H95iCysgjyv81HTY2BcsGL3upy81RgK, block_hash: 39VRDKYUwsLdK1TGPtH6aiKhHf7AT28LNpPYZFYLvE1c, logs: [ "claim_alias ;\n alias: \"alias2\" ;\n account_id: AccountId(\n \"dev-20240906150823-65203187145440\",\n) ;\n timestamp: 1725635309908085507", ], receipt_ids: [ 5pG4HSmpEDtJeYR3jFJo3z7F3tYmiAbFzevmaGTFzgq3, ], gas_burnt: NearGas { inner: 2105939402669, }, tokens_burnt: NearToken { inner: 210593940266900000000, }, executor_id: AccountId( "dev-20240906150821-61494692078095", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: 5pG4HSmpEDtJeYR3jFJo3z7F3tYmiAbFzevmaGTFzgq3, block_hash: 61tXEPffDTo7yWiyQF2eC7f5AqeEKTzFMQfwdQBSe2dY, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20240906150823-65203187145440", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.00176168053324634 outcome (success: true): outcome_gas_burnt_usd: 0.000205827060513448 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.001406767520982892 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 get_account_info(account1): Some( ( "alias2", ( 1725635309908085507, 0, ), ), ) get_alias_map(account1, alias2): Some( { AccountId( "dev-20240906150823-65203187145440", ): ( 1725635309908085507, 0, ), }, ) get_alias_map(account1, alias1): Some( { AccountId( "dev-20240906150826-72149056471042", ): ( 1725635308896128456, 1, ), }, ) claim_alias(account1, alias1): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 2642282396731, }, transaction: ExecutionOutcome { transaction_hash: 5sSpnogzQ8AGHMr95mRb9TY6oeudSbVKjjWfPrRwhfaS, block_hash: G7HXnoMbydXS4SVBH9QP4xBk1A9iceGBN5BpV96kE29m, logs: [], receipt_ids: [ GqjAx6x7ABxoBnzRNRuKJD85dRaKWeVysgGVBobaWDKB, ], gas_burnt: NearGas { inner: 308124342086, }, tokens_burnt: NearToken { inner: 30812434208600000000, }, executor_id: AccountId( "dev-20240906150823-65203187145440", ), status: SuccessReceiptId(GqjAx6x7ABxoBnzRNRuKJD85dRaKWeVysgGVBobaWDKB), }, receipts: [ ExecutionOutcome { transaction_hash: GqjAx6x7ABxoBnzRNRuKJD85dRaKWeVysgGVBobaWDKB, block_hash: 8aLuKoKZoWPFW6K92zKo4ezsQu6J63688HtPqPsabegs, logs: [ "claim_alias ;\n alias: \"alias1\" ;\n account_id: AccountId(\n \"dev-20240906150823-65203187145440\",\n) ;\n timestamp: 1725635310919464403", ], receipt_ids: [ 77hHaUyCAHLJRSCPAFqmzviu9ehkna6VyB7mXM2aevx1, ], gas_burnt: NearGas { inner: 2110975492145, }, tokens_burnt: NearToken { inner: 211097549214500000000, }, executor_id: AccountId( "dev-20240906150821-61494692078095", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: 77hHaUyCAHLJRSCPAFqmzviu9ehkna6VyB7mXM2aevx1, block_hash: EphzVBDDm3Xb85UkX5pJ9BYrpB68LZHMCvBSimp3Jdj6, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20240906150823-65203187145440", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.0017650446410163079 outcome (success: true): outcome_gas_burnt_usd: 0.000205827060513448 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.0014101316287528601 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 get_account_info(account1): Some( ( "alias1", ( 1725635310919464403, 1, ), ), ) get_alias_map(account1, alias1): Some( { AccountId( "dev-20240906150823-65203187145440", ): ( 1725635310919464403, 1, ), AccountId( "dev-20240906150826-72149056471042", ): ( 1725635308896128456, 0, ), }, ) get_alias_map(account1, alias2): Some( {}, )
In [ ]:
{ pwsh ../apps/spiral/temp/extension/build.ps1 } | Invoke-Block
bun install v1.1.26 (0a37423b) + @playwright/test@1.44.0 + @types/chrome@0.0.268 + npm-check-updates@17.0.0-5 + buffer@6.0.3 11 packages installed [142.00ms] [INFO]: 🎯 Checking for the Wasm target... [INFO]: 🌀 Compiling to Wasm... Compiling proc-macro2 v1.0.86 Compiling unicode-ident v1.0.12 Compiling autocfg v1.3.0 Compiling serde v1.0.209 Compiling once_cell v1.19.0 Compiling wasm-bindgen-shared v0.2.93 Compiling cfg-if v1.0.0 Compiling log v0.4.22 Compiling bumpalo v3.16.0 Compiling version_check v0.9.5 Compiling wasm-bindgen v0.2.93 Compiling memchr v2.7.4 Compiling quote v1.0.37 Compiling syn v2.0.76 Compiling thiserror v1.0.63 Compiling smallvec v1.13.2 Compiling pin-project-lite v0.2.14 Compiling futures-core v0.3.30 Compiling slab v0.4.9 Compiling lock_api v0.4.12 Compiling futures-sink v0.3.30 Compiling parking_lot_core v0.9.10 Compiling itoa v1.0.11 Compiling futures-channel v0.3.30 Compiling hashbrown v0.14.5 Compiling futures-io v0.3.30 Compiling libc v0.2.158 Compiling unicode-xid v0.2.5 Compiling ryu v1.0.18 Compiling pin-utils v0.1.0 Compiling percent-encoding v2.3.1 Compiling serde_json v1.0.127 Compiling futures-task v0.3.30 Compiling const_format_proc_macros v0.2.32 Compiling proc-macro-error-attr v1.0.4 Compiling equivalent v1.0.1 Compiling tinyvec_macros v0.1.1 Compiling tinyvec v1.8.0 Compiling indexmap v2.4.0 Compiling proc-macro-error v1.0.4 Compiling bytes v1.7.1 Compiling unicode-segmentation v1.11.0 Compiling fnv v1.0.7 Compiling convert_case v0.6.0 Compiling const_format v0.2.32 Compiling unicode-normalization v0.1.22 Compiling form_urlencoded v1.2.1 Compiling wasm-bindgen-backend v0.2.93 Compiling proc-macro-utils v0.10.0 Compiling proc-macro-utils v0.8.0 Compiling proc-macro2-diagnostics v0.10.1 Compiling xxhash-rust v0.8.12 Compiling unicode-bidi v0.3.15 Compiling server_fn_macro v0.6.14 Compiling wasm-bindgen-macro-support v0.2.93 Compiling idna v0.5.0 Compiling manyhow-macros v0.10.4 Compiling slotmap v1.0.7 Compiling half v2.4.1 Compiling yansi v1.0.1 Compiling camino v1.1.9 Compiling anyhow v1.0.86 Compiling scopeguard v1.2.0 Compiling ciborium-io v0.2.2 Compiling paste v1.0.15 Compiling ciborium-ll v0.2.2 Compiling serde_derive v1.0.209 Compiling wasm-bindgen-macro v0.2.93 Compiling thiserror-impl v1.0.63 Compiling futures-macro v0.3.30 Compiling js-sys v0.3.70 Compiling futures-util v0.3.30 Compiling tracing-attributes v0.1.27 Compiling futures-executor v0.3.30 Compiling pin-project-internal v1.1.5 Compiling futures v0.3.30 Compiling quote-use-macros v0.8.4 Compiling quote-use v0.8.4 Compiling syn_derive v0.1.8 Compiling pin-project v1.1.5 Compiling manyhow v0.10.4 Compiling url v2.5.2 Compiling web-sys v0.3.70 Compiling wasm-bindgen-futures v0.4.43 Compiling serde_spanned v0.6.7 Compiling toml_datetime v0.6.8 Compiling http v1.1.0 Compiling tracing-core v0.1.32 Compiling collection_literals v1.0.1 Compiling prettyplease v0.2.22 Compiling winnow v0.6.18 Compiling interpolator v0.5.0 Compiling same-file v1.0.6 Compiling walkdir v2.5.0 Compiling attribute-derive-macro v0.9.2 Compiling tracing v0.1.40 Compiling oco_ref v0.1.1 Compiling serde_qs v0.12.0 Compiling toml_edit v0.22.20 Compiling ciborium v0.2.2 Compiling serde-wasm-bindgen v0.6.5 Compiling parking_lot v0.12.3 Compiling rstml v0.11.2 Compiling dashmap v5.5.3 Compiling server_fn_macro_default v0.6.14 Compiling derive-where v1.2.7 Compiling getrandom v0.2.15 Compiling send_wrapper v0.6.0 Compiling aho-corasick v1.1.3 Compiling lazy_static v1.5.0 Compiling utf8-width v0.1.7 Compiling minimal-lexical v0.2.1 Compiling self_cell v1.0.4 Compiling either v1.13.0 Compiling base64 v0.22.1 Compiling regex-syntax v0.8.4 Compiling rustc-hash v1.1.0 Compiling itertools v0.12.1 Compiling nom v7.1.3 Compiling regex-automata v0.4.7 Compiling html-escape v0.2.13 Compiling leptos_hot_reload v0.6.14 Compiling uuid v1.10.0 Compiling attribute-derive v0.9.2 Compiling toml v0.8.19 Compiling typed-builder-macro v0.18.2 Compiling pathdiff v0.2.1 Compiling config v0.14.0 Compiling typed-builder v0.18.2 Compiling leptos_macro v0.6.14 Compiling regex v1.10.6 Compiling async-recursion v1.1.1 Compiling num-traits v0.2.19 Compiling drain_filter_polyfill v0.1.3 Compiling inventory v0.3.15 Compiling pad-adapter v0.1.1 Compiling leptos_config v0.6.14 Compiling cfg_aliases v0.2.1 Compiling borsh v1.5.1 Compiling serde_test v1.0.177 Compiling tokio v1.40.0 Compiling linear-map v1.2.0 Compiling serde_qs v0.13.0 Compiling serde_urlencoded v0.7.1 Compiling http v0.2.12 Compiling tower-service v0.3.3 Compiling base64 v0.13.1 Compiling console_error_panic_hook v0.1.7 Compiling gloo-utils v0.2.0 Compiling leptos_reactive v0.6.14 Compiling idb v0.6.3 Compiling gloo-net v0.6.0 Compiling reqwest-wasm v0.11.16 Compiling console_log v1.0.0 Compiling wasm-streams v0.4.0 Compiling rexie v0.6.2 Compiling server_fn v0.6.14 Compiling leptos_server v0.6.14 Compiling leptos_dom v0.6.14 Compiling leptos v0.6.14 Compiling leptos_meta v0.6.14 Compiling leptos_router v0.6.14 Compiling spiral_temp_extension v0.0.1 (/home/runner/work/polyglot/polyglot/apps/spiral/temp/extension) warning: enum `AlbumData` is never used --> /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/src/timer.rs:52:6 | 52 | enum AlbumData { | ^^^^^^^^^ | = note: `#[warn(dead_code)]` on by default warning: `spiral_temp_extension` (lib) generated 1 warning Finished `dev` profile [unoptimized + debuginfo] target(s) in 51.35s [INFO]: ⬇️ Installing wasm-bindgen... [INFO]: Optional field missing from Cargo.toml: 'description'. This is not necessary, but recommended [INFO]: origin crate has no LICENSE [INFO]: ✨ Done in 52.73s [INFO]: 📦 Your wasm pkg is ready to publish at /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/pkg. Resolving dependencies Resolved, downloaded and extracted [54] Saved lockfile ▲ [WARNING] "import.meta" is not available with the "iife" output format and will be empty [empty-import-meta] pkg/spiral_temp_extension.js:1507:66: 1507 │ ...ath = new URL('spiral_temp_extension_bg.wasm', import.meta.url); ╵ ~~~~~~~~~~~ You need to set the output format to "esm" for "import.meta" to work correctly. 1 warning dist/spiral_temp_extension_bg-6ATVSFWS.wasm 4.6mb ⚠️ dist/devtools.js 29.0kb dist/content_script.js 28.0kb dist/service_worker.js 2.2kb ⚡ Done in 33ms $ playwright test [WebServer] Resolving dependencies [WebServer] Resolved, downloaded and extracted [272] [WebServer] Saved lockfile Running 3 tests using 2 workers ··· 3 passed (9.1s)
In [ ]:
{ pwsh ../apps/spiral/temp/test/build.ps1 } | Invoke-Block
00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 debug #1 runtime.execute_with_options_async / { options = { command = ../../../../workspace/target/release/spiral_builder dib --path build.dib; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:00 verbose #2 > 00:00:00 debug #1 spiral_builder.main / { args = Array(MutCell(["dib", "--path", "build.dib"])) } 00:00:00 verbose #3 > 00:00:00 debug #2 runtime.execute_with_options / { file_name = dotnet; arguments = [ 00:00:00 verbose #4 > "repl", 00:00:00 verbose #5 > "--exit-after-run", 00:00:00 verbose #6 > "--run", 00:00:00 verbose #7 > "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib", 00:00:00 verbose #8 > "--output-path", 00:00:00 verbose #9 > "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb", 00:00:00 verbose #10 > ]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:01 verbose #11 > > 00:00:01 verbose #12 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:01 verbose #13 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:01 verbose #14 > > │ # test │ 00:00:01 verbose #15 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:01 verbose #16 > > 00:00:01 verbose #17 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:01 verbose #18 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:01 verbose #19 > > │ ## include scripts │ 00:00:01 verbose #20 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:01 verbose #21 > > 00:00:01 verbose #22 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:01 verbose #23 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:01 verbose #24 > > │ ### include notebook core │ 00:00:01 verbose #25 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:01 verbose #26 > > 00:00:01 verbose #27 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:01 verbose #28 > > . ../../../../scripts/nbs_header.ps1 00:00:02 verbose #29 > > 00:00:02 verbose #30 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 verbose #31 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:02 verbose #32 > > │ ### Include core functions script │ 00:00:02 verbose #33 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:02 verbose #34 > > 00:00:02 verbose #35 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:02 verbose #36 > > . ../../../../scripts/core.ps1 00:00:02 verbose #37 > > 00:00:02 verbose #38 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 verbose #39 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:02 verbose #40 > > │ ### Include spiral library │ 00:00:02 verbose #41 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:02 verbose #42 > > 00:00:02 verbose #43 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:02 verbose #44 > > . ../../../../lib/spiral/lib.ps1 00:00:02 verbose #45 > > 00:00:02 verbose #46 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 verbose #47 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:02 verbose #48 > > │ ## execute project commands │ 00:00:02 verbose #49 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:02 verbose #50 > > 00:00:02 verbose #51 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 verbose #52 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:02 verbose #53 > > │ ### run notebook with retries using spiral supervisor │ 00:00:02 verbose #54 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:02 verbose #55 > > 00:00:02 verbose #56 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:02 verbose #57 > > { . ../../../../apps/spiral/dist/Supervisor$(_exe) --execute-command 00:00:02 verbose #58 > > "../../../../workspace/target/release/spiral_builder$(_exe) dib --path test.dib 00:00:02 verbose #59 > > --retries 3" } | Invoke-Block 00:00:12 verbose #60 > > 00:00:12 verbose #61 > > ╭─[ 9.93s - stdout ]───────────────────────────────────────────────────────────╮ 00:00:12 verbose #62 > > │ 00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = │ 00:00:12 verbose #63 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:00:12 verbose #64 > > │ } │ 00:00:12 verbose #65 > > │ 00:00:00 debug #1 runtime.execute_with_options_async / { options = { │ 00:00:12 verbose #66 > > │ command = ../../../../workspace/target/release/spiral_builder dib --path │ 00:00:12 verbose #67 > > │ test.dib --retries 3; cancellation_token = Some │ 00:00:12 verbose #68 > > │ System.Threading.CancellationToken; environment_variables = [||]; on_line = │ 00:00:12 verbose #69 > > │ None; stdin = None; trace = true; working_directory = None } } │ 00:00:12 verbose #70 > > │ 00:00:00 verbose #2 > 00:00:00 debug #1 spiral_builder.main / { │ 00:00:12 verbose #71 > > │ args = Array(MutCell(["dib", "--path", "test.dib", "--retries", "3"])) } │ 00:00:12 verbose #72 > > │ 00:00:00 verbose #3 > 00:00:00 debug #2 │ 00:00:12 verbose #73 > > │ runtime.execute_with_options / { file_name = dotnet; arguments = [ │ 00:00:12 verbose #74 > > │ 00:00:00 verbose #4 > "repl", │ 00:00:12 verbose #75 > > │ 00:00:00 verbose #5 > "--exit-after-run", │ 00:00:12 verbose #76 > > │ 00:00:00 verbose #6 > "--run", │ 00:00:12 verbose #77 > > │ 00:00:00 verbose #7 > │ 00:00:12 verbose #78 > > │ "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib", │ 00:00:12 verbose #79 > > │ 00:00:00 verbose #8 > "--output-path", │ 00:00:12 verbose #80 > > │ 00:00:00 verbose #9 > │ 00:00:12 verbose #81 > > │ "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb", │ 00:00:12 verbose #82 > > │ 00:00:00 verbose #10 > ]; options = { command = dotnet repl │ 00:00:12 verbose #83 > > │ --exit-after-run --run │ 00:00:12 verbose #84 > > │ "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib" │ 00:00:12 verbose #85 > > │ --output-path │ 00:00:12 verbose #86 > > │ "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb"; │ 00:00:12 verbose #87 > > │ cancellation_token = None; environment_variables = Array(MutCell([ │ 00:00:12 verbose #88 > > │ ("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin │ 00:00:12 verbose #89 > > │ = None; trace = false; working_directory = None } } │ 00:00:12 verbose #90 > > │ 00:00:01 verbose #11 > > │ 00:00:12 verbose #91 > > │ 00:00:01 verbose #12 > > ── markdown │ 00:00:12 verbose #92 > > │ ──────────────────────────────────────────────────────────────────── │ 00:00:12 verbose #93 > > │ 00:00:01 verbose #13 > > 38;5;2m│ 00:00:12 verbose #94 > > │ 38;5;103m╭────────────────────────────────────────────────────────────────── │ 00:00:12 verbose #95 > > │ ────────────╮ │ 00:00:12 verbose #96 > > │ 00:00:01 verbose #14 > > │ # test (Polyglot) │ 00:00:12 verbose #97 > > │ │ │ 00:00:12 verbose #98 > > │ 00:00:01 verbose #15 > > 38;5;2m│ 00:00:12 verbose #99 > > │ 38;5;103m╰────────────────────────────────────────────────────────────────── │ 00:00:12 verbose #100 > > │ ────────────╯ │ 00:00:12 verbose #101 > > │ 00:00:04 verbose #16 > > │ 00:00:12 verbose #102 > > │ 00:00:04 verbose #17 > > ── spiral │ 00:00:12 verbose #103 > > │ ────────────────────────────────────────────────────────────────────── │ 00:00:12 verbose #104 > > │ 00:00:04 verbose #18 > > //// test │ 00:00:12 verbose #105 > > │ 00:00:04 verbose #19 > > │ 00:00:12 verbose #106 > > │ 00:00:04 verbose #20 > > open testing │ 00:00:12 verbose #107 > > │ 00:00:05 verbose #21 > > │ 00:00:12 verbose #108 > > │ 00:00:05 verbose #22 > > ── spiral │ 00:00:12 verbose #109 > > │ ────────────────────────────────────────────────────────────────────── │ 00:00:12 verbose #110 > > │ 00:00:05 verbose #23 > > nominal i = () │ 00:00:12 verbose #111 > > │ 00:00:05 verbose #24 > > nominal e = () │ 00:00:12 verbose #112 > > │ 00:00:05 verbose #25 > > nominal s = () │ 00:00:12 verbose #113 > > │ 00:00:05 verbose #26 > > nominal n = () │ 00:00:12 verbose #114 > > │ 00:00:05 verbose #27 > > nominal t = () │ 00:00:12 verbose #115 > > │ 00:00:05 verbose #28 > > nominal f = () │ 00:00:12 verbose #116 > > │ 00:00:05 verbose #29 > > nominal j = () │ 00:00:12 verbose #117 > > │ 00:00:05 verbose #30 > > nominal p = () │ 00:00:12 verbose #118 > > │ 00:00:05 verbose #31 > > │ 00:00:12 verbose #119 > > │ 00:00:05 verbose #32 > > union sensing = │ 00:00:12 verbose #120 > > │ 00:00:05 verbose #33 > > | Si : s * i │ 00:00:12 verbose #121 > > │ 00:00:05 verbose #34 > > | Se : s * e │ 00:00:12 verbose #122 > > │ 00:00:05 verbose #35 > > │ 00:00:12 verbose #123 > > │ 00:00:05 verbose #36 > > union intuition = │ 00:00:12 verbose #124 > > │ 00:00:05 verbose #37 > > | Ni : n * i │ 00:00:12 verbose #125 > > │ 00:00:05 verbose #38 > > | Ne : n * e │ 00:00:12 verbose #126 > > │ 00:00:05 verbose #39 > > │ 00:00:12 verbose #127 > > │ 00:00:05 verbose #40 > > union thinking = │ 00:00:12 verbose #128 > > │ 00:00:05 verbose #41 > > | Ti : t * i │ 00:00:12 verbose #129 > > │ 00:00:05 verbose #42 > > | Te : t * e │ 00:00:12 verbose #130 > > │ 00:00:05 verbose #43 > > │ 00:00:12 verbose #131 > > │ 00:00:05 verbose #44 > > union feeling = │ 00:00:12 verbose #132 > > │ 00:00:05 verbose #45 > > | Fi : f * i │ 00:00:12 verbose #133 > > │ 00:00:05 verbose #46 > > | Fe : f * e │ 00:00:12 verbose #134 > > │ 00:00:05 verbose #47 > > │ 00:00:12 verbose #135 > > │ 00:00:05 verbose #48 > > union function_stack = │ 00:00:12 verbose #136 > > │ 00:00:05 verbose #49 > > | FS : sensing * intuition * thinking * │ 00:00:12 verbose #137 > > │ feeling │ 00:00:12 verbose #138 > > │ 00:00:05 verbose #50 > > │ 00:00:12 verbose #139 > > │ 00:00:05 verbose #51 > > union personality_type = │ 00:00:12 verbose #140 > > │ 00:00:05 verbose #52 > > | ISTJ : i * s * t * j * function_stack │ 00:00:12 verbose #141 > > │ 00:00:05 verbose #53 > > | ISFJ : i * s * f * j * function_stack │ 00:00:12 verbose #142 > > │ 00:00:05 verbose #54 > > | INFJ : i * n * f * j * function_stack │ 00:00:12 verbose #143 > > │ 00:00:05 verbose #55 > > | INTJ : i * n * t * j * function_stack │ 00:00:12 verbose #144 > > │ 00:00:05 verbose #56 > > | ISTP : i * s * t * p * function_stack │ 00:00:12 verbose #145 > > │ 00:00:05 verbose #57 > > | ISFP : i * s * f * p * function_stack │ 00:00:12 verbose #146 > > │ 00:00:05 verbose #58 > > | INFP : i * n * f * p * function_stack │ 00:00:12 verbose #147 > > │ 00:00:05 verbose #59 > > | INTP : i * n * t * p * function_stack │ 00:00:12 verbose #148 > > │ 00:00:05 verbose #60 > > | ESTP : e * s * t * p * function_stack │ 00:00:12 verbose #149 > > │ 00:00:05 verbose #61 > > | ESFP : e * s * f * p * function_stack │ 00:00:12 verbose #150 > > │ 00:00:05 verbose #62 > > | ENFP : e * n * f * p * function_stack │ 00:00:12 verbose #151 > > │ 00:00:05 verbose #63 > > | ENTP : e * n * t * p * function_stack │ 00:00:12 verbose #152 > > │ 00:00:05 verbose #64 > > | ESTJ : e * s * t * j * function_stack │ 00:00:12 verbose #153 > > │ 00:00:05 verbose #65 > > | ESFJ : e * s * f * j * function_stack │ 00:00:12 verbose #154 > > │ 00:00:05 verbose #66 > > | ENFJ : e * n * f * j * function_stack │ 00:00:12 verbose #155 > > │ 00:00:05 verbose #67 > > | ENTJ : e * n * t * j * function_stack │ 00:00:12 verbose #156 > > │ 00:00:05 verbose #68 > > │ 00:00:12 verbose #157 > > │ 00:00:05 verbose #69 > > │ 00:00:12 verbose #158 > > │ 00:00:05 verbose #70 > > inl main () = │ 00:00:12 verbose #159 > > │ 00:00:05 verbose #71 > > inl istj_stack = FS ((Si (s, i)), Ne (n, │ 00:00:12 verbose #160 > > │ e), (Te (t, e)), (Fi (f, i))) │ 00:00:12 verbose #161 > > │ 00:00:05 verbose #72 > > inl istj_personality = ISTJ (i, s, t, j, │ 00:00:12 verbose #162 > > │ istj_stack) │ 00:00:12 verbose #163 > > │ 00:00:05 verbose #73 > > // inl isfj_stack = FS ((Si (s, i)), Ne │ 00:00:12 verbose #164 > > │ (n, e), (Fe (f, e)), (Ti (t, i))) │ 00:00:12 verbose #165 > > │ 00:00:05 verbose #74 > > // inl isfj_personality = ISFJ (i, s, f, │ 00:00:12 verbose #166 > > │ j, isfj_stack) │ 00:00:12 verbose #167 > > │ 00:00:05 verbose #75 > > │ 00:00:12 verbose #168 > > │ 00:00:05 verbose #76 > > ;[[ │ 00:00:12 verbose #169 > > │ 00:00:05 verbose #77 > > istj_personality │ 00:00:12 verbose #170 > > │ 00:00:05 verbose #78 > > ]] │ 00:00:12 verbose #171 > > │ 00:00:05 verbose #79 > > |> fun x => $'$"%A{!x}"' : string │ 00:00:12 verbose #172 > > │ 00:00:05 verbose #80 > > |> console.write_line │ 00:00:12 verbose #173 > > │ 00:00:05 verbose #81 > > │ 00:00:12 verbose #174 > > │ 00:00:05 verbose #82 > > inl main () = │ 00:00:12 verbose #175 > > │ 00:00:05 verbose #83 > > $'!main ()' : () │ 00:00:12 verbose #176 > > │ 00:00:06 verbose #84 > > │ 00:00:12 verbose #177 > > │ 00:00:06 verbose #85 > > ╭─[ 1.18s - stdout │ 00:00:12 verbose #178 > > │ ]───────────────────────────────────────────────────────────╮ │ 00:00:12 verbose #179 > > │ 00:00:06 verbose #86 > > │ [|US5_0 (US4_0 (US0_0, US1_1, │ 00:00:12 verbose #180 > > │ US2_1, US3_0))|] │ │ 00:00:12 verbose #181 > > │ 00:00:06 verbose #87 > > │ │ 00:00:12 verbose #182 > > │ │ 00:00:12 verbose #183 > > │ │ │ 00:00:12 verbose #184 > > │ 00:00:06 verbose #88 > > 38;5;2m│ 00:00:12 verbose #185 > > │ 38;5;2m╰──────────────────────────────────────────────────────────────────── │ 00:00:12 verbose #186 > > │ ──────────╯ │ 00:00:12 verbose #187 > > │ 00:00:06 verbose #89 > > │ 00:00:12 verbose #188 > > │ 00:00:06 verbose #90 > > ── fsharp │ 00:00:12 verbose #189 > > │ ────────────────────────────────────────────────────────────────────── │ 00:00:12 verbose #190 > > │ 00:00:06 verbose #91 > > type PhonologicalFeature = │ 00:00:12 verbose #191 > > │ 00:00:06 verbose #92 > > | VowelFeature of │ 00:00:12 verbose #192 > > │ 00:00:06 verbose #93 > > height: Height │ 00:00:12 verbose #193 > > │ 00:00:06 verbose #94 > > * backness: Backness │ 00:00:12 verbose #194 > > │ 00:00:06 verbose #95 > > * roundedness: Roundedness │ 00:00:12 verbose #195 > > │ 00:00:06 verbose #96 > > * tone: Option<Tone> │ 00:00:12 verbose #196 > > │ 00:00:06 verbose #97 > > * stress: Option<Stress> │ 00:00:12 verbose #197 > > │ 00:00:06 verbose #98 > > * length: Option<Length> │ 00:00:12 verbose #198 > > │ 00:00:06 verbose #99 > > | ConsonantFeature of │ 00:00:12 verbose #199 > > │ 00:00:06 verbose #100 > > place: PlaceOfArticulation │ 00:00:12 verbose #200 > > │ 00:00:06 verbose #101 > > * manner: MannerOfArticulation │ 00:00:12 verbose #201 > > │ 00:00:06 verbose #102 > > * voicing: Voicing │ 00:00:12 verbose #202 > > │ 00:00:06 verbose #103 > > * length: Option<Length> │ 00:00:12 verbose #203 > > │ 00:00:06 verbose #104 > > | VowelHarmonyFeature │ 00:00:12 verbose #204 > > │ 00:00:06 verbose #105 > > | PitchAccentFeature │ 00:00:12 verbose #205 > > │ 00:00:06 verbose #106 > > │ 00:00:12 verbose #206 > > │ 00:00:06 verbose #107 > > and Stress = Primary | Secondary │ 00:00:12 verbose #207 > > │ 00:00:06 verbose #108 > > and Length = Long | Short | HalfLong │ 00:00:12 verbose #208 > > │ 00:00:06 verbose #109 > > │ 00:00:12 verbose #209 > > │ 00:00:06 verbose #110 > > and Height = │ 00:00:12 verbose #210 > > │ 00:00:06 verbose #111 > > | High | NearHigh | HighMid │ 00:00:12 verbose #211 > > │ 00:00:06 verbose #112 > > | Mid | LowMid | NearLow │ 00:00:12 verbose #212 > > │ 00:00:06 verbose #113 > > | Low │ 00:00:12 verbose #213 > > │ 00:00:06 verbose #114 > > │ 00:00:12 verbose #214 > > │ 00:00:06 verbose #115 > > and Backness = Front | Central | Back │ 00:00:12 verbose #215 > > │ 00:00:06 verbose #116 > > │ 00:00:12 verbose #216 > > │ 00:00:06 verbose #117 > > and Roundedness = Rounded | Unrounded │ 00:00:12 verbose #217 > > │ 00:00:06 verbose #118 > > │ 00:00:12 verbose #218 > > │ 00:00:06 verbose #119 > > and PlaceOfArticulation = │ 00:00:12 verbose #219 > > │ 00:00:06 verbose #120 > > | Bilabial | Labiodental | Dental │ 00:00:12 verbose #220 > > │ 00:00:06 verbose #121 > > | Alveolar | Postalveolar | Retroflex │ 00:00:12 verbose #221 > > │ 00:00:06 verbose #122 > > | Palatal | Velar | Uvular │ 00:00:12 verbose #222 > > │ 00:00:06 verbose #123 > > | Pharyngeal | Epiglottal | Glottal │ 00:00:12 verbose #223 > > │ 00:00:06 verbose #124 > > │ 00:00:12 verbose #224 > > │ 00:00:06 verbose #125 > > and MannerOfArticulation = │ 00:00:12 verbose #225 > > │ 00:00:06 verbose #126 > > | Plosive | Nasal | Trill │ 00:00:12 verbose #226 > > │ 00:00:06 verbose #127 > > | TapOrFlap | Fricative | │ 00:00:12 verbose #227 > > │ LateralFricative │ 00:00:12 verbose #228 > > │ 00:00:06 verbose #128 > > | Approximant | LateralApproximant │ 00:00:12 verbose #229 > > │ 00:00:06 verbose #129 > > │ 00:00:12 verbose #230 > > │ 00:00:06 verbose #130 > > and Voicing = Voiced | Voiceless │ 00:00:12 verbose #231 > > │ 00:00:06 verbose #131 > > │ 00:00:12 verbose #232 > > │ 00:00:06 verbose #132 > > and SecondaryArticulation = │ 00:00:12 verbose #233 > > │ 00:00:06 verbose #133 > > | Labialization | Palatalization | │ 00:00:12 verbose #234 > > │ Velarization │ 00:00:12 verbose #235 > > │ 00:00:06 verbose #134 > > | Pharyngealization | Aspiration │ 00:00:12 verbose #236 > > │ 00:00:06 verbose #135 > > │ 00:00:12 verbose #237 > > │ 00:00:06 verbose #136 > > and Tone = │ 00:00:12 verbose #238 > > │ 00:00:06 verbose #137 > > | LevelTone of int │ 00:00:12 verbose #239 > > │ 00:00:06 verbose #138 > > | ContourTone of int list │ 00:00:12 verbose #240 > > │ 00:00:06 verbose #139 > > │ 00:00:12 verbose #241 > > │ 00:00:06 verbose #140 > > and MorphologicalFeature = │ 00:00:12 verbose #242 > > │ 00:00:06 verbose #141 > > | RootFeature of string │ 00:00:12 verbose #243 > > │ 00:00:06 verbose #142 > > | AffixFeature of AffixType * string │ 00:00:12 verbose #244 > > │ 00:00:06 verbose #143 > > | IncorporationFeature of string * │ 00:00:12 verbose #245 > > │ MorphologicalFeature │ 00:00:12 verbose #246 > > │ 00:00:06 verbose #144 > > | NonConcatenativePattern of string * │ 00:00:12 verbose #247 > > │ string │ 00:00:12 verbose #248 > > │ 00:00:06 verbose #145 > > | AgglutinativeAffixFeature of │ 00:00:12 verbose #249 > > │ AgglutinativeAffixType * string │ 00:00:12 verbose #250 > > │ 00:00:06 verbose #146 > > | HonorificFeature of HonorificType * │ 00:00:12 verbose #251 > > │ string │ 00:00:12 verbose #252 > > │ 00:00:06 verbose #147 > > │ 00:00:12 verbose #253 > > │ 00:00:06 verbose #148 > > and AgglutinativeAffixType = Suffix | Prefix │ 00:00:12 verbose #254 > > │ 00:00:06 verbose #149 > > │ 00:00:12 verbose #255 > > │ 00:00:06 verbose #150 > > and HonorificType = VerbHonorific | │ 00:00:12 verbose #256 > > │ NounHonorific │ 00:00:12 verbose #257 > > │ 00:00:06 verbose #151 > > │ 00:00:12 verbose #258 > > │ 00:00:06 verbose #152 > > and AffixType = │ 00:00:12 verbose #259 > > │ 00:00:06 verbose #153 > > | Prefix | Suffix | Infix │ 00:00:12 verbose #260 > > │ 00:00:06 verbose #154 > > | Circumfix │ 00:00:12 verbose #261 > > │ 00:00:06 verbose #155 > > │ 00:00:12 verbose #262 > > │ 00:00:06 verbose #156 > > type SyntacticFeature = │ 00:00:12 verbose #263 > > │ 00:00:06 verbose #157 > > | WordFeature of MorphologicalFeature │ 00:00:12 verbose #264 > > │ list * LexicalCategory │ 00:00:12 verbose #265 > > │ 00:00:06 verbose #158 > > | PhraseFeature of PhraseType * │ 00:00:12 verbose #266 > > │ SyntacticFeature list │ 00:00:12 verbose #267 > > │ 00:00:06 verbose #159 > > | GrammaticalRelation of │ 00:00:12 verbose #268 > > │ GrammaticalRelationType * SyntacticFeature list │ 00:00:12 verbose #269 > > │ 00:00:06 verbose #160 > > | SOVOrderFeature │ 00:00:12 verbose #270 > > │ 00:00:06 verbose #161 > > | TopicCommentFeature │ 00:00:12 verbose #271 > > │ 00:00:06 verbose #162 > > │ 00:00:12 verbose #272 > > │ 00:00:06 verbose #163 > > and GrammaticalRelationType = │ 00:00:12 verbose #273 > > │ 00:00:06 verbose #164 > > | Ergative | Absolutive | Nominative │ 00:00:12 verbose #274 > > │ 00:00:06 verbose #165 > > | Accusative │ 00:00:12 verbose #275 > > │ 00:00:06 verbose #166 > > │ 00:00:12 verbose #276 > > │ 00:00:06 verbose #167 > > and LexicalCategory = │ 00:00:12 verbose #277 > > │ 00:00:06 verbose #168 > > | Noun | Verb | Adjective │ 00:00:12 verbose #278 > > │ 00:00:06 verbose #169 > > | Adverb | Pronoun | Preposition │ 00:00:12 verbose #279 > > │ 00:00:06 verbose #170 > > | Conjunction | Determiner | Interjection │ 00:00:12 verbose #280 > > │ 00:00:06 verbose #171 > > │ 00:00:12 verbose #281 > > │ 00:00:06 verbose #172 > > and PhraseType = │ 00:00:12 verbose #282 > > │ 00:00:06 verbose #173 > > | NP | VP | AP │ 00:00:12 verbose #283 > > │ 00:00:06 verbose #174 > > | PP | CP │ 00:00:12 verbose #284 > > │ 00:00:06 verbose #175 > > │ 00:00:12 verbose #285 > > │ 00:00:06 verbose #176 > > and SemanticFeature = │ 00:00:12 verbose #286 > > │ 00:00:06 verbose #177 > > | Meaning of string │ 00:00:12 verbose #287 > > │ 00:00:06 verbose #178 > > | SemanticRole of SemanticRoleType * │ 00:00:12 verbose #288 > > │ SemanticFeature │ 00:00:12 verbose #289 > > │ 00:00:06 verbose #179 > > │ 00:00:12 verbose #290 > > │ 00:00:06 verbose #180 > > and SemanticRoleType = │ 00:00:12 verbose #291 > > │ 00:00:06 verbose #181 > > | Agent | Patient | Instrument │ 00:00:12 verbose #292 > > │ 00:00:06 verbose #182 > > | Location | Time | Cause │ 00:00:12 verbose #293 > > │ 00:00:06 verbose #183 > > │ 00:00:12 verbose #294 > > │ 00:00:06 verbose #184 > > and PragmaticFeature = │ 00:00:12 verbose #295 > > │ 00:00:06 verbose #185 > > | UseContext of string │ 00:00:12 verbose #296 > > │ 00:00:06 verbose #186 > > | PolitenessLevel of Politeness │ 00:00:12 verbose #297 > > │ 00:00:06 verbose #187 > > | SpeechAct of SpeechActType │ 00:00:12 verbose #298 > > │ 00:00:06 verbose #188 > > | SpeechLevel of SpeechLevelType │ 00:00:12 verbose #299 > > │ 00:00:06 verbose #189 > > │ 00:00:12 verbose #300 > > │ 00:00:06 verbose #190 > > and Politeness = Formal | Informal | Neutral │ 00:00:12 verbose #301 > > │ 00:00:06 verbose #191 > > │ 00:00:12 verbose #302 > > │ 00:00:06 verbose #192 > > and SpeechActType = │ 00:00:12 verbose #303 > > │ 00:00:06 verbose #193 > > | Assertive | Directive | Commissive │ 00:00:12 verbose #304 > > │ 00:00:06 verbose #194 > > | Expressive | Declarative │ 00:00:12 verbose #305 > > │ 00:00:06 verbose #195 > > │ 00:00:12 verbose #306 > > │ 00:00:06 verbose #196 > > and SpeechLevelType = │ 00:00:12 verbose #307 > > │ 00:00:06 verbose #197 > > | FormalHigh | FormalLow | InformalHigh │ 00:00:12 verbose #308 > > │ 00:00:06 verbose #198 > > | InformalLow | Neutral │ 00:00:12 verbose #309 > > │ 00:00:06 verbose #199 > > │ 00:00:12 verbose #310 > > │ 00:00:06 verbose #200 > > type LinguisticFeature = │ 00:00:12 verbose #311 > > │ 00:00:06 verbose #201 > > | Phonological of PhonologicalFeature │ 00:00:12 verbose #312 > > │ 00:00:06 verbose #202 > > | Morphological of MorphologicalFeature │ 00:00:12 verbose #313 > > │ 00:00:06 verbose #203 > > | Syntactic of SyntacticFeature │ 00:00:12 verbose #314 > > │ 00:00:06 verbose #204 > > | Semantic of SemanticFeature │ 00:00:12 verbose #315 > > │ 00:00:06 verbose #205 > > | Pragmatic of PragmaticFeature │ 00:00:12 verbose #316 > > │ 00:00:06 verbose #206 > > │ 00:00:12 verbose #317 > > │ 00:00:06 verbose #207 > > type LanguageConstruct = │ 00:00:12 verbose #318 > > │ 00:00:06 verbose #208 > > | LanguageElement of LinguisticFeature │ 00:00:12 verbose #319 > > │ 00:00:06 verbose #209 > > | LanguageStructure of LanguageConstruct │ 00:00:12 verbose #320 > > │ list │ 00:00:12 verbose #321 > > │ 00:00:06 verbose #210 > > | TranslationElement of │ 00:00:12 verbose #322 > > │ TranslationFeature │ 00:00:12 verbose #323 > > │ 00:00:06 verbose #211 > > │ 00:00:12 verbose #324 > > │ 00:00:06 verbose #212 > > and TranslationFeature = │ 00:00:12 verbose #325 > > │ 00:00:06 verbose #213 > > | LinkedPhonological of │ 00:00:12 verbose #326 > > │ PhonologicalFeature * PhonologicalFeature │ 00:00:12 verbose #327 > > │ 00:00:06 verbose #214 > > | LinkedMorphological of │ 00:00:12 verbose #328 > > │ MorphologicalFeature * MorphologicalFeature │ 00:00:12 verbose #329 > > │ 00:00:06 verbose #215 > > | LinkedSyntactic of SyntacticFeature * │ 00:00:12 verbose #330 > > │ SyntacticFeature │ 00:00:12 verbose #331 > > │ 00:00:06 verbose #216 > > | LinkedSemantic of SemanticFeature * │ 00:00:12 verbose #332 > > │ SemanticFeature │ 00:00:12 verbose #333 > > │ 00:00:06 verbose #217 > > │ 00:00:12 verbose #334 > > │ 00:00:06 verbose #218 > > type Discourse = DiscourseUnit of │ 00:00:12 verbose #335 > > │ LanguageConstruct list │ 00:00:12 verbose #336 > > │ 00:00:06 verbose #219 > > │ 00:00:12 verbose #337 > > │ 00:00:06 verbose #220 > > type LanguageModel = │ 00:00:12 verbose #338 > > │ 00:00:06 verbose #221 > > | Model of discourse: Discourse │ 00:00:12 verbose #339 > > │ 00:00:07 verbose #222 > > │ 00:00:12 verbose #340 > > │ 00:00:07 verbose #223 > > ── fsharp │ 00:00:12 verbose #341 > > │ ────────────────────────────────────────────────────────────────────── │ 00:00:12 verbose #342 > > │ 00:00:07 verbose #224 > > let testEnglish = │ 00:00:12 verbose #343 > > │ 00:00:07 verbose #225 > > Model( │ 00:00:12 verbose #344 > > │ 00:00:07 verbose #226 > > DiscourseUnit [[ │ 00:00:12 verbose #345 > > │ 00:00:07 verbose #227 > > LanguageElement (Phonological │ 00:00:12 verbose #346 > > │ (ConsonantFeature (Alveolar, Nasal, │ 00:00:12 verbose #347 > > │ 00:00:07 verbose #228 > > Voiced, Some(HalfLong)))); │ 00:00:12 verbose #348 > > │ 00:00:07 verbose #229 > > LanguageElement (Phonological │ 00:00:12 verbose #349 > > │ (VowelFeature (High, Front, Unrounded, │ 00:00:12 verbose #350 > > │ 00:00:07 verbose #230 > > Some(LevelTone 1), Some(Primary), │ 00:00:12 verbose #351 > > │ Some(Short)))); │ 00:00:12 verbose #352 > > │ 00:00:07 verbose #231 > > LanguageElement (Phonological │ 00:00:12 verbose #353 > > │ (VowelFeature (Low, Front, Unrounded, │ 00:00:12 verbose #354 > > │ 00:00:07 verbose #232 > > Some(LevelTone 2), Some(Secondary), │ 00:00:12 verbose #355 > > │ Some(Long)))); │ 00:00:12 verbose #356 > > │ 00:00:07 verbose #233 > > LanguageElement (Phonological │ 00:00:12 verbose #357 > > │ (ConsonantFeature (Velar, Plosive, │ 00:00:12 verbose #358 > > │ 00:00:07 verbose #234 > > Voiceless, Some(HalfLong)))); │ 00:00:12 verbose #359 > > │ 00:00:07 verbose #235 > > LanguageElement (Morphological │ 00:00:12 verbose #360 > > │ (RootFeature "I")); │ 00:00:12 verbose #361 > > │ 00:00:07 verbose #236 > > LanguageElement (Morphological │ 00:00:12 verbose #362 > > │ (RootFeature "see")); │ 00:00:12 verbose #363 > > │ 00:00:07 verbose #237 > > LanguageElement (Morphological │ 00:00:12 verbose #364 > > │ (RootFeature "a")); │ 00:00:12 verbose #365 > > │ 00:00:07 verbose #238 > > LanguageElement (Morphological │ 00:00:12 verbose #366 > > │ (RootFeature "cat")); │ 00:00:12 verbose #367 > > │ 00:00:07 verbose #239 > > LanguageElement (Syntactic │ 00:00:12 verbose #368 > > │ (PhraseFeature (NP, [[WordFeature │ 00:00:12 verbose #369 > > │ 00:00:07 verbose #240 > > ([[RootFeature "I"]], Pronoun)]]))); │ 00:00:12 verbose #370 > > │ 00:00:07 verbose #241 > > LanguageElement (Syntactic │ 00:00:12 verbose #371 > > │ (PhraseFeature (VP, [[WordFeature │ 00:00:12 verbose #372 > > │ 00:00:07 verbose #242 > > ([[RootFeature "see"]], Verb)]]))); │ 00:00:12 verbose #373 > > │ 00:00:07 verbose #243 > > LanguageElement (Syntactic │ 00:00:12 verbose #374 > > │ (PhraseFeature (NP, [[WordFeature │ 00:00:12 verbose #375 > > │ 00:00:07 verbose #244 > > ([[RootFeature "a"; RootFeature "cat"]], │ 00:00:12 verbose #376 > > │ Noun)]]))); │ 00:00:12 verbose #377 > > │ 00:00:07 verbose #245 > > LanguageElement (Semantic │ 00:00:12 verbose #378 > > │ (Meaning "Perception act of a feline by │ 00:00:12 verbose #379 > > │ 00:00:07 verbose #246 > > the speaker")); │ 00:00:12 verbose #380 > > │ 00:00:07 verbose #247 > > LanguageElement (Pragmatic │ 00:00:12 verbose #381 > > │ (UseContext "Statement of an action being │ 00:00:12 verbose #382 > > │ 00:00:07 verbose #248 > > observed")) │ 00:00:12 verbose #383 > > │ 00:00:07 verbose #249 > > ]] │ 00:00:12 verbose #384 > > │ 00:00:07 verbose #250 > > ) │ 00:00:12 verbose #385 > > │ 00:00:07 verbose #251 > > │ 00:00:12 verbose #386 > > │ 00:00:07 verbose #252 > > let testPortuguese = │ 00:00:12 verbose #387 > > │ 00:00:07 verbose #253 > > Model( │ 00:00:12 verbose #388 > > │ 00:00:07 verbose #254 > > DiscourseUnit [[ │ 00:00:12 verbose #389 > > │ 00:00:07 verbose #255 > > LanguageElement (Phonological │ 00:00:12 verbose #390 > > │ (VowelFeature (High, Front, Unrounded, │ 00:00:12 verbose #391 > > │ 00:00:07 verbose #256 > > Some(LevelTone 1), Some(Primary), │ 00:00:12 verbose #392 > > │ Some(Short)))); │ 00:00:12 verbose #393 > > │ 00:00:07 verbose #257 > > LanguageElement (Phonological │ 00:00:12 verbose #394 > > │ (VowelFeature (Low, Front, Unrounded, │ 00:00:12 verbose #395 > > │ 00:00:07 verbose #258 > > Some(LevelTone 2), Some(Secondary), │ 00:00:12 verbose #396 > > │ Some(Long)))); │ 00:00:12 verbose #397 > > │ 00:00:07 verbose #259 > > LanguageElement (Phonological │ 00:00:12 verbose #398 > > │ (VowelFeature (Mid, Back, Rounded, │ 00:00:12 verbose #399 > > │ 00:00:07 verbose #260 > > Some(LevelTone 3), Some(Primary), │ 00:00:12 verbose #400 > > │ Some(Short)))); │ 00:00:12 verbose #401 > > │ 00:00:07 verbose #261 > > LanguageElement (Phonological │ 00:00:12 verbose #402 > > │ (ConsonantFeature (Velar, Plosive, │ 00:00:12 verbose #403 > > │ 00:00:07 verbose #262 > > Voiceless, Some(HalfLong)))); │ 00:00:12 verbose #404 > > │ 00:00:07 verbose #263 > > LanguageElement (Morphological │ 00:00:12 verbose #405 > > │ (RootFeature "Eu")); │ 00:00:12 verbose #406 > > │ 00:00:07 verbose #264 > > LanguageElement (Morphological │ 00:00:12 verbose #407 > > │ (RootFeature "ver" |> ignore; │ 00:00:12 verbose #408 > > │ 00:00:07 verbose #265 > > AffixFeature (Suffix, "o"))); │ 00:00:12 verbose #409 > > │ 00:00:07 verbose #266 > > LanguageElement (Morphological │ 00:00:12 verbose #410 > > │ (RootFeature "um")); │ 00:00:12 verbose #411 > > │ 00:00:07 verbose #267 > > LanguageElement (Morphological │ 00:00:12 verbose #412 > > │ (RootFeature "gato")); │ 00:00:12 verbose #413 > > │ 00:00:07 verbose #268 > > LanguageElement (Syntactic │ 00:00:12 verbose #414 > > │ (PhraseFeature (NP, [[WordFeature │ 00:00:12 verbose #415 > > │ 00:00:07 verbose #269 > > ([[RootFeature "Eu"]], Pronoun)]]))); │ 00:00:12 verbose #416 > > │ 00:00:07 verbose #270 > > LanguageElement (Syntactic │ 00:00:12 verbose #417 > > │ (PhraseFeature (VP, [[WordFeature │ 00:00:12 verbose #418 > > │ 00:00:07 verbose #271 > > ([[RootFeature "vejo"]], Verb)]]))); │ 00:00:12 verbose #419 > > │ 00:00:07 verbose #272 > > LanguageElement (Syntactic │ 00:00:12 verbose #420 > > │ (PhraseFeature (NP, [[WordFeature │ 00:00:12 verbose #421 > > │ 00:00:07 verbose #273 > > ([[RootFeature "um"; RootFeature "gato"]], │ 00:00:12 verbose #422 > > │ Noun)]]))); │ 00:00:12 verbose #423 > > │ 00:00:07 verbose #274 > > LanguageElement (Semantic │ 00:00:12 verbose #424 > > │ (Meaning "Ação de percepção de um felino │ 00:00:12 verbose #425 > > │ 00:00:07 verbose #275 > > pelo falante")); │ 00:00:12 verbose #426 > > │ 00:00:07 verbose #276 > > LanguageElement (Pragmatic │ 00:00:12 verbose #427 > > │ (UseContext "Declaração de uma ação sendo │ 00:00:12 verbose #428 > > │ 00:00:07 verbose #277 > > observada")) │ 00:00:12 verbose #429 > > │ 00:00:07 verbose #278 > > ]] │ 00:00:12 verbose #430 > > │ 00:00:07 verbose #279 > > ) │ 00:00:12 verbose #431 > > │ 00:00:07 verbose #280 > > │ 00:00:12 verbose #432 > > │ 00:00:07 verbose #281 > > let testKorean = │ 00:00:12 verbose #433 > > │ 00:00:07 verbose #282 > > Model( │ 00:00:12 verbose #434 > > │ 00:00:07 verbose #283 > > DiscourseUnit [[ │ 00:00:12 verbose #435 > > │ 00:00:07 verbose #284 > > LanguageElement (Phonological │ 00:00:12 verbose #436 > > │ (ConsonantFeature (Alveolar, Nasal, │ 00:00:12 verbose #437 > > │ 00:00:07 verbose #285 > > Voiced, Some(Short)))); │ 00:00:12 verbose #438 > > │ 00:00:07 verbose #286 > > LanguageElement (Phonological │ 00:00:12 verbose #439 > > │ (VowelFeature (High, Back, Rounded, │ 00:00:12 verbose #440 > > │ 00:00:07 verbose #287 > > None, None, Some(Short)))); │ 00:00:12 verbose #441 > > │ 00:00:07 verbose #288 > > LanguageElement (Phonological │ 00:00:12 verbose #442 > > │ (VowelFeature (Mid, Front, Unrounded, │ 00:00:12 verbose #443 > > │ 00:00:07 verbose #289 > > None, None, Some(Long)))); │ 00:00:12 verbose #444 > > │ 00:00:07 verbose #290 > > LanguageElement (Phonological │ 00:00:12 verbose #445 > > │ (ConsonantFeature (Bilabial, Plosive, │ 00:00:12 verbose #446 > > │ 00:00:07 verbose #291 > > Voiceless, Some(Short)))); │ 00:00:12 verbose #447 > > │ 00:00:07 verbose #292 > > LanguageElement (Morphological │ 00:00:12 verbose #448 > > │ (RootFeature "나")); │ 00:00:12 verbose #449 > > │ 00:00:07 verbose #293 > > LanguageElement (Morphological │ 00:00:12 verbose #450 > > │ (RootFeature "보다")); │ 00:00:12 verbose #451 > > │ 00:00:07 verbose #294 > > LanguageElement (Morphological │ 00:00:12 verbose #452 > > │ (AffixFeature (Suffix, "아"))); │ 00:00:12 verbose #453 > > │ 00:00:07 verbose #295 > > LanguageElement (Morphological │ 00:00:12 verbose #454 > > │ (RootFeature "고양이")); │ 00:00:12 verbose #455 > > │ 00:00:07 verbose #296 > > LanguageElement (Syntactic │ 00:00:12 verbose #456 > > │ (PhraseFeature (NP, [[WordFeature │ 00:00:12 verbose #457 > > │ 00:00:07 verbose #297 > > ([[RootFeature "나"]], Pronoun)]]))); │ 00:00:12 verbose #458 > > │ 00:00:07 verbose #298 > > LanguageElement (Syntactic │ 00:00:12 verbose #459 > > │ (PhraseFeature (VP, [[WordFeature │ 00:00:12 verbose #460 > > │ 00:00:07 verbose #299 > > ([[RootFeature "보다"; AffixFeature (Suffix, │ 00:00:12 verbose #461 > > │ "아")]], Verb)]]))); │ 00:00:12 verbose #462 > > │ 00:00:07 verbose #300 > > LanguageElement (Syntactic │ 00:00:12 verbose #463 > > │ (PhraseFeature (NP, [[WordFeature │ 00:00:12 verbose #464 > > │ 00:00:07 verbose #301 > > ([[RootFeature "고양이"]], Noun)]]))); │ 00:00:12 verbose #465 > > │ 00:00:07 verbose #302 > > LanguageElement (Semantic │ 00:00:12 verbose #466 > > │ (Meaning "화자에 의한 고양이의 관찰 │ 00:00:12 verbose #467 > > │ 00:00:07 verbose #303 > > 행위")); │ 00:00:12 verbose #468 > > │ 00:00:07 verbose #304 > > LanguageElement (Pragmatic │ 00:00:12 verbose #469 > > │ (UseContext "관찰되고 있는 행동의 진술")) │ 00:00:12 verbose #470 > > │ 00:00:07 verbose #305 > > ]] │ 00:00:12 verbose #471 > > │ 00:00:07 verbose #306 > > ) │ 00:00:12 verbose #472 > > │ 00:00:07 verbose #307 > > │ 00:00:12 verbose #473 > > │ 00:00:07 verbose #308 > > ── markdown │ 00:00:12 verbose #474 > > │ ──────────────────────────────────────────────────────────────────── │ 00:00:12 verbose #475 > > │ 00:00:07 verbose #309 > > 38;5;2m│ 00:00:12 verbose #476 > > │ 38;5;103m╭────────────────────────────────────────────────────────────────── │ 00:00:12 verbose #477 > > │ ────────────╮ │ 00:00:12 verbose #478 > > │ 00:00:07 verbose #310 > > │ ## main │ 00:00:12 verbose #479 > > │ │ │ 00:00:12 verbose #480 > > │ 00:00:07 verbose #311 > > 38;5;2m│ 00:00:12 verbose #481 > > │ 38;5;103m╰────────────────────────────────────────────────────────────────── │ 00:00:12 verbose #482 > > │ ────────────╯ │ 00:00:12 verbose #483 > > │ 00:00:07 verbose #312 > > │ 00:00:12 verbose #484 > > │ 00:00:07 verbose #313 > > ── spiral │ 00:00:12 verbose #485 > > │ ────────────────────────────────────────────────────────────────────── │ 00:00:12 verbose #486 > > │ 00:00:07 verbose #314 > > inl main (_args : array_base string) = │ 00:00:12 verbose #487 > > │ 00:00:07 verbose #315 > > 0i32 │ 00:00:12 verbose #488 > > │ 00:00:07 verbose #316 > > │ 00:00:12 verbose #489 > > │ 00:00:07 verbose #317 > > inl main () = │ 00:00:12 verbose #490 > > │ 00:00:07 verbose #318 > > $'let main args = !main args' : () │ 00:00:12 verbose #491 > > │ 00:00:07 verbose #319 > > │ 00:00:12 verbose #492 > > │ 00:00:07 verbose #320 > > ── spiral │ 00:00:12 verbose #493 > > │ ────────────────────────────────────────────────────────────────────── │ 00:00:12 verbose #494 > > │ 00:00:07 verbose #321 > > inl app () = │ 00:00:12 verbose #495 > > │ 00:00:07 verbose #322 > > "test" |> console.write_line │ 00:00:12 verbose #496 > > │ 00:00:07 verbose #323 > > 0i32 │ 00:00:12 verbose #497 > > │ 00:00:07 verbose #324 > > │ 00:00:12 verbose #498 > > │ 00:00:07 verbose #325 > > inl main () = │ 00:00:12 verbose #499 > > │ 00:00:07 verbose #326 > > print_static "<test>" │ 00:00:12 verbose #500 > > │ 00:00:07 verbose #327 > > │ 00:00:12 verbose #501 > > │ 00:00:07 verbose #328 > > app │ 00:00:12 verbose #502 > > │ 00:00:07 verbose #329 > > |> dyn │ 00:00:12 verbose #503 > > │ 00:00:07 verbose #330 > > |> ignore │ 00:00:12 verbose #504 > > │ 00:00:07 verbose #331 > > │ 00:00:12 verbose #505 > > │ 00:00:07 verbose #332 > > print_static "</test>" │ 00:00:12 verbose #506 > > │ 00:00:07 verbose #333 > 00:00:07 verbose #3 │ 00:00:12 verbose #507 > > │ runtime.execute_with_options / result / { exit_code = 0; std_trace_length = │ 00:00:12 verbose #508 > > │ 11263 } │ 00:00:12 verbose #509 > > │ 00:00:07 verbose #334 > 00:00:07 debug #4 │ 00:00:12 verbose #510 > > │ runtime.execute_with_options / { file_name = jupyter; arguments = [ │ 00:00:12 verbose #511 > > │ 00:00:07 verbose #335 > "nbconvert", │ 00:00:12 verbose #512 > > │ 00:00:07 verbose #336 > │ 00:00:12 verbose #513 > > │ "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb", │ 00:00:12 verbose #514 > > │ 00:00:07 verbose #337 > "--to", │ 00:00:12 verbose #515 > > │ 00:00:07 verbose #338 > "html", │ 00:00:12 verbose #516 > > │ 00:00:07 verbose #339 > "--HTMLExporter.theme=dark", │ 00:00:12 verbose #517 > > │ 00:00:07 verbose #340 > ]; options = { command = jupyter nbconvert │ 00:00:12 verbose #518 > > │ "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb" │ 00:00:12 verbose #519 > > │ --to html --HTMLExporter.theme=dark; cancellation_token = None; │ 00:00:12 verbose #520 > > │ environment_variables = Array(MutCell([])); on_line = None; stdin = None; │ 00:00:12 verbose #521 > > │ trace = true; working_directory = None } } │ 00:00:12 verbose #522 > > │ 00:00:08 verbose #341 > 00:00:08 verbose #5 ! [NbConvertApp] │ 00:00:12 verbose #523 > > │ Converting notebook │ 00:00:12 verbose #524 > > │ /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb to │ 00:00:12 verbose #525 > > │ html │ 00:00:12 verbose #526 > > │ 00:00:08 verbose #342 > 00:00:08 verbose #6 ! │ 00:00:12 verbose #527 > > │ /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat │ 00:00:12 verbose #528 > > │ /__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this │ 00:00:12 verbose #529 > > │ will become a hard error in future nbformat versions. You may want to use │ 00:00:12 verbose #530 > > │ `normalize()` on your notebooks before validations (available since nbformat │ 00:00:12 verbose #531 > > │ 5.1.4). Previous versions of nbformat are fixing this issue transparently, │ 00:00:12 verbose #532 > > │ and will stop doing so in the future. │ 00:00:12 verbose #533 > > │ 00:00:08 verbose #343 > 00:00:08 verbose #7 ! validate(nb) │ 00:00:12 verbose #534 > > │ 00:00:09 verbose #344 > 00:00:08 verbose #8 ! │ 00:00:12 verbose #535 > > │ /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconver │ 00:00:12 verbose #536 > > │ t/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling │ 00:00:12 verbose #537 > > │ back on Python 3 │ 00:00:12 verbose #538 > > │ 00:00:09 verbose #345 > 00:00:08 verbose #9 ! return │ 00:00:12 verbose #539 > > │ _pygments_highlight( │ 00:00:12 verbose #540 > > │ 00:00:09 verbose #346 > 00:00:08 verbose #10 ! [NbConvertApp] │ 00:00:12 verbose #541 > > │ Writing 318991 bytes to │ 00:00:12 verbose #542 > > │ /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.html │ 00:00:12 verbose #543 > > │ 00:00:09 verbose #347 > 00:00:08 verbose #11 │ 00:00:12 verbose #544 > > │ runtime.execute_with_options / result / { exit_code = 0; std_trace_length = │ 00:00:12 verbose #545 > > │ 914 } │ 00:00:12 verbose #546 > > │ 00:00:09 verbose #348 > 00:00:08 debug #12 spiral_builder.run / │ 00:00:12 verbose #547 > > │ dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 914 } │ 00:00:12 verbose #548 > > │ 00:00:09 verbose #349 > 00:00:08 debug #13 │ 00:00:12 verbose #549 > > │ runtime.execute_with_options / { file_name = pwsh; arguments = [ │ 00:00:12 verbose #550 > > │ 00:00:09 verbose #350 > "-c", │ 00:00:12 verbose #551 > > │ 00:00:09 verbose #351 > "$counter = 1; $path = │ 00:00:12 verbose #552 > > │ '/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.html'; │ 00:00:12 verbose #553 > > │ (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { │ 00:00:12 verbose #554 > > │ $_.Groups[1].Value + $counter++ } | Set-Content $path", │ 00:00:12 verbose #555 > > │ 00:00:09 verbose #352 > ]; options = { command = pwsh -c "$counter = 1; │ 00:00:12 verbose #556 > > │ $path = │ 00:00:12 verbose #557 > > │ '/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.html'; │ 00:00:12 verbose #558 > > │ (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { │ 00:00:12 verbose #559 > > │ $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = │ 00:00:12 verbose #560 > > │ None; environment_variables = Array(MutCell([])); on_line = None; stdin = │ 00:00:12 verbose #561 > > │ None; trace = true; working_directory = None } } │ 00:00:12 verbose #562 > > │ 00:00:09 verbose #353 > 00:00:09 verbose #14 │ 00:00:12 verbose #563 > > │ runtime.execute_with_options / result / { exit_code = 0; std_trace_length = │ 00:00:12 verbose #564 > > │ 0 } │ 00:00:12 verbose #565 > > │ 00:00:09 verbose #354 > 00:00:09 debug #15 spiral_builder.run / │ 00:00:12 verbose #566 > > │ dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } │ 00:00:12 verbose #567 > > │ 00:00:09 verbose #355 > 00:00:09 debug #16 spiral_builder.run / │ 00:00:12 verbose #568 > > │ dib / { exit_code = 0; result_length = 12236 } │ 00:00:12 verbose #569 > > │ 00:00:09 debug #356 runtime.execute_with_options_async / { exit_code │ 00:00:12 verbose #570 > > │ = 0; output_length = 15794 } │ 00:00:12 verbose #571 > > │ 00:00:09 debug #1 main / executeCommand / exitCode: 0 / command: │ 00:00:12 verbose #572 > > │ ../../../../workspace/target/release/spiral_builder dib --path test.dib │ 00:00:12 verbose #573 > > │ --retries 3 │ 00:00:12 verbose #574 > > │ │ 00:00:12 verbose #575 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:12 verbose #576 > > 00:00:12 verbose #577 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:12 verbose #578 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:12 verbose #579 > > │ ### parse the .dib file into .spi format with dibparser │ 00:00:12 verbose #580 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:12 verbose #581 > > 00:00:12 verbose #582 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:12 verbose #583 > > { . ../../../../apps/parser/dist/DibParser$(_exe) test.dib spi } | Invoke-Block 00:00:12 verbose #584 > > 00:00:12 verbose #585 > > ╭─[ 438.12ms - stdout ]────────────────────────────────────────────────────────╮ 00:00:12 verbose #586 > > │ 00:00:00 debug #1 writeDibCode / output: Spi / path: test.dib │ 00:00:12 verbose #587 > > │ 00:00:00 debug #2 parseDibCode / output: Spi / file: test.dib │ 00:00:12 verbose #588 > > │ │ 00:00:12 verbose #589 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:12 verbose #590 > > 00:00:12 verbose #591 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:12 verbose #592 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:12 verbose #593 > > │ ### build .fsx file from .spi using supervisor │ 00:00:12 verbose #594 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:12 verbose #595 > > 00:00:12 verbose #596 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:12 verbose #597 > > { . ../../../../apps/spiral/dist/Supervisor$(_exe) --build-file test.spi 00:00:12 verbose #598 > > test.fsx } | Invoke-Block 00:00:13 verbose #599 > > 00:00:13 verbose #600 > > ╭─[ 1.02s - stdout ]───────────────────────────────────────────────────────────╮ 00:00:13 verbose #601 > > │ 00:00:00 verbose #1 networking.test_port_open / { port = 13806; ex = │ 00:00:13 verbose #602 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:00:13 verbose #603 > > │ } │ 00:00:13 verbose #604 > > │ 00:00:00 verbose #2 networking.test_port_open / { port = 13806; ex = │ 00:00:13 verbose #605 > > │ System.AggregateException: One or more errors occurred. (Connection refused) │ 00:00:13 verbose #606 > > │ } │ 00:00:13 verbose #607 > > │ 00:00:00 debug #1 Supervisor.buildFile / takeWhileInclusive / │ 00:00:13 verbose #608 > > │ outputContent: │ 00:00:13 verbose #609 > > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: test.spi │ 00:00:13 verbose #610 > > │ 00:00:00 debug #2 Supervisor.buildFile / AsyncSeq.scan / │ 00:00:13 verbose #611 > > │ outputContent: │ 00:00:13 verbose #612 > > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ 00:00:13 verbose #613 > > │ error: / path: test.spi │ 00:00:13 verbose #614 > > │ 00:00:00 debug #3 Supervisor.buildFile / takeWhileInclusive / │ 00:00:13 verbose #615 > > │ outputContent: │ 00:00:13 verbose #616 > > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: test.spi │ 00:00:13 verbose #617 > > │ 00:00:00 verbose #4 Supervisor.sendJson / port: 13805 / json: │ 00:00:13 verbose #618 > > │ {"FileOpen":{"spiText":"/// # test (Polyglot)\nnominal i = ()\nnominal e = │ 00:00:13 verbose #619 > > │ ()\nnominal s = │ 00:00:13 verbose #620 > > │ ()\nnomin...t\u003E\u0022\n","uri":"file:///home/runner/work/polyglot/polygl │ 00:00:13 verbose #621 > > │ ot/apps/spiral/temp/test/test.spi"}} / result: │ 00:00:13 verbose #622 > > │ 00:00:00 verbose #5 Supervisor.sendJson / port: 13805 / json: │ 00:00:13 verbose #623 > > │ {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/po │ 00:00:13 verbose #624 > > │ lyglot/apps/spiral/temp/test/test.spi"}} / result: │ 00:00:13 verbose #625 > > │ 00:00:00 debug #6 Supervisor.buildFile / AsyncSeq.scan / │ 00:00:13 verbose #626 > > │ outputContent: │ 00:00:13 verbose #627 > > │ let rec closure1 () () : unit = │ 00:00:13 verbose #628 > > │ let v0 : (string -> unit) = System.Console.WriteLine │ 00:00:13 verbose #629 > > │ let v1 : string = "test" │ 00:00:13 verbose #630 > > │ v0 v1 │ 00:00:13 verbose #631 > > │ and closure0 () () : i...t v0 : unit = () │ 00:00:13 verbose #632 > > │ let v1 : (unit -> unit) = closure1() │ 00:00:13 verbose #633 > > │ let v2 : unit = (fun () -> v1 (); v0) () │ 00:00:13 verbose #634 > > │ 0 │ 00:00:13 verbose #635 > > │ let v0 : (unit -> int32) = closure0() │ 00:00:13 verbose #636 > > │ () │ 00:00:13 verbose #637 > > │ / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / │ 00:00:13 verbose #638 > > │ error: / path: test.spi │ 00:00:13 verbose #639 > > │ 00:00:00 debug #7 Supervisor.buildFile / takeWhileInclusive / │ 00:00:13 verbose #640 > > │ outputContent: │ 00:00:13 verbose #641 > > │ let rec closure1 () () : unit = │ 00:00:13 verbose #642 > > │ let v0 : (string -> unit) = System.Console.WriteLine │ 00:00:13 verbose #643 > > │ let v1 : string = "test" │ 00:00:13 verbose #644 > > │ v0 v1 │ 00:00:13 verbose #645 > > │ and closure0 () () : i...t v0 : unit = () │ 00:00:13 verbose #646 > > │ let v1 : (unit -> unit) = closure1() │ 00:00:13 verbose #647 > > │ let v2 : unit = (fun () -> v1 (); v0) () │ 00:00:13 verbose #648 > > │ 0 │ 00:00:13 verbose #649 > > │ let v0 : (unit -> int32) = closure0() │ 00:00:13 verbose #650 > > │ () │ 00:00:13 verbose #651 > > │ / errors: [] / typeErrorCount: 0 / retry: 0 / path: test.spi │ 00:00:13 verbose #652 > > │ 00:00:00 debug #8 FileSystem.watchWithFilter / Disposing watch stream │ 00:00:13 verbose #653 > > │ / filter: FileName, LastWrite │ 00:00:13 verbose #654 > > │ │ 00:00:13 verbose #655 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:13 verbose #656 > > 00:00:13 verbose #657 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:13 verbose #658 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:13 verbose #659 > > │ ## compile and format the project │ 00:00:13 verbose #660 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:13 verbose #661 > > 00:00:13 verbose #662 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:13 verbose #663 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:13 verbose #664 > > │ ### compile project with fable targeting optimized rust │ 00:00:13 verbose #665 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:13 verbose #666 > > 00:00:13 verbose #667 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:13 verbose #668 > > dotnet fable --optimize --lang rs --extension .rs 00:00:20 verbose #669 > > 00:00:20 verbose #670 > > ╭─[ 6.75s - stdout ]───────────────────────────────────────────────────────────╮ 00:00:20 verbose #671 > > │ Fable 4.19.3: F# to Rust compiler (status: alpha) │ 00:00:20 verbose #672 > > │ │ 00:00:20 verbose #673 > > │ Thanks to the contributor! @battermann │ 00:00:20 verbose #674 > > │ Stand with Ukraine! https://standwithukraine.com.ua/ │ 00:00:20 verbose #675 > > │ │ 00:00:20 verbose #676 > > │ Parsing test.fsproj... │ 00:00:20 verbose #677 > > │ .> dotnet restore test.fable-temp.csproj -p:FABLE_COMPILER=true │ 00:00:20 verbose #678 > > │ -p:FABLE_COMPILER_4=true -p:FABLE_COMPILER_RUST=true │ 00:00:20 verbose #679 > > │ Determining projects to restore... │ 00:00:20 verbose #680 > > │ Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b │ 00:00:20 verbose #681 > > │ The last full restore is still up to date. Nothing left to do. │ 00:00:20 verbose #682 > > │ Total time taken: 0 milliseconds │ 00:00:20 verbose #683 > > │ Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b │ 00:00:20 verbose #684 > > │ Restoring │ 00:00:20 verbose #685 > > │ /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.fable-temp.cs │ 00:00:20 verbose #686 > > │ proj │ 00:00:20 verbose #687 > > │ Starting restore process. │ 00:00:20 verbose #688 > > │ Total time taken: 0 milliseconds │ 00:00:20 verbose #689 > > │ Restored │ 00:00:20 verbose #690 > > │ /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.fable-temp.cs │ 00:00:20 verbose #691 > > │ proj (in 256 ms). │ 00:00:20 verbose #692 > > │ .> dotnet restore │ 00:00:20 verbose #693 > > │ /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.fsproj │ 00:00:20 verbose #694 > > │ Determining projects to restore... │ 00:00:20 verbose #695 > > │ Restored │ 00:00:20 verbose #696 > > │ /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.fsproj (in │ 00:00:20 verbose #697 > > │ 251 ms). │ 00:00:20 verbose #698 > > │ Project and references (1 source files) parsed in 4634ms │ 00:00:20 verbose #699 > > │ │ 00:00:20 verbose #700 > > │ Started Fable compilation... │ 00:00:20 verbose #701 > > │ │ 00:00:20 verbose #702 > > │ Fable compilation finished in 1041ms │ 00:00:20 verbose #703 > > │ │ 00:00:20 verbose #704 > > │ ./test.fsx(11,0): (11,2) warning FABLE: For Rust, support for F# static │ 00:00:20 verbose #705 > > │ and module do bindings is disabled by default. It can be enabled with the │ 00:00:20 verbose #706 > > │ 'static_do_bindings' feature. Use at your own risk! │ 00:00:20 verbose #707 > > │ │ 00:00:20 verbose #708 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:20 verbose #709 > > 00:00:20 verbose #710 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:20 verbose #711 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:20 verbose #712 > > │ ### fix formatting issues in the .rs file using regex and set-content │ 00:00:20 verbose #713 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:20 verbose #714 > > 00:00:20 verbose #715 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:20 verbose #716 > > (Get-Content test.rs) ` 00:00:20 verbose #717 > > -replace [[regex]]::Escape("),);"), "));" ` 00:00:20 verbose #718 > > | FixRust ` 00:00:20 verbose #719 > > | Set-Content test.rs 00:00:20 verbose #720 > > 00:00:20 verbose #721 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:20 verbose #722 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:20 verbose #723 > > │ ### format the rust code using cargo fmt │ 00:00:20 verbose #724 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:20 verbose #725 > > 00:00:20 verbose #726 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:20 verbose #727 > > cargo fmt -- 00:00:20 verbose #728 > > 00:00:20 verbose #729 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:20 verbose #730 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:20 verbose #731 > > │ ## build and test the project │ 00:00:20 verbose #732 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:20 verbose #733 > > 00:00:20 verbose #734 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:20 verbose #735 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:20 verbose #736 > > │ ### build the project in release mode using nightly rust compiler │ 00:00:20 verbose #737 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:20 verbose #738 > > 00:00:20 verbose #739 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:20 verbose #740 > > cargo build --release 00:00:32 verbose #741 > > 00:00:32 verbose #742 > > ╭─[ 11.36s - stdout ]──────────────────────────────────────────────────────────╮ 00:00:32 verbose #743 > > │ Compiling syn v2.0.76 │ 00:00:32 verbose #744 > > │ Compiling rand_core v0.6.4 │ 00:00:32 verbose #745 > > │ Compiling linux-raw-sys v0.4.14 │ 00:00:32 verbose #746 > > │ Compiling num-traits v0.2.19 │ 00:00:32 verbose #747 > > │ Compiling once_cell v1.19.0 │ 00:00:32 verbose #748 > > │ Compiling libm v0.2.8 │ 00:00:32 verbose #749 > > │ Compiling wait-timeout v0.2.0 │ 00:00:32 verbose #750 > > │ Compiling rustix v0.38.35 │ 00:00:32 verbose #751 > > │ Compiling bit-vec v0.6.3 │ 00:00:32 verbose #752 > > │ Compiling quick-error v1.2.3 │ 00:00:32 verbose #753 > > │ Compiling bit-set v0.5.3 │ 00:00:32 verbose #754 > > │ Compiling rand_xorshift v0.3.0 │ 00:00:32 verbose #755 > > │ Compiling unarray v0.1.4 │ 00:00:32 verbose #756 > > │ Compiling memchr v2.7.4 │ 00:00:32 verbose #757 > > │ Compiling nom v7.1.3 │ 00:00:32 verbose #758 > > │ Compiling fable_library_rust v0.1.0 │ 00:00:32 verbose #759 > > │ (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-libr │ 00:00:32 verbose #760 > > │ ary-rust) │ 00:00:32 verbose #761 > > │ Compiling zerocopy-derive v0.7.35 │ 00:00:32 verbose #762 > > │ Compiling tempfile v3.12.0 │ 00:00:32 verbose #763 > > │ Compiling rusty-fork v0.3.0 │ 00:00:32 verbose #764 > > │ Compiling zerocopy v0.7.35 │ 00:00:32 verbose #765 > > │ Compiling thiserror-impl v1.0.63 │ 00:00:32 verbose #766 > > │ Compiling ppv-lite86 v0.2.20 │ 00:00:32 verbose #767 > > │ Compiling thiserror v1.0.63 │ 00:00:32 verbose #768 > > │ Compiling rand_chacha v0.3.1 │ 00:00:32 verbose #769 > > │ Compiling rand v0.8.5 │ 00:00:32 verbose #770 > > │ Compiling proptest v1.5.0 │ 00:00:32 verbose #771 > > │ Compiling spiral_temp_test v0.0.1 │ 00:00:32 verbose #772 > > │ (/home/runner/work/polyglot/polyglot/apps/spiral/temp/test) │ 00:00:32 verbose #773 > > │ warning: enum `Item` is never used │ 00:00:32 verbose #774 > > │ --> 38;5;2m│ 00:00:32 verbose #775 > > │ 0m/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/./main.rs:16:638;5;2m│ 00:00:32 verbose #776 > > │ 0m │ 00:00:32 verbose #777 > > │ | │ 00:00:32 verbose #778 > > │ 16 | enum Item { │ 00:00:32 verbose #779 > > │ | ^^^^ │ 00:00:32 verbose #780 > > │ | │ 00:00:32 verbose #781 > > │ = note: `#[warn(dead_code)]` on by default38;5;2m│ 00:00:32 verbose #782 > > │ 0m │ 00:00:32 verbose #783 > > │ │ 00:00:32 verbose #784 > > │ warning: struct `Cart` is never constructed │ 00:00:32 verbose #785 > > │ --> 38;5;2m│ 00:00:32 verbose #786 > > │ 0m/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/./main.rs:41:838;5;2m│ 00:00:32 verbose #787 > > │ 0m │ 00:00:32 verbose #788 > > │ | │ 00:00:32 verbose #789 > > │ 41 | struct Cart { │ 00:00:32 verbose #790 > > │ | ^^^^ │ 00:00:32 verbose #791 > > │ │ 00:00:32 verbose #792 > > │ warning: associated items `new`, `add_item`, and │ 00:00:32 verbose #793 > > │ `remove_item` are never used │ 00:00:32 verbose #794 > > │ --> 38;5;2m│ 00:00:32 verbose #795 > > │ 0m/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/./main.rs:46:838;5;2m│ 00:00:32 verbose #796 > > │ 0m │ 00:00:32 verbose #797 > > │ | │ 00:00:32 verbose #798 > > │ 45 | impl Cart { │ 00:00:32 verbose #799 > > │ | --------- 38;5;2m│ 00:00:32 verbose #800 > > │ 38;5;12massociated items in this implementation │ 00:00:32 verbose #801 > > │ 46 | fn new() -> Cart { │ 00:00:32 verbose #802 > > │ | ^^^ │ 00:00:32 verbose #803 > > │ ... │ 00:00:32 verbose #804 > > │ 50 | fn add_item(&mut self, │ 00:00:32 verbose #805 > > │ item: Item) { │ 00:00:32 verbose #806 > > │ | ^^^^^^^^ │ 00:00:32 verbose #807 > > │ ... │ 00:00:32 verbose #808 > > │ 56 | fn remove_item(&mut │ 00:00:32 verbose #809 > > │ self, item: &Item) { │ 00:00:32 verbose #810 > > │ | ^^^^^^^^^^^ │ 00:00:32 verbose #811 > > │ │ 00:00:32 verbose #812 > > │ warning: function `parse_comment` is never used │ 00:00:32 verbose #813 > > │ --> 38;5;2m│ 00:00:32 verbose #814 > > │ 0m/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/./main.rs:124:4 │ 00:00:32 verbose #815 > > │ [0m │ 00:00:32 verbose #816 > > │ | │ 00:00:32 verbose #817 > > │ 124 | fn parse_comment(input: │ 00:00:32 verbose #818 > > │ &str) -> IResult<&str, SpiralToken> { │ 00:00:32 verbose #819 > > │ | ^^^^^^^^^^^^^ │ 00:00:32 verbose #820 > > │ │ 00:00:32 verbose #821 > > │ warning: function `parse_string` is never used │ 00:00:32 verbose #822 > > │ --> 38;5;2m│ 00:00:32 verbose #823 > > │ 0m/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/./main.rs:130:4 │ 00:00:32 verbose #824 > > │ [0m │ 00:00:32 verbose #825 > > │ | │ 00:00:32 verbose #826 > > │ 130 | fn parse_string(input: │ 00:00:32 verbose #827 > > │ &str) -> IResult<&str, SpiralToken> { │ 00:00:32 verbose #828 > > │ | ^^^^^^^^^^^^ │ 00:00:32 verbose #829 > > │ │ 00:00:32 verbose #830 > > │ warning: function `parse_identifier` is never used │ 00:00:32 verbose #831 > > │ --> 38;5;2m│ 00:00:32 verbose #832 > > │ 0m/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/./main.rs:145:4 │ 00:00:32 verbose #833 > > │ [0m │ 00:00:32 verbose #834 > > │ | │ 00:00:32 verbose #835 > > │ 145 | fn parse_identifier(input: │ 00:00:32 verbose #836 > > │ &str) -> IResult<&str, SpiralToken> { │ 00:00:32 verbose #837 > > │ | ^^^^^^^^^^^^^^^^ │ 00:00:32 verbose #838 > > │ │ 00:00:32 verbose #839 > > │ warning: function `parse_integer` is never used │ 00:00:32 verbose #840 > > │ --> 38;5;2m│ 00:00:32 verbose #841 > > │ 0m/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/./main.rs:157:4 │ 00:00:32 verbose #842 > > │ [0m │ 00:00:32 verbose #843 > > │ | │ 00:00:32 verbose #844 > > │ 157 | fn parse_integer(input: │ 00:00:32 verbose #845 > > │ &str) -> IResult<&str, SpiralToken> { │ 00:00:32 verbose #846 > > │ | ^^^^^^^^^^^^^ │ 00:00:32 verbose #847 > > │ │ 00:00:32 verbose #848 > > │ warning: function `parse_operator` is never used │ 00:00:32 verbose #849 > > │ --> 38;5;2m│ 00:00:32 verbose #850 > > │ 0m/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/./main.rs:165:4 │ 00:00:32 verbose #851 > > │ [0m │ 00:00:32 verbose #852 > > │ | │ 00:00:32 verbose #853 > > │ 165 | fn parse_operator(input: │ 00:00:32 verbose #854 > > │ &str) -> IResult<&str, SpiralToken> { │ 00:00:32 verbose #855 > > │ | ^^^^^^^^^^^^^^ │ 00:00:32 verbose #856 > > │ │ 00:00:32 verbose #857 > > │ warning: function `parse_token` is never used │ 00:00:32 verbose #858 > > │ --> 38;5;2m│ 00:00:32 verbose #859 > > │ 0m/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/./main.rs:170:4 │ 00:00:32 verbose #860 > > │ [0m │ 00:00:32 verbose #861 > > │ | │ 00:00:32 verbose #862 > > │ 170 | fn parse_token(input: &str) │ 00:00:32 verbose #863 > > │ -> IResult<&str, SpiralToken> { │ 00:00:32 verbose #864 > > │ | ^^^^^^^^^^^ │ 00:00:32 verbose #865 > > │ │ 00:00:32 verbose #866 > > │ warning: function `format_token` is never used │ 00:00:32 verbose #867 > > │ --> 38;5;2m│ 00:00:32 verbose #868 > > │ 0m/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/./main.rs:180:4 │ 00:00:32 verbose #869 > > │ [0m │ 00:00:32 verbose #870 > > │ | │ 00:00:32 verbose #871 > > │ 180 | fn format_token(token: │ 00:00:32 verbose #872 > > │ &SpiralToken) -> String { │ 00:00:32 verbose #873 > > │ | ^^^^^^^^^^^^ │ 00:00:32 verbose #874 > > │ │ 00:00:32 verbose #875 > > │ warning: function `parse_expression` is never used │ 00:00:32 verbose #876 > > │ --> 38;5;2m│ 00:00:32 verbose #877 > > │ 0m/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/./main.rs:201:4 │ 00:00:32 verbose #878 > > │ [0m │ 00:00:32 verbose #879 > > │ | │ 00:00:32 verbose #880 > > │ 201 | fn parse_expression(input: │ 00:00:32 verbose #881 > > │ &str) -> IResult<&str, SpiralToken> { │ 00:00:32 verbose #882 > > │ | ^^^^^^^^^^^^^^^^ │ 00:00:32 verbose #883 > > │ │ 00:00:32 verbose #884 > > │ warning: `spiral_temp_test` (bin "spiral_temp_test") │ 00:00:32 verbose #885 > > │ generated 11 warnings │ 00:00:32 verbose #886 > > │ Finished `release` profile [optimized] target(s) in 11.31s │ 00:00:32 verbose #887 > > │ │ 00:00:32 verbose #888 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:32 verbose #889 > > 00:00:32 verbose #890 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:32 verbose #891 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:32 verbose #892 > > │ ### run release tests with output enabled │ 00:00:32 verbose #893 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:32 verbose #894 > > 00:00:32 verbose #895 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:32 verbose #896 > > { cargo test --release -- --show-output } | Invoke-Block 00:00:48 verbose #897 > > 00:00:48 verbose #898 > > ╭─[ 15.97s - stdout ]──────────────────────────────────────────────────────────╮ 00:00:48 verbose #899 > > │ Compiling linux-raw-sys v0.4.14 │ 00:00:48 verbose #900 > > │ Compiling bitflags v2.6.0 │ 00:00:48 verbose #901 > > │ Compiling zerocopy v0.7.35 │ 00:00:48 verbose #902 > > │ Compiling fastrand v2.1.1 │ 00:00:48 verbose #903 > > │ Compiling once_cell v1.19.0 │ 00:00:48 verbose #904 > > │ Compiling wait-timeout v0.2.0 │ 00:00:48 verbose #905 > > │ Compiling bit-vec v0.6.3 │ 00:00:48 verbose #906 > > │ Compiling rustix v0.38.35 │ 00:00:48 verbose #907 > > │ Compiling quick-error v1.2.3 │ 00:00:48 verbose #908 > > │ Compiling fnv v1.0.7 │ 00:00:48 verbose #909 > > │ Compiling bit-set v0.5.3 │ 00:00:48 verbose #910 > > │ Compiling num-traits v0.2.19 │ 00:00:48 verbose #911 > > │ Compiling ppv-lite86 v0.2.20 │ 00:00:48 verbose #912 > > │ Compiling rand_xorshift v0.3.0 │ 00:00:48 verbose #913 > > │ Compiling minimal-lexical v0.2.1 │ 00:00:48 verbose #914 > > │ Compiling rand_chacha v0.3.1 │ 00:00:48 verbose #915 > > │ Compiling lazy_static v1.5.0 │ 00:00:48 verbose #916 > > │ Compiling memchr v2.7.4 │ 00:00:48 verbose #917 > > │ Compiling rand v0.8.5 │ 00:00:48 verbose #918 > > │ Compiling unarray v0.1.4 │ 00:00:48 verbose #919 > > │ Compiling nom v7.1.3 │ 00:00:48 verbose #920 > > │ Compiling fable_library_rust v0.1.0 │ 00:00:48 verbose #921 > > │ (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-libr │ 00:00:48 verbose #922 > > │ ary-rust) │ 00:00:48 verbose #923 > > │ Compiling thiserror v1.0.63 │ 00:00:48 verbose #924 > > │ Compiling tempfile v3.12.0 │ 00:00:48 verbose #925 > > │ Compiling rusty-fork v0.3.0 │ 00:00:48 verbose #926 > > │ Compiling proptest v1.5.0 │ 00:00:48 verbose #927 > > │ Compiling spiral_temp_test v0.0.1 │ 00:00:48 verbose #928 > > │ (/home/runner/work/polyglot/polyglot/apps/spiral/temp/test) │ 00:00:48 verbose #929 > > │ Finished `release` profile [optimized] target(s) in 15.83s │ 00:00:48 verbose #930 > > │ Running unittests main.rs │ 00:00:48 verbose #931 > > │ (/home/runner/work/polyglot/polyglot/workspace/target/release/deps/spiral_te │ 00:00:48 verbose #932 > > │ mp_test-9ee62054c8fa759c) │ 00:00:48 verbose #933 > > │ │ 00:00:48 verbose #934 > > │ running 3 tests │ 00:00:48 verbose #935 > > │ test test_parse_number ... ok │ 00:00:48 verbose #936 > > │ test prop_parse_format_idempotent ... ok │ 00:00:48 verbose #937 > > │ test │ 00:00:48 verbose #938 > > │ adding_and_then_removing_an_item_from_the_cart_leaves_the_cart_unchanged ... │ 00:00:48 verbose #939 > > │ ok │ 00:00:48 verbose #940 > > │ │ 00:00:48 verbose #941 > > │ successes: │ 00:00:48 verbose #942 > > │ │ 00:00:48 verbose #943 > > │ ---- prop_parse_format_idempotent stdout ---- │ 00:00:48 verbose #944 > > │ input=Identifier("oPnQm0AYQ78Ng1Q7fqn5EalTCQM932q") │ 00:00:48 verbose #945 > > │ input=Operator("=") │ 00:00:48 verbose #946 > > │ input=Integer(-3920480083096758925) │ 00:00:48 verbose #947 > > │ input=Operator("(") │ 00:00:48 verbose #948 > > │ input=Operator("/") │ 00:00:48 verbose #949 > > │ input=Integer(-3702015641894580733) │ 00:00:48 verbose #950 > > │ input=Integer(-2703506329922252149) │ 00:00:48 verbose #951 > > │ input=StringLiteral("PH=t/&P^){/%*t4%z:2Y-<&kl") │ 00:00:48 verbose #952 > > │ input=Identifier("O") │ 00:00:48 verbose #953 > > │ input=Integer(7708368487579818809) │ 00:00:48 verbose #954 > > │ input=Operator("*") │ 00:00:48 verbose #955 > > │ input=Integer(857580607048074132) │ 00:00:48 verbose #956 > > │ input=Operator("(") │ 00:00:48 verbose #957 > > │ input=Integer(8688783525598232421) │ 00:00:48 verbose #958 > > │ input=Operator(")") │ 00:00:48 verbose #959 > > │ input=Operator("(") │ 00:00:48 verbose #960 > > │ input=Integer(440397636449447109) │ 00:00:48 verbose #961 > > │ input=Comment(" e&@\"?:\"") │ 00:00:48 verbose #962 > > │ input=Operator("/") │ 00:00:48 verbose #963 > > │ input=Identifier("ZT0FZCNm85z5M4gUo") │ 00:00:48 verbose #964 > > │ input=Identifier("kssuMBgtE9bF7DNb7QL1AIyqA1PS4Gru") │ 00:00:48 verbose #965 > > │ input=Comment("5~<b6;e)Ad#m_^>r@[ml(Y%:") │ 00:00:48 verbose #966 > > │ input=Identifier("rw0S7bYpJo8g9tOOLgXwT9d") │ 00:00:48 verbose #967 > > │ input=Comment("p&)=\"jo@+'3W/`") │ 00:00:48 verbose #968 > > │ input=Operator("*") │ 00:00:48 verbose #969 > > │ input=Identifier("vBAXJb1RbHW7") │ 00:00:48 verbose #970 > > │ input=StringLiteral("+|?{[[=zly/") │ 00:00:48 verbose #971 > > │ input=Operator(")") │ 00:00:48 verbose #972 > > │ input=Comment("*2U") │ 00:00:48 verbose #973 > > │ input=Comment("<6^Ng?&e)=ikM*=$^~eOdW`l:C$$") │ 00:00:48 verbose #974 > > │ input=StringLiteral("bY%],d$p't{/F4`:B~]") │ 00:00:48 verbose #975 > > │ input=Comment("h:EM<Dg?QCrn'") │ 00:00:48 verbose #976 > > │ input=StringLiteral("V.2/095K*//fRu`'b&<G=B=i`@&?4|=") │ 00:00:48 verbose #977 > > │ input=Integer(-7539917455275479063) │ 00:00:48 verbose #978 > > │ input=Identifier("TqU666jZ5sH2W5ObUBK4NU2R") │ 00:00:48 verbose #979 > > │ input=StringLiteral("K &nzH/") │ 00:00:48 verbose #980 > > │ input=Integer(-6274804900431084729) │ 00:00:48 verbose #981 > > │ input=Comment("-_\"{=$}'") │ 00:00:48 verbose #982 > > │ input=Comment("Br^H\"}.*#H[T") │ 00:00:48 verbose #983 > > │ input=Operator("=") │ 00:00:48 verbose #984 > > │ input=Operator("*") │ 00:00:48 verbose #985 > > │ input=Comment(" 0}4ZR|&:a0Fb<=Q$In\\bB&=KBueZY") │ 00:00:48 verbose #986 > > │ input=Operator("*") │ 00:00:48 verbose #987 > > │ input=Comment("`yRu$'6:vTZ)`{8\"f~9") │ 00:00:48 verbose #988 > > │ input=Integer(-2808533717791317249) │ 00:00:48 verbose #989 > > │ input=Operator("(") │ 00:00:48 verbose #990 > > │ input=Identifier("RYi4lyGRcgEPVb7") │ 00:00:48 verbose #991 > > │ input=Integer(-8800822282197351581) │ 00:00:48 verbose #992 > > │ input=Identifier("dN8hwrJvj33TlYJRC3") │ 00:00:48 verbose #993 > > │ input=StringLiteral(" :Wc=efr-{K^!!tkCy:`IX$f$aw") │ 00:00:48 verbose #994 > > │ input=Operator("+") │ 00:00:48 verbose #995 > > │ input=Comment("M%m") │ 00:00:48 verbose #996 > > │ input=Identifier("d2sW3SIou") │ 00:00:48 verbose #997 > > │ input=Comment("QS:$O8.\\f:'{F$?a%/O:)~_\\D^cO?$=I") │ 00:00:48 verbose #998 > > │ input=Comment("'\\*N/\\?;*2F") │ 00:00:48 verbose #999 > > │ input=Comment("") │ 00:00:48 verbose #1000 > > │ input=Identifier("azrz1Ujy4X4M1G2AB36G9a") │ 00:00:48 verbose #1001 > > │ input=Operator("(") │ 00:00:48 verbose #1002 > > │ input=Integer(-8523168548933077200) │ 00:00:48 verbose #1003 > > │ input=StringLiteral("%ol]D=*'L$c>.wYF#?*/7") │ 00:00:48 verbose #1004 > > │ input=Operator(")") │ 00:00:48 verbose #1005 > > │ input=Identifier("zwsEagg0Tg7I") │ 00:00:48 verbose #1006 > > │ input=Integer(-2446719588365423274) │ 00:00:48 verbose #1007 > > │ input=Comment(">J=m") │ 00:00:48 verbose #1008 > > │ input=StringLiteral("N&$msfoDO@3&h$lA2<_:|$f") │ 00:00:48 verbose #1009 > > │ input=StringLiteral("p$oYq%(tHjh[^k`Q%Cv<hjn") │ 00:00:48 verbose #1010 > > │ input=StringLiteral("?.l<") │ 00:00:48 verbose #1011 > > │ input=StringLiteral("O%@`824=)<1lu") │ 00:00:48 verbose #1012 > > │ input=Comment("ia<PZ*~\\h.KS8Fzei'`$@4U]P(zs") │ 00:00:48 verbose #1013 > > │ input=StringLiteral("n{:k.`K%H0l`cxyLWP.ZoA{O/;*o OAF") │ 00:00:48 verbose #1014 > > │ input=Identifier("F22WSBkigbSwE7t3YAncY6G1Sj77mbHD") │ 00:00:48 verbose #1015 > > │ input=StringLiteral("!Mo:/`<a0p12o%o") │ 00:00:48 verbose #1016 > > │ input=Identifier("lX0nfSoAjD5x72") │ 00:00:48 verbose #1017 > > │ input=StringLiteral("w&?4q*rYI$,Q`'v`d=7/v]N1.ui") │ 00:00:48 verbose #1018 > > │ input=Identifier("MY4mH6EZQCjQNr33lvFgZADj") │ 00:00:48 verbose #1019 > > │ input=StringLiteral("'/hU5k9iJU#=7N:#K`''") │ 00:00:48 verbose #1020 > > │ input=StringLiteral("&.<m&/=<)r}y=F|zPk") │ 00:00:48 verbose #1021 > > │ input=Comment("g*") │ 00:00:48 verbose #1022 > > │ input=Comment("=\\$*^<^_=K`%b<{f`?=bx|") │ 00:00:48 verbose #1023 > > │ input=Comment("*..E5'/e<") │ 00:00:48 verbose #1024 > > │ input=Operator("+") │ 00:00:48 verbose #1025 > > │ input=Operator("/") │ 00:00:48 verbose #1026 > > │ input=Comment("&</.&$nX:fE>:.#mM x|\"G") │ 00:00:48 verbose #1027 > > │ input=StringLiteral(",{*Yc?%'n$TsxRUs ") │ 00:00:48 verbose #1028 > > │ input=Comment("&H=:/>^.g;m74|\"W)(\\N.2=4'") │ 00:00:48 verbose #1029 > > │ input=Comment("0[s\"{T?$$%'=$Oy*&/6sB") │ 00:00:48 verbose #1030 > > │ input=StringLiteral("Oapa#bh$h&=") │ 00:00:48 verbose #1031 > > │ input=StringLiteral("*<.") │ 00:00:48 verbose #1032 > > │ input=Identifier("ut3SjA948u0sXK5j0W") │ 00:00:48 verbose #1033 > > │ input=Identifier("Rk7EqwYB00ExcPTTiP9h") │ 00:00:48 verbose #1034 > > │ input=Operator(")") │ 00:00:48 verbose #1035 > > │ input=Integer(-6430453863265735044) │ 00:00:48 verbose #1036 > > │ input=Operator("=") │ 00:00:48 verbose #1037 > > │ input=Comment("pW") │ 00:00:48 verbose #1038 > > │ input=StringLiteral(" WM") │ 00:00:48 verbose #1039 > > │ input=Operator("-") │ 00:00:48 verbose #1040 > > │ input=Integer(7831398330588322592) │ 00:00:48 verbose #1041 > > │ input=StringLiteral("0..ksP1%*0UO>Lu:") │ 00:00:48 verbose #1042 > > │ input=StringLiteral(".u*9:VF'-qG@6z%/U") │ 00:00:48 verbose #1043 > > │ input=Integer(-1110220110047254687) │ 00:00:48 verbose #1044 > > │ input=Identifier("ukUyYNrr1w") │ 00:00:48 verbose #1045 > > │ input=Identifier("CfWg6jzOwe7SEm8HhvFRw2CFikX38a4z") │ 00:00:48 verbose #1046 > > │ input=Comment("\"") │ 00:00:48 verbose #1047 > > │ input=Comment("?K/n+&='?a!aN=q%>)q&0`x=@sQ<-") │ 00:00:48 verbose #1048 > > │ input=Comment("VT5}") │ 00:00:48 verbose #1049 > > │ input=Identifier("qk89PiH6aWlVKlNEML3f4mzHK4UHn4w") │ 00:00:48 verbose #1050 > > │ input=StringLiteral("!5<4$=j{.&") │ 00:00:48 verbose #1051 > > │ input=Operator("(") │ 00:00:48 verbose #1052 > > │ input=Integer(-4921477954402948115) │ 00:00:48 verbose #1053 > > │ input=Identifier("n5uCndqXKewKU03hxk2BnN9A6ZHjYnGd1") │ 00:00:48 verbose #1054 > > │ input=Identifier("RI5wc6124mECDot3x4oe1hbm") │ 00:00:48 verbose #1055 > > │ input=Operator(")") │ 00:00:48 verbose #1056 > > │ input=Identifier("RL3pC0rWNhuCAG4s11V6Z") │ 00:00:48 verbose #1057 > > │ input=Integer(5399778741117989125) │ 00:00:48 verbose #1058 > > │ input=StringLiteral("Oq[%^suT/B%!2.h{x<Ejwl:,Rr_W<") │ 00:00:48 verbose #1059 > > │ input=Comment("^N\"WXE?K?Ml>-3K@4") │ 00:00:48 verbose #1060 > > │ input=Comment("j<f>R<h@'=tTv/g]J<vf") │ 00:00:48 verbose #1061 > > │ input=Comment(")[?.9a?CN`1R9?mA@\\%_u$u.M\"E~") │ 00:00:48 verbose #1062 > > │ input=Identifier("lyYk2UL2Jr3r7YU2VkUmEpZtB5zmQ5") │ 00:00:48 verbose #1063 > > │ input=StringLiteral("/m'x==%~$o") │ 00:00:48 verbose #1064 > > │ input=Operator("(") │ 00:00:48 verbose #1065 > > │ input=StringLiteral("ei2|nIT:'.u:=If]I*^w[q::*t0$+LcC") │ 00:00:48 verbose #1066 > > │ input=Comment("!?\\*!~jpdrW`HL&R:$HZ") │ 00:00:48 verbose #1067 > > │ input=StringLiteral("Q.'u`'?=7p*J{4") │ 00:00:48 verbose #1068 > > │ input=Identifier("Fak0xtMMqTh3U") │ 00:00:48 verbose #1069 > > │ input=StringLiteral("5;Aj R*i!.:gN*hIm") │ 00:00:48 verbose #1070 > > │ input=Identifier("gYR6cOsUZoDRx5W") │ 00:00:48 verbose #1071 > > │ input=Operator("(") │ 00:00:48 verbose #1072 > > │ input=StringLiteral("%6*|`,;b*&u}_t*TH:7m=t*sM") │ 00:00:48 verbose #1073 > > │ input=Integer(1541676995365507997) │ 00:00:48 verbose #1074 > > │ input=Identifier("fr9iH0MXN6O5P") │ 00:00:48 verbose #1075 > > │ input=StringLiteral("rq") │ 00:00:48 verbose #1076 > > │ input=StringLiteral("W<X`!W,_|$<Ea. | O98&:/?") │ 00:00:48 verbose #1077 > > │ input=StringLiteral("a/T") │ 00:00:48 verbose #1078 > > │ input=Operator(")") │ 00:00:48 verbose #1079 > > │ input=StringLiteral("zXt~-") │ 00:00:48 verbose #1080 > > │ input=Integer(2139209711786415078) │ 00:00:48 verbose #1081 > > │ input=StringLiteral("4>}.(.5V0yuoMD4") │ 00:00:48 verbose #1082 > > │ input=Identifier("vbTFwBV4ymjJr9Ab123") │ 00:00:48 verbose #1083 > > │ input=Operator("=") │ 00:00:48 verbose #1084 > > │ input=Integer(-3282439213889950271) │ 00:00:48 verbose #1085 > > │ input=Integer(-8080052913109747650) │ 00:00:48 verbose #1086 > > │ input=Integer(7608052470181148204) │ 00:00:48 verbose #1087 > > │ input=StringLiteral("B`:") │ 00:00:48 verbose #1088 > > │ input=Operator("(") │ 00:00:48 verbose #1089 > > │ input=Identifier("mGyeo3NfWOyOuDgqzTz6jLMiNVayWH5S") │ 00:00:48 verbose #1090 > > │ input=StringLiteral("`Rr") │ 00:00:48 verbose #1091 > > │ input=Operator(")") │ 00:00:48 verbose #1092 > > │ input=Operator("-") │ 00:00:48 verbose #1093 > > │ input=Operator("=") │ 00:00:48 verbose #1094 > > │ input=StringLiteral("/;k%?x]F~Z+`GGS") │ 00:00:48 verbose #1095 > > │ input=StringLiteral("*L{yn") │ 00:00:48 verbose #1096 > > │ input=Integer(7822953228837922623) │ 00:00:48 verbose #1097 > > │ input=Identifier("B1") │ 00:00:48 verbose #1098 > > │ input=StringLiteral(".~$:a/C3f%'$dA&=_O_") │ 00:00:48 verbose #1099 > > │ input=Operator("-") │ 00:00:48 verbose #1100 > > │ input=Operator("*") │ 00:00:48 verbose #1101 > > │ input=StringLiteral("]L%U`q);.,?)x./f$*(?UYwx&E*=PM") │ 00:00:48 verbose #1102 > > │ input=Identifier("r") │ 00:00:48 verbose #1103 > > │ input=Operator("*") │ 00:00:48 verbose #1104 > > │ input=Operator("*") │ 00:00:48 verbose #1105 > > │ input=Integer(-2486022194309878877) │ 00:00:48 verbose #1106 > > │ input=StringLiteral("RY:A:s}{.9Ezy+ yH:zs{J.Bt'?") │ 00:00:48 verbose #1107 > > │ input=Operator("=") │ 00:00:48 verbose #1108 > > │ input=Integer(-2206037627311676445) │ 00:00:48 verbose #1109 > > │ input=StringLiteral("tRg2ua.hF") │ 00:00:48 verbose #1110 > > │ input=Operator("(") │ 00:00:48 verbose #1111 > > │ input=StringLiteral("<X`bd*8k.u/ko<'^%?V3?kbr-") │ 00:00:48 verbose #1112 > > │ input=StringLiteral("*!<~hI8T!!Re%iY</({P&") │ 00:00:48 verbose #1113 > > │ input=Operator("/") │ 00:00:48 verbose #1114 > > │ input=Identifier("TUE") │ 00:00:48 verbose #1115 > > │ input=Operator("*") │ 00:00:48 verbose #1116 > > │ input=Identifier("kWK7AbkELn6") │ 00:00:48 verbose #1117 > > │ input=Comment("'t:M<<m\"M`!?SU2}?,0/e''u:+P") │ 00:00:48 verbose #1118 > > │ input=Identifier("Q81s8814Uq64pIoXH51LV") │ 00:00:48 verbose #1119 > > │ input=Identifier("Pjyd80EIF") │ 00:00:48 verbose #1120 > > │ input=Comment("UchIJsV&p%=@/*:{=}r") │ 00:00:48 verbose #1121 > > │ input=Identifier("wa8KXWSoLV66VPzeci0ui") │ 00:00:48 verbose #1122 > > │ input=Comment("w|@6'<jS::F.{*$O:4!':=w%IIY|\\]%{") │ 00:00:48 verbose #1123 > > │ input=Identifier("Kl8ZwG") │ 00:00:48 verbose #1124 > > │ input=StringLiteral("ujSCPot?DrN") │ 00:00:48 verbose #1125 > > │ input=Identifier("M2vS02") │ 00:00:48 verbose #1126 > > │ input=StringLiteral("%G<+rygucROe-H YgzhS0A'??%`*qBX") │ 00:00:48 verbose #1127 > > │ input=StringLiteral(")0XMEIJ(;<j*)UeyD:s^-?!06l") │ 00:00:48 verbose #1128 > > │ input=StringLiteral("") │ 00:00:48 verbose #1129 > > │ input=Identifier("xY75T3XQ10ME") │ 00:00:48 verbose #1130 > > │ input=Integer(-2804319554064575025) │ 00:00:48 verbose #1131 > > │ input=StringLiteral("s0{<3xmyX?{4_<Z.)p?-M|YN.R;Kp/w") │ 00:00:48 verbose #1132 > > │ input=Operator("+") │ 00:00:48 verbose #1133 > > │ input=Operator("(") │ 00:00:48 verbose #1134 > > │ input=Identifier("pB90NVFKKd2hwEj0Yr") │ 00:00:48 verbose #1135 > > │ input=Comment("&AXm%%W<G") │ 00:00:48 verbose #1136 > > │ input=Identifier("N") │ 00:00:48 verbose #1137 > > │ input=Identifier("MwIA") │ 00:00:48 verbose #1138 > > │ input=Identifier("Ay0i3M5JGLn1ipg0LIDLDQjM35CXI9O7") │ 00:00:48 verbose #1139 > > │ input=Identifier("xCm") │ 00:00:48 verbose #1140 > > │ input=Identifier("NueDFNIkkW1CO5b") │ 00:00:48 verbose #1141 > > │ input=Comment("oA\\.`y|[*\\Ap>o5-d26c;)i: \" +") │ 00:00:48 verbose #1142 > > │ input=Integer(2260709744622975654) │ 00:00:48 verbose #1143 > > │ input=Comment("HHez|<QU=\\cV=G/u") │ 00:00:48 verbose #1144 > > │ input=Integer(-2190506955495365154) │ 00:00:48 verbose #1145 > > │ input=Identifier("f3dDM38SUScqBYW3eYLFuKy") │ 00:00:48 verbose #1146 > > │ input=Integer(-7521038412782243708) │ 00:00:48 verbose #1147 > > │ input=Identifier("att3Fc2citc9KSo") │ 00:00:48 verbose #1148 > > │ input=Operator("+") │ 00:00:48 verbose #1149 > > │ input=StringLiteral("R[.a=?sy_LB2&]*}y..w|!:KH$<*") │ 00:00:48 verbose #1150 > > │ input=Integer(-3170942163288706970) │ 00:00:48 verbose #1151 > > │ input=Comment("*$:cjrk%zS{b:=0=<'") │ 00:00:48 verbose #1152 > > │ input=StringLiteral("Y<S7vE&ggQ;6F") │ 00:00:48 verbose #1153 > > │ input=StringLiteral("oLK/?.MP46` .W'=&") │ 00:00:48 verbose #1154 > > │ input=Integer(-4646842264133998525) │ 00:00:48 verbose #1155 > > │ input=Operator("=") │ 00:00:48 verbose #1156 > > │ input=Identifier("r2FJ8qc3A6It2GNV7qQvMA0") │ 00:00:48 verbose #1157 > > │ input=Identifier("k6KGEr77s53d667DSvgb0lq") │ 00:00:48 verbose #1158 > > │ input=Identifier("kQCQ6UNR") │ 00:00:48 verbose #1159 > > │ input=Operator("+") │ 00:00:48 verbose #1160 > > │ input=Comment("W?.i:MV") │ 00:00:48 verbose #1161 > > │ input=Identifier("O4yR2o5z46xcE8ylvzK2rNS") │ 00:00:48 verbose #1162 > > │ input=Integer(-6557257559799732829) │ 00:00:48 verbose #1163 > > │ input=StringLiteral("'c@`5Be:<%%B>`m^& aS&") │ 00:00:48 verbose #1164 > > │ input=StringLiteral("R`{") │ 00:00:48 verbose #1165 > > │ input=Operator("*") │ 00:00:48 verbose #1166 > > │ input=Comment("b<hbaN&`r}sr]4C") │ 00:00:48 verbose #1167 > > │ input=Comment("<<t<jOT") │ 00:00:48 verbose #1168 > > │ input=StringLiteral("HV1G=%'?KBkJ,,%<{:'Q:$`??i") │ 00:00:48 verbose #1169 > > │ input=Operator("/") │ 00:00:48 verbose #1170 > > │ input=StringLiteral("-=x<==V%U/Xm<0<") │ 00:00:48 verbose #1171 > > │ input=Comment("um.]&c3&ccv1\\jEgmYW$:&A++<&E+C'") │ 00:00:48 verbose #1172 > > │ input=Comment("a%s%jhxV*9w8:F!:q<v/y\\V%1") │ 00:00:48 verbose #1173 > > │ input=StringLiteral("G.e}m>i:Z*/? ~<b") │ 00:00:48 verbose #1174 > > │ input=Comment("R2a6\":=}Zv5|/>yT") │ 00:00:48 verbose #1175 > > │ input=Operator("(") │ 00:00:48 verbose #1176 > > │ input=Identifier("lW") │ 00:00:48 verbose #1177 > > │ input=Integer(-3903151113352816874) │ 00:00:48 verbose #1178 > > │ input=Comment("*aT~x1<$*=p|sXf~?|Y") │ 00:00:48 verbose #1179 > > │ input=Operator("*") │ 00:00:48 verbose #1180 > > │ input=Comment("\\w@o%*!<we{\"%k_>q`(O.\\#%:?S") │ 00:00:48 verbose #1181 > > │ input=Integer(4011110214059869403) │ 00:00:48 verbose #1182 > > │ input=Identifier("BT5RBOarb2x6k") │ 00:00:48 verbose #1183 > > │ input=StringLiteral("4{6k]-7=1}lqkr*7D") │ 00:00:48 verbose #1184 > > │ input=Identifier("tceHg40n9x8EviL1DF") │ 00:00:48 verbose #1185 > > │ input=Integer(-3764393408627435613) │ 00:00:48 verbose #1186 > > │ input=Operator("-") │ 00:00:48 verbose #1187 > > │ input=Identifier("FjHs3Ofuvq017mKuFVsoEW00P6p9B4YbU") │ 00:00:48 verbose #1188 > > │ input=Integer(2583856766945553526) │ 00:00:48 verbose #1189 > > │ input=Identifier("avz8g545R") │ 00:00:48 verbose #1190 > > │ input=Identifier("UqSK5XF3wnD5O48Pfl7f7") │ 00:00:48 verbose #1191 > > │ input=Identifier("G0v5X9oDyylzo") │ 00:00:48 verbose #1192 > > │ input=Integer(1167883933528882270) │ 00:00:48 verbose #1193 > > │ input=Operator("*") │ 00:00:48 verbose #1194 > > │ input=Identifier("Z42634jR0k3jIJa") │ 00:00:48 verbose #1195 > > │ input=StringLiteral("9LI4") │ 00:00:48 verbose #1196 > > │ input=Integer(-9055317498844514144) │ 00:00:48 verbose #1197 > > │ input=Identifier("tj4V16W1R25O88Fh") │ 00:00:48 verbose #1198 > > │ input=Integer(2418265439380977620) │ 00:00:48 verbose #1199 > > │ input=StringLiteral("(p?8Z'*/:g(L'?>$}N}NqI=`c`S$H") │ 00:00:48 verbose #1200 > > │ │ 00:00:48 verbose #1201 > > │ │ 00:00:48 verbose #1202 > > │ successes: │ 00:00:48 verbose #1203 > > │ adding_and_then_removing_an_item_from_the_cart_leaves_the_cart_unchanged │ 00:00:48 verbose #1204 > > │ prop_parse_format_idempotent │ 00:00:48 verbose #1205 > > │ test_parse_number │ 00:00:48 verbose #1206 > > │ │ 00:00:48 verbose #1207 > > │ test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; │ 00:00:48 verbose #1208 > > │ finished in 0.07s │ 00:00:48 verbose #1209 > > │ │ 00:00:48 verbose #1210 > > │ │ 00:00:48 verbose #1211 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:48 verbose #1212 > > 00:00:48 verbose #1213 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:48 verbose #1214 > > ╭──────────────────────────────────────────────────────────────────────────────╮ 00:00:48 verbose #1215 > > │ ### execute the binary in release mode │ 00:00:48 verbose #1216 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:48 verbose #1217 > > 00:00:48 verbose #1218 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:48 verbose #1219 > > { . $ScriptDir/../../../../workspace/target/release/spiral_temp_test$(_exe) } | 00:00:48 verbose #1220 > > Invoke-Block 00:00:48 verbose #1221 > > 00:00:48 verbose #1222 > > ╭─[ 8.94ms - stdout ]──────────────────────────────────────────────────────────╮ 00:00:48 verbose #1223 > > │ app=test │ 00:00:48 verbose #1224 > > │ │ 00:00:48 verbose #1225 > > ╰──────────────────────────────────────────────────────────────────────────────╯ 00:00:48 verbose #1226 > 00:00:47 verbose #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 127910 } 00:00:48 verbose #1227 > 00:00:47 debug #4 runtime.execute_with_options / { file_name = jupyter; arguments = [ 00:00:48 verbose #1228 > "nbconvert", 00:00:48 verbose #1229 > "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb", 00:00:48 verbose #1230 > "--to", 00:00:48 verbose #1231 > "html", 00:00:48 verbose #1232 > "--HTMLExporter.theme=dark", 00:00:48 verbose #1233 > ]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:48 verbose #1234 > 00:00:48 verbose #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb to html 00:00:48 verbose #1235 > 00:00:48 verbose #6 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:48 verbose #1236 > 00:00:48 verbose #7 ! validate(nb) 00:00:49 verbose #1237 > 00:00:48 verbose #8 ! /opt/hostedtoolcache/Python/3.12.5/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:49 verbose #1238 > 00:00:48 verbose #9 ! return _pygments_highlight( 00:00:49 verbose #1239 > 00:00:48 verbose #10 ! [NbConvertApp] Writing 365222 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.html 00:00:49 verbose #1240 > 00:00:48 verbose #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 916 } 00:00:49 verbose #1241 > 00:00:48 debug #12 spiral_builder.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 916 } 00:00:49 verbose #1242 > 00:00:48 debug #13 runtime.execute_with_options / { file_name = pwsh; arguments = [ 00:00:49 verbose #1243 > "-c", 00:00:49 verbose #1244 > "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path", 00:00:49 verbose #1245 > ]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:49 verbose #1246 > 00:00:49 verbose #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:49 verbose #1247 > 00:00:49 debug #15 spiral_builder.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:49 verbose #1248 > 00:00:49 debug #16 spiral_builder.run / dib / { exit_code = 0; result_length = 128885 } 00:00:49 debug #1249 runtime.execute_with_options_async / { exit_code = 0; output_length = 134222 } 00:00:49 debug #1 main / executeCommand / exitCode: 0 / command: ../../../../workspace/target/release/spiral_builder dib --path build.dib
In [ ]:
{ pwsh ../apps/spiral/vscode/build.ps1 } | Invoke-Block
bun install v1.1.26 (0a37423b) + @types/node@20.12.11 + @types/vscode@1.89.0 + @vscode/vsce@2.26.1 + npm-check-updates@17.0.0-5 + typescript@5.5.0-dev.20240514 + vscode@1.1.37 190 packages installed [925.00ms] Creating symlink: /home/runner/work/polyglot/polyglot/apps/spiral/vscode/LICENSE -> /home/runner/work/polyglot/polyglot/LICENSE out/src/extension.js 2.4kb out/media/cellOutputScrollButtons.js 1.9kb ⚡ Done in 3ms Packaged: out/spiral-vscode-0.0.1.vsix (12 files, 43.6KB)
In [ ]:
{ pwsh ../apps/ipfs/build.ps1 } | Invoke-Block
bun install v1.1.26 (0a37423b)
+ @types/node@20.12.2
+ npm-check-updates@17.0.0-5
+ typescript@5.5.0-dev.20240401
+ nft.storage@7.1.1
219 packages installed [1267.00ms]
Blocked 1 postinstall. Run `bun pm untrusted` for details.
In [ ]:
{ pwsh ./outdated.ps1 } | Invoke-Block
Paket version 8.1.0-alpha004+7aa412f49b32de979c3d5acde07e88e6d47c965b
Resolving dependency graph...
Outdated packages found:
Group: Main
* Expecto 10.2.1 -> 11.0.0-alpha2
* Expecto.FsCheck 10.2.1-fscheck3 -> 11.0.0-alpha2-fscheck2
* FsCheck 3.0.0-rc3 -> 2.16.6
* FSharp.Core 8.0.300-beta.24080.5 -> 9.0.100-beta.24406.3
* Microsoft.AspNetCore.Connections.Abstractions 7.0 -> 9.0.0-preview.7.24406.2
* Microsoft.AspNetCore.Http.Connections.Client 7.0 -> 9.0.0-preview.7.24406.2
* Microsoft.AspNetCore.Http.Connections.Common 7.0 -> 9.0.0-preview.7.24406.2
* Microsoft.AspNetCore.SignalR.Client 7.0 -> 9.0.0-preview.7.24406.2
* Microsoft.AspNetCore.SignalR.Client.Core 7.0 -> 9.0.0-preview.7.24406.2
* Microsoft.AspNetCore.SignalR.Common 7.0 -> 9.0.0-preview.7.24406.2
* Microsoft.AspNetCore.SignalR.Protocols.Json 7.0 -> 9.0.0-preview.7.24406.2
* Microsoft.Extensions.DependencyInjection 8.0 -> 9.0.0-preview.7.24405.7
* Microsoft.Extensions.DependencyInjection.Abstractions 8.0.1 -> 9.0.0-preview.7.24405.7
* Microsoft.Extensions.Features 7.0 -> 9.0.0-preview.7.24406.2
* Microsoft.Extensions.Logging 8.0 -> 9.0.0-preview.7.24405.7
* Microsoft.Extensions.Logging.Abstractions 8.0.1 -> 9.0.0-preview.7.24405.7
* Microsoft.Extensions.Options 8.0.2 -> 9.0.0-preview.7.24405.7
* Microsoft.Extensions.Primitives 8.0 -> 9.0.0-preview.7.24405.7
* System.CodeDom 8.0 -> 9.0.0-preview.7.24405.7
* System.Management 7.0 -> 9.0.0-preview.7.24405.7
* System.Threading.Channels 8.0 -> 9.0.0-preview.7.24405.7
Total time taken: 5 seconds
CheckToml / toml: /home/runner/work/polyglot/polyglot/workspace/Cargo.toml
chat_contract_tests
================
Name Project Compat Latest Kind Platform
---- ------- ------ ------ ---- --------
ahash 0.7.8 0.8.11 --- Normal ---
ahash 0.8.11 --- 0.7.8 Normal ---
autocfg 1.3.0 Removed --- Build ---
bumpalo 3.16.0 Removed --- Normal ---
byteorder 1.5.0 --- Removed Normal ---
cfg-if 1.0.0 --- Removed Normal ---
cfg-if 1.0.0 Removed --- Normal ---
equivalent 1.0.1 --- Removed Normal ---
getrandom 0.2.15 Removed --- Normal cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi"))
hashbrown 0.12.3 0.14.5 --- Normal ---
hashbrown 0.14.5 --- 0.12.3 Normal ---
indexmap 1.9.3 2.4.0 --- Normal ---
indexmap 2.4.0 --- 1.9.3 Normal ---
js-sys 0.3.70 Removed --- Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
libc 0.2.158 Removed --- Normal cfg(unix)
log 0.4.22 Removed --- Normal ---
near-sandbox-utils 0.9.0 0.8.0 0.8.0 Normal ---
once_cell 1.19.0 Removed --- Normal ---
proc-macro2 1.0.86 --- Removed Normal ---
proc-macro2 1.0.86 Removed --- Normal ---
quote 1.0.37 --- Removed Normal ---
quote 1.0.37 Removed --- Normal ---
serde 1.0.209 --- Removed Normal ---
serde_derive 1.0.209 --- Removed Normal ---
syn 2.0.76 --- Removed Normal ---
syn 2.0.76 Removed --- Normal ---
unicode-ident 1.0.12 --- Removed Normal ---
unicode-ident 1.0.12 Removed --- Normal ---
wasi 0.11.0+wasi-snapshot-preview1 Removed --- Normal cfg(target_os = "wasi")
wasm-bindgen 0.2.93 Removed --- Normal ---
wasm-bindgen 0.2.93 Removed --- Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
wasm-bindgen-backend 0.2.93 Removed --- Normal ---
wasm-bindgen-macro 0.2.93 Removed --- Normal ---
wasm-bindgen-macro-support 0.2.93 Removed --- Normal ---
wasm-bindgen-shared 0.2.93 Removed --- Normal ---
zerocopy 0.7.35 --- Removed Normal ---
zerocopy-derive 0.7.35 --- Removed Normal ---
spiral_wasm
================
Name Project Compat Latest Kind Platform
---- ------- ------ ------ ---- --------
ahash 0.7.8 0.8.11 --- Normal ---
ahash 0.8.11 --- 0.7.8 Normal ---
autocfg 1.3.0 Removed --- Build ---
bumpalo 3.16.0 Removed --- Normal ---
byteorder 1.5.0 --- Removed Normal ---
cfg-if 1.0.0 --- Removed Normal ---
cfg-if 1.0.0 Removed --- Normal ---
equivalent 1.0.1 --- Removed Normal ---
getrandom 0.2.15 Removed --- Normal cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi"))
hashbrown 0.12.3 0.14.5 --- Normal ---
hashbrown 0.14.5 --- 0.12.3 Normal ---
indexmap 1.9.3 2.4.0 --- Normal ---
indexmap 2.4.0 --- 1.9.3 Normal ---
js-sys 0.3.70 Removed --- Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
libc 0.2.158 Removed --- Normal cfg(unix)
log 0.4.22 Removed --- Normal ---
near-sandbox-utils 0.9.0 0.8.0 0.8.0 Normal ---
once_cell 1.19.0 Removed --- Normal ---
proc-macro2 1.0.86 --- Removed Normal ---
proc-macro2 1.0.86 Removed --- Normal ---
quote 1.0.37 --- Removed Normal ---
quote 1.0.37 Removed --- Normal ---
serde 1.0.209 --- Removed Normal ---
serde_derive 1.0.209 --- Removed Normal ---
syn 2.0.76 --- Removed Normal ---
syn 2.0.76 Removed --- Normal ---
unicode-ident 1.0.12 --- Removed Normal ---
unicode-ident 1.0.12 Removed --- Normal ---
wasi 0.11.0+wasi-snapshot-preview1 Removed --- Normal cfg(target_os = "wasi")
wasm-bindgen 0.2.93 Removed --- Normal ---
wasm-bindgen 0.2.93 Removed --- Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
wasm-bindgen-backend 0.2.93 Removed --- Normal ---
wasm-bindgen-macro 0.2.93 Removed --- Normal ---
wasm-bindgen-macro-support 0.2.93 Removed --- Normal ---
wasm-bindgen-shared 0.2.93 Removed --- Normal ---
zerocopy 0.7.35 --- Removed Normal ---
zerocopy-derive 0.7.35 --- Removed Normal ---
CheckToml / toml: /home/runner/work/polyglot/polyglot/apps/chat/contract/Cargo.toml
Name Project Compat Latest Kind Platform
---- ------- ------ ------ ---- --------
borsh-derive->syn 2.0.76 2.0.77 2.0.77 Normal ---
darling_core->syn 2.0.76 2.0.77 2.0.77 Normal ---
darling_macro->syn 2.0.76 2.0.77 2.0.77 Normal ---
futures-macro->syn 2.0.76 2.0.77 2.0.77 Normal ---
iana-time-zone-haiku->cc 1.1.15 1.1.16 1.1.16 Build ---
near-sdk->serde_json 1.0.127 1.0.128 1.0.128 Normal ---
near-sdk-macros->serde_json 1.0.127 1.0.128 1.0.128 Normal ---
near-sdk-macros->syn 2.0.76 2.0.77 2.0.77 Normal ---
serde_derive->syn 2.0.76 2.0.77 2.0.77 Normal ---
sha2->cpufeatures 0.2.13 0.2.14 0.2.14 Normal cfg(any(target_arch = "aarch64", target_arch = "x86_64", target_arch = "x86"))
strum_macros->syn 2.0.76 2.0.77 2.0.77 Normal ---
syn_derive->syn 2.0.76 2.0.77 2.0.77 Normal ---
toml_edit->indexmap 2.4.0 2.5.0 2.5.0 Normal ---
wasm-bindgen-backend->syn 2.0.76 2.0.77 2.0.77 Normal ---
wasm-bindgen-macro-support->syn 2.0.76 2.0.77 2.0.77 Normal ---
zerocopy-derive->syn 2.0.76 2.0.77 2.0.77 Normal ---
CheckToml / toml: /home/runner/work/polyglot/polyglot/apps/chat/contract/tests/Cargo.toml
Name Project Compat Latest Kind Platform
---- ------- ------ ------ ---- --------
actix->tokio-util 0.7.11 0.7.12 0.7.12 Normal ---
actix-macros->syn 2.0.76 2.0.77 2.0.77 Normal ---
actix_derive->syn 2.0.76 2.0.77 2.0.77 Normal ---
aes->cpufeatures 0.2.13 0.2.14 0.2.14 Normal cfg(any(target_arch = "aarch64", target_arch = "x86_64", target_arch = "x86"))
ahash->cfg-if 1.0.0 Removed --- Normal ---
ahash->getrandom 0.2.15 --- Removed Normal cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi"))
ahash->zerocopy 0.7.35 Removed --- Normal ---
android_system_properties->libc 0.2.158 Removed --- Normal ---
async-io->rustix 0.38.35 0.38.36 0.38.36 Normal ---
async-process->rustix 0.38.35 0.38.36 0.38.36 Normal cfg(unix)
async-recursion->syn 2.0.76 2.0.77 2.0.77 Normal ---
async-signal->rustix 0.38.35 0.38.36 0.38.36 Normal cfg(unix)
async-stream-impl->syn 2.0.76 2.0.77 2.0.77 Normal ---
async-trait->syn 2.0.76 2.0.77 2.0.77 Normal ---
axum->async-trait 0.1.81 0.1.82 0.1.82 Normal ---
axum-core->async-trait 0.1.81 0.1.82 0.1.82 Normal ---
backtrace->cc 1.1.15 1.1.16 1.1.16 Build ---
borsh-derive->syn 2.0.76 2.0.77 2.0.77 Normal ---
bzip2-sys->cc 1.1.15 1.1.16 1.1.16 Build ---
cargo-near->clap 4.5.16 4.5.17 4.5.17 Normal ---
cargo-near->serde_json 1.0.127 1.0.128 1.0.128 Normal ---
cargo_metadata->serde_json 1.0.127 1.0.128 1.0.128 Normal ---
cc->jobserver 0.1.32 Removed --- Normal ---
cc->libc 0.2.158 Removed --- Normal cfg(unix)
cc->shlex 1.3.0 Removed --- Normal ---
chrono->android-tzdata 0.1.1 Removed --- Normal cfg(target_os = "android")
chrono->iana-time-zone 0.1.60 Removed --- Normal cfg(unix)
chrono->js-sys 0.3.70 Removed --- Normal cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
chrono->num-traits 0.2.19 Removed --- Normal ---
chrono->serde 1.0.209 Removed --- Normal ---
chrono->wasm-bindgen 0.2.93 Removed --- Normal cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
chrono->windows-targets 0.52.6 Removed --- Normal cfg(windows)
clap->clap_builder 4.5.15 4.5.17 4.5.17 Normal ---
clap_derive->syn 2.0.76 2.0.77 2.0.77 Normal ---
curve25519-dalek->cpufeatures 0.2.13 0.2.14 0.2.14 Normal cfg(target_arch = "x86_64")
curve25519-dalek-derive->syn 2.0.76 2.0.77 2.0.77 Normal ---
darling_core->syn 2.0.76 2.0.77 2.0.77 Normal ---
darling_macro->syn 2.0.76 2.0.77 2.0.77 Normal ---
derive_arbitrary->syn 2.0.76 2.0.77 2.0.77 Normal ---
derive_more->syn 2.0.76 2.0.77 2.0.77 Normal ---
enum-map-derive->syn 2.0.76 2.0.77 2.0.77 Normal ---
enumflags2_derive->syn 2.0.76 2.0.77 2.0.77 Normal ---
futures-macro->syn 2.0.76 2.0.77 2.0.77 Normal ---
getrandom->cfg-if 1.0.0 --- Removed Normal ---
getrandom->js-sys 0.3.70 --- Removed Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
getrandom->libc 0.2.158 --- Removed Normal cfg(unix)
getrandom->wasi 0.11.0+wasi-snapshot-preview1 --- Removed Normal cfg(target_os = "wasi")
getrandom->wasm-bindgen 0.2.93 --- Removed Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
h2->indexmap 2.4.0 2.5.0 2.5.0 Normal ---
h2->tokio-util 0.7.11 0.7.12 0.7.12 Normal ---
hashbrown->ahash 0.7.8 --- 0.8.11 Normal ---
hashbrown->ahash 0.8.11 0.7.8 --- Normal ---
hashbrown->serde 1.0.209 Removed --- Normal ---
iana-time-zone->android_system_properties 0.1.5 Removed --- Normal cfg(target_os = "android")
iana-time-zone->core-foundation-sys 0.8.7 Removed --- Normal cfg(any(target_os = "macos", target_os = "ios"))
iana-time-zone->iana-time-zone-haiku 0.1.2 Removed --- Normal cfg(target_os = "haiku")
iana-time-zone->js-sys 0.3.70 Removed --- Normal cfg(target_arch = "wasm32")
iana-time-zone->wasm-bindgen 0.2.93 Removed --- Normal cfg(target_arch = "wasm32")
iana-time-zone->windows-core 0.52.0 Removed --- Normal cfg(target_os = "windows")
iana-time-zone-haiku->cc 1.1.15 1.1.16 1.1.16 Build ---
iana-time-zone-haiku->cc 1.1.15 Removed 1.1.16 Build ---
indexmap->autocfg 1.3.0 --- Removed Build ---
indexmap->equivalent 1.0.1 Removed --- Normal ---
indexmap->hashbrown 0.12.3 --- 0.14.5 Normal ---
indexmap->hashbrown 0.14.5 0.12.3 --- Normal ---
jobserver->libc 0.2.158 Removed --- Normal cfg(unix)
js-sys->wasm-bindgen 0.2.93 --- Removed Normal ---
js-sys->wasm-bindgen 0.2.93 Removed --- Normal ---
json-patch->serde_json 1.0.127 1.0.128 1.0.128 Normal ---
jsonptr->serde_json 1.0.127 1.0.128 1.0.128 Normal ---
keccak->cpufeatures 0.2.13 0.2.14 0.2.14 Normal cfg(target_arch = "aarch64")
near-abi-client-impl->serde_json 1.0.127 1.0.128 1.0.128 Normal ---
near-async->serde_json 1.0.127 1.0.128 1.0.128 Normal ---
near-async-derive->syn 2.0.76 2.0.77 2.0.77 Normal ---
near-chain-configs->serde_json 1.0.127 1.0.128 1.0.128 Normal ---
near-cli-rs->clap 4.5.16 4.5.17 4.5.17 Normal ---
near-cli-rs->serde_json 1.0.127 1.0.128 1.0.128 Normal ---
near-crypto->serde_json 1.0.127 1.0.128 1.0.128 Normal ---
near-jsonrpc-client->serde_json 1.0.127 1.0.128 1.0.128 Normal ---
near-jsonrpc-primitives->serde_json 1.0.127 1.0.128 1.0.128 Normal ---
near-o11y->clap 4.5.16 4.5.17 4.5.17 Normal ---
near-o11y->serde_json 1.0.127 1.0.128 1.0.128 Normal ---
near-performance-metrics->tokio-util 0.7.11 0.7.12 0.7.12 Normal ---
near-primitives->serde_json 1.0.127 1.0.128 1.0.128 Normal ---
near-rpc-error-core->syn 2.0.76 2.0.77 2.0.77 Normal ---
near-rpc-error-macro->syn 2.0.76 2.0.77 2.0.77 Normal ---
near-sandbox-utils 0.10.1 0.10.0 0.10.0 Normal ---
near-sandbox-utils->chrono 0.4.38 Removed --- Normal ---
near-sdk->serde_json 1.0.127 1.0.128 1.0.128 Normal ---
near-sdk-macros->serde_json 1.0.127 1.0.128 1.0.128 Normal ---
near-sdk-macros->syn 2.0.76 2.0.77 2.0.77 Normal ---
near-socialdb-client->serde_json 1.0.127 1.0.128 1.0.128 Normal ---
near-workspaces->async-trait 0.1.81 0.1.82 0.1.82 Normal ---
near-workspaces->near-sandbox-utils 0.8.0 0.9.0 --- Build ---
near-workspaces->near-sandbox-utils 0.9.0 --- 0.8.0 Normal ---
near-workspaces->serde_json 1.0.127 1.0.128 1.0.128 Normal ---
near_schemafy_core->serde_json 1.0.127 1.0.128 1.0.128 Normal ---
near_schemafy_lib->serde_json 1.0.127 1.0.128 1.0.128 Normal ---
num-traits->autocfg 1.3.0 Removed --- Build ---
num-traits->libm 0.2.8 Removed --- Normal ---
openssl-macros->syn 2.0.76 2.0.77 2.0.77 Normal ---
openssl-src->cc 1.1.15 1.1.16 1.1.16 Normal ---
openssl-sys->cc 1.1.15 1.1.16 1.1.16 Build ---
openssl-sys->openssl-src 300.3.1+3.3.1 300.3.2+3.3.2 300.3.2+3.3.2 Build ---
opentelemetry-otlp->async-trait 0.1.81 0.1.82 0.1.82 Normal ---
opentelemetry_sdk->async-trait 0.1.81 0.1.82 0.1.82 Normal ---
opentelemetry_sdk->tokio-stream 0.1.15 0.1.16 0.1.16 Normal ---
pin-project-internal->syn 2.0.76 2.0.77 2.0.77 Normal ---
polling->rustix 0.38.35 0.38.36 0.38.36 Normal cfg(any(unix, target_os = "fuchsia", target_os = "vxworks"))
proc-macro2->unicode-ident 1.0.12 --- Removed Normal ---
proc-macro2->unicode-ident 1.0.12 Removed --- Normal ---
prost-derive->syn 2.0.76 2.0.77 2.0.77 Normal ---
quote->proc-macro2 1.0.86 --- Removed Normal ---
quote->proc-macro2 1.0.86 Removed --- Normal ---
reqwest->hyper-rustls 0.27.2 0.27.3 0.27.3 Normal cfg(not(target_arch = "wasm32"))
reqwest->serde_json 1.0.127 1.0.128 1.0.128 Normal ---
ring->cc 1.1.15 1.1.16 1.1.16 Build ---
rust_decimal->serde_json 1.0.127 1.0.128 1.0.128 Normal ---
schemars->serde_json 1.0.127 1.0.128 1.0.128 Normal ---
schemars_derive->syn 2.0.76 2.0.77 2.0.77 Normal ---
scroll_derive->syn 2.0.76 2.0.77 2.0.77 Normal ---
secp256k1-sys->cc 1.1.15 1.1.16 1.1.16 Build ---
serde->serde_derive 1.0.209 Removed --- Normal ---
serde_derive->proc-macro2 1.0.86 Removed --- Normal ---
serde_derive->quote 1.0.37 Removed --- Normal ---
serde_derive->syn 2.0.76 2.0.77 2.0.77 Normal ---
serde_derive->syn 2.0.76 Removed 2.0.77 Normal ---
serde_derive_internals->syn 2.0.76 2.0.77 2.0.77 Normal ---
serde_json 1.0.127 1.0.128 1.0.128 Normal ---
serde_repr->syn 2.0.76 2.0.77 2.0.77 Normal ---
serde_with->indexmap 1.9.3 --- 2.5.0 Normal ---
serde_with->indexmap 2.4.0 1.9.3 2.5.0 Normal ---
serde_with->serde_json 1.0.127 1.0.128 1.0.128 Normal ---
serde_with_macros->syn 2.0.76 2.0.77 2.0.77 Normal ---
serde_yaml->indexmap 2.4.0 2.5.0 2.5.0 Normal ---
sha1->cpufeatures 0.2.13 0.2.14 0.2.14 Normal cfg(any(target_arch = "aarch64", target_arch = "x86", target_arch = "x86_64"))
sha2->cpufeatures 0.2.13 0.2.14 0.2.14 Normal cfg(any(target_arch = "aarch64", target_arch = "x86_64", target_arch = "x86"))
smart-default->syn 2.0.76 2.0.77 2.0.77 Normal ---
strum_macros->syn 2.0.76 2.0.77 2.0.77 Normal ---
symbolic-debuginfo->serde_json 1.0.127 1.0.128 1.0.128 Normal ---
syn->proc-macro2 1.0.86 --- Removed Normal ---
syn->proc-macro2 1.0.86 Removed --- Normal ---
syn->quote 1.0.37 --- Removed Normal ---
syn->quote 1.0.37 Removed --- Normal ---
syn->unicode-ident 1.0.12 --- Removed Normal ---
syn->unicode-ident 1.0.12 Removed --- Normal ---
syn_derive->syn 2.0.76 2.0.77 2.0.77 Normal ---
tempfile->rustix 0.38.35 0.38.36 0.38.36 Normal cfg(any(unix, target_os = "wasi"))
thiserror-impl->syn 2.0.76 2.0.77 2.0.77 Normal ---
tokio-macros->syn 2.0.76 2.0.77 2.0.77 Normal ---
toml_edit->indexmap 2.4.0 2.5.0 2.5.0 Normal ---
tonic->async-trait 0.1.81 0.1.82 0.1.82 Normal ---
tonic->tokio-stream 0.1.15 0.1.16 0.1.16 Normal ---
tower->tokio-util 0.7.11 0.7.12 0.7.12 Normal ---
tracing-attributes->syn 2.0.76 2.0.77 2.0.77 Normal ---
ureq->webpki-roots 0.26.3 0.26.5 0.26.5 Normal ---
wasm-bindgen->cfg-if 1.0.0 --- Removed Normal ---
wasm-bindgen->cfg-if 1.0.0 Removed --- Normal ---
wasm-bindgen->once_cell 1.19.0 --- Removed Normal ---
wasm-bindgen->once_cell 1.19.0 Removed --- Normal ---
wasm-bindgen->wasm-bindgen-macro 0.2.93 --- Removed Normal ---
wasm-bindgen->wasm-bindgen-macro 0.2.93 Removed --- Normal ---
wasm-bindgen-backend->bumpalo 3.16.0 --- Removed Normal ---
wasm-bindgen-backend->bumpalo 3.16.0 Removed --- Normal ---
wasm-bindgen-backend->log 0.4.22 --- Removed Normal ---
wasm-bindgen-backend->log 0.4.22 Removed --- Normal ---
wasm-bindgen-backend->once_cell 1.19.0 --- Removed Normal ---
wasm-bindgen-backend->once_cell 1.19.0 Removed --- Normal ---
wasm-bindgen-backend->proc-macro2 1.0.86 --- Removed Normal ---
wasm-bindgen-backend->proc-macro2 1.0.86 Removed --- Normal ---
wasm-bindgen-backend->quote 1.0.37 --- Removed Normal ---
wasm-bindgen-backend->quote 1.0.37 Removed --- Normal ---
wasm-bindgen-backend->syn 2.0.76 2.0.77 2.0.77 Normal ---
wasm-bindgen-backend->syn 2.0.76 2.0.77 Removed Normal ---
wasm-bindgen-backend->syn 2.0.76 Removed 2.0.77 Normal ---
wasm-bindgen-backend->wasm-bindgen-shared 0.2.93 --- Removed Normal ---
wasm-bindgen-backend->wasm-bindgen-shared 0.2.93 Removed --- Normal ---
wasm-bindgen-macro->quote 1.0.37 --- Removed Normal ---
wasm-bindgen-macro->quote 1.0.37 Removed --- Normal ---
wasm-bindgen-macro->wasm-bindgen-macro-support 0.2.93 --- Removed Normal ---
wasm-bindgen-macro->wasm-bindgen-macro-support 0.2.93 Removed --- Normal ---
wasm-bindgen-macro-support->proc-macro2 1.0.86 --- Removed Normal ---
wasm-bindgen-macro-support->proc-macro2 1.0.86 Removed --- Normal ---
wasm-bindgen-macro-support->quote 1.0.37 --- Removed Normal ---
wasm-bindgen-macro-support->quote 1.0.37 Removed --- Normal ---
wasm-bindgen-macro-support->syn 2.0.76 2.0.77 2.0.77 Normal ---
wasm-bindgen-macro-support->syn 2.0.76 2.0.77 Removed Normal ---
wasm-bindgen-macro-support->syn 2.0.76 Removed 2.0.77 Normal ---
wasm-bindgen-macro-support->wasm-bindgen-backend 0.2.93 --- Removed Normal ---
wasm-bindgen-macro-support->wasm-bindgen-backend 0.2.93 Removed --- Normal ---
wasm-bindgen-macro-support->wasm-bindgen-shared 0.2.93 --- Removed Normal ---
wasm-bindgen-macro-support->wasm-bindgen-shared 0.2.93 Removed --- Normal ---
wasmparser->indexmap 2.4.0 2.5.0 2.5.0 Normal ---
windows-core->windows-targets 0.52.6 Removed --- Normal ---
windows-targets->windows_aarch64_gnullvm 0.52.6 Removed --- Normal aarch64-pc-windows-gnullvm
windows-targets->windows_aarch64_msvc 0.52.6 Removed --- Normal cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib)))
windows-targets->windows_i686_gnu 0.52.6 Removed --- Normal cfg(all(target_arch = "x86", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows-targets->windows_i686_gnullvm 0.52.6 Removed --- Normal i686-pc-windows-gnullvm
windows-targets->windows_i686_msvc 0.52.6 Removed --- Normal cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib)))
windows-targets->windows_x86_64_gnu 0.52.6 Removed --- Normal cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows-targets->windows_x86_64_gnullvm 0.52.6 Removed --- Normal x86_64-pc-windows-gnullvm
windows-targets->windows_x86_64_msvc 0.52.6 Removed --- Normal cfg(all(any(target_arch = "x86_64", target_arch = "arm64ec"), target_env = "msvc", not(windows_raw_dylib)))
xattr->rustix 0.38.35 0.38.36 0.38.36 Normal ---
zbus->async-trait 0.1.81 0.1.82 0.1.82 Normal ---
zerocopy->byteorder 1.5.0 Removed --- Normal ---
zerocopy->zerocopy-derive 0.7.35 Removed --- Normal ---
zerocopy-derive->proc-macro2 1.0.86 Removed --- Normal ---
zerocopy-derive->quote 1.0.37 Removed --- Normal ---
zerocopy-derive->syn 2.0.76 2.0.77 2.0.77 Normal ---
zerocopy-derive->syn 2.0.76 Removed 2.0.77 Normal ---
zstd-sys->cc 1.1.15 1.1.16 1.1.16 Build ---
CheckToml / toml: /home/runner/work/polyglot/polyglot/apps/plot/Cargo.toml
Name Project Compat Latest Kind Platform
---- ------- ------ ------ ---- --------
futures-macro->syn 2.0.76 2.0.77 2.0.77 Normal ---
iana-time-zone-haiku->cc 1.1.15 1.1.16 1.1.16 Build ---
serde_derive->syn 2.0.76 2.0.77 2.0.77 Normal ---
serde_json 1.0.127 1.0.128 1.0.128 Normal ---
sha2->cpufeatures 0.2.13 0.2.14 0.2.14 Normal cfg(any(target_arch = "aarch64", target_arch = "x86_64", target_arch = "x86"))
wasm-bindgen-backend->syn 2.0.76 2.0.77 2.0.77 Normal ---
wasm-bindgen-macro-support->syn 2.0.76 2.0.77 2.0.77 Normal ---
CheckJson / json: /home/runner/work/polyglot/polyglot
$ npm-check-updates --target greatest
Using bun
Checking /home/runner/work/polyglot/polyglot/package.json
@types/node ~20.12 → ~22.5
npm-check-updates ~17.0.0-5 → ~17.1.1
Run ncu --target greatest -u to upgrade package.json
CheckJson / json: /home/runner/work/polyglot/polyglot/apps/ipfs
$ npm-check-updates --target greatest
Using bun
Checking /home/runner/work/polyglot/polyglot/apps/ipfs/package.json
@types/node ~20.12 → ~22.5
nft.storage ~7.1 → ~7.2
npm-check-updates ~17.0.0-5 → ~17.1.1
Run ncu --target greatest -u to upgrade package.json
CheckJson / json: /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension
$ npm-check-updates --target greatest
Using bun
Checking /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/package.json
@playwright/test 1.44.0 → 1.48.0-alpha-2024-09-06
@types/chrome ~0.0.268 → ~0.0.270
npm-check-updates ~17.0.0-5 → ~17.1.1
Run ncu --target greatest -u to upgrade package.json
CheckJson / json: /home/runner/work/polyglot/polyglot/apps/spiral/vscode
$ npm-check-updates --target greatest
Using bun
Checking /home/runner/work/polyglot/polyglot/apps/spiral/vscode/package.json
@types/node ~20.12 → ~22.5
@types/vscode ~1.89 → ~1.93
@vscode/vsce ~2.26 → ~3.1
npm-check-updates ~17.0.0-5 → ~17.1.1
Run ncu --target greatest -u to upgrade package.json
CheckJson / json: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/VS Code Plugin
$ npm-check-updates --target greatest
Checking /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/VS Code Plugin/package.json
@microsoft/signalr ^8.0.0 → ^8.0.7
@types/node ~20.14 → ~22.5
@types/vscode ~1.81 → ~1.93
@vscode/vsce ~2.30 → ~3.1
esbuild ~0.21 → ~0.23
npm-check-updates ~17.0.0-5 → ~17.1.1
Run ncu --target greatest -u to upgrade package.json